Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 6, 2010 14:22:46

AUX
От:
Зарегистрирован: 2010-02-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

информацию о сети

Как получить информацию о сети (ip,маску,состояние адаптера) в python с помощью socket или нужна другая либа?
Желательно, чтобы работало на Windows, GNU/Linux.



Офлайн

#2 Окт. 8, 2010 12:48:02

AUX
От:
Зарегистрирован: 2010-02-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

информацию о сети

Печаль… ололо



Офлайн

#3 Окт. 8, 2010 13:32:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

информацию о сети

Через socket - нельзя.
Может и есть какая либа… Мы делали через парсер вывода ifconfig.
Посмотрите, может что полезное подскажет гугл:
http://www.google.com.ua/#hl=ru&expIds=17259,25567,26792,27007,27015&xhr=t&q=python+network+interface+status&cp=31&pf=p&sclient=psy&site=&source=hp&aq=f&aqi=&aql=&oq=python+network+interface+status&gs_rfai=&pbx=1&fp=29419df09fa22aef



Офлайн

#4 Окт. 13, 2010 15:26:10

AUX
От:
Зарегистрирован: 2010-02-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

информацию о сети

А ты смотрю можешь только языком трепать, вот смотри код:

import socket


addrs = socket.getaddrinfo(socket.gethostname(), None)

for addr in addrs:

print addr
На выхлопе выводит такое под GNU/Linux:

(10, 1, 6, '', ('::1', 0, 0, 0))
(10, 2, 17, '', ('::1', 0, 0, 0))
(10, 3, 0, '', ('::1', 0, 0, 0))
(2, 1, 6, '', ('127.0.1.1', 0))
(2, 2, 17, '', ('127.0.1.1', 0))
(2, 3, 0, '', ('127.0.1.1', 0))
(2, 1, 6, '', ('192.168.27.128', 0))
(2, 2, 17, '', ('192.168.27.128', 0))
(2, 3, 0, '', ('192.168.27.128', 0))
На выхлопе выводит такое под Windows:

(2, 0, 0, '', ('192.168.56.101', 0))
(2, 0, 0, '', ('10.0.2.15', 0))
В маздае и линукс два сетевых адаптера, под виндой выхлоп корректный, а вот в линуксе определяется один eth1 ('192.168.27.128', 0))

ШИТО я не так делаю?

Кстати, если вытащить провод, в винде на выхлопе один (2, 0, 0, ‘', (’127.0.0.1', 0)) , а в линуксе не чего не изменяется :(
AUX (13.10.2010 16:22:22)



Офлайн

#5 Окт. 13, 2010 19:17:50

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

информацию о сети

AUX
А ты смотрю можешь только языком трепать
Эх, ваши бы слова да богу в уши! Трепал бы он побольше, особенно про постановку процесса разработки.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Окт. 13, 2010 23:57:40

AUX
От:
Зарегистрирован: 2010-02-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

информацию о сети

Открыл для себя вот это : http://pypi.python.org/pypi/netifaces
Завтра на маздае проверю, тогда отпишусь!



Офлайн

#7 Окт. 14, 2010 00:21:22

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

информацию о сети

AUX, полегче на поворотах - может и занести ненароком.

Теперь по делу.
Для меня сетевой интерфейс - это его имя, адрес, маска, шлюз и еще много разных параметров.
Получить это через socket невозможно.

Вы же увидели список адресов, через которые можете открыть соединения куда-нибудь (параметры для bind). Согласитесь, разные вещи.

netifaces, судя по всему - то что доктор прописал. Не знал о ней…



Отредактировано (Окт. 14, 2010 01:23:36)

Офлайн

#8 Окт. 14, 2010 07:18:26

AUX
От:
Зарегистрирован: 2010-02-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

информацию о сети

Андрей Светлов
AUX, полегче на поворотах - может и занести ненароком.

Теперь по делу.
Для меня сетевой интерфейс - это его имя, адрес, маска, шлюз и еще много разных параметров.
Получить это через socket невозможно.
Это я знаю, просто решил не создавать новую тему, чтобы не засорять раздел. Просто мне на первой нужно было узнать ip адреса моего компьютера и я решил написать хитрую реализацию через getaddrinfo, в маздае меня всё устроило, но а в линуксе не прокатило, так, что изменяюсь что ввёл в заблуждение.
Андрей Светлов
AUX, полегче на поворотах - может и занести ненароком.
Вы же увидели список адресов, через которые можете открыть соединения куда-нибудь (параметры для bind). Согласитесь, разные вещи.
Согласен, но как я уже выше писал, меня это устраивало, но в Linux это не заработало :(



Офлайн

#9 Окт. 14, 2010 07:26:16

AUX
От:
Зарегистрирован: 2010-02-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

информацию о сети

А ты смотрю можешь только языком трепать, вот смотри код:
Андрей Светлов изменяюсь за это выражение, я просто его не заметил ибо скопипастил свои пост с ЛОРа.
Ещё раз прошу извинения, дяденька прости засранца :)



Офлайн

#10 Окт. 14, 2010 08:46:27

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

информацию о сети

А если открыть TCP сокет куда-нибудь на google.com:80 и спросить у него gethostname()?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version