Найти - Пользователи
Полная версия: информацию о сети
Начало » Network » информацию о сети
1
AUX
Как получить информацию о сети (ip,маску,состояние адаптера) в python с помощью socket или нужна другая либа?
Желательно, чтобы работало на Windows, GNU/Linux.
AUX
Печаль… ололо
Андрей Светлов
Через 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
AUX
А ты смотрю можешь только языком трепать, вот смотри код:

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)
PooH
AUX
А ты смотрю можешь только языком трепать
Эх, ваши бы слова да богу в уши! Трепал бы он побольше, особенно про постановку процесса разработки.
AUX
Открыл для себя вот это : http://pypi.python.org/pypi/netifaces
Завтра на маздае проверю, тогда отпишусь!
Андрей Светлов
AUX, полегче на поворотах - может и занести ненароком.

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

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

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

Теперь по делу.
Для меня сетевой интерфейс - это его имя, адрес, маска, шлюз и еще много разных параметров.
Получить это через socket невозможно.
Это я знаю, просто решил не создавать новую тему, чтобы не засорять раздел. Просто мне на первой нужно было узнать ip адреса моего компьютера и я решил написать хитрую реализацию через getaddrinfo, в маздае меня всё устроило, но а в линуксе не прокатило, так, что изменяюсь что ввёл в заблуждение.
Андрей Светлов
AUX, полегче на поворотах - может и занести ненароком.
Вы же увидели список адресов, через которые можете открыть соединения куда-нибудь (параметры для bind). Согласитесь, разные вещи.
Согласен, но как я уже выше писал, меня это устраивало, но в Linux это не заработало :(
AUX
А ты смотрю можешь только языком трепать, вот смотри код:
Андрей Светлов изменяюсь за это выражение, я просто его не заметил ибо скопипастил свои пост с ЛОРа.
Ещё раз прошу извинения, дяденька прости засранца :)
Андрей Светлов
А если открыть TCP сокет куда-нибудь на google.com:80 и спросить у него gethostname()?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB