Форум сайта python.su
Как получить информацию о сети (ip,маску,состояние адаптера) в python с помощью socket или нужна другая либа?
Желательно, чтобы работало на Windows, GNU/Linux.
Офлайн
Печаль… ололо
Офлайн
Через 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
Офлайн
А ты смотрю можешь только языком трепать, вот смотри код:
import socket
addrs = socket.getaddrinfo(socket.gethostname(), None)
for addr in addrs:
print addr
(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))
(2, 0, 0, '', ('192.168.56.101', 0))
(2, 0, 0, '', ('10.0.2.15', 0))
Офлайн
AUXЭх, ваши бы слова да богу в уши! Трепал бы он побольше, особенно про постановку процесса разработки.
А ты смотрю можешь только языком трепать
Офлайн
Открыл для себя вот это : http://pypi.python.org/pypi/netifaces
Завтра на маздае проверю, тогда отпишусь!
Офлайн
AUX, полегче на поворотах - может и занести ненароком.
Теперь по делу.
Для меня сетевой интерфейс - это его имя, адрес, маска, шлюз и еще много разных параметров.
Получить это через socket невозможно.
Вы же увидели список адресов, через которые можете открыть соединения куда-нибудь (параметры для bind). Согласитесь, разные вещи.
netifaces, судя по всему - то что доктор прописал. Не знал о ней…
Отредактировано (Окт. 14, 2010 01:23:36)
Офлайн
Андрей СветловЭто я знаю, просто решил не создавать новую тему, чтобы не засорять раздел. Просто мне на первой нужно было узнать ip адреса моего компьютера и я решил написать хитрую реализацию через getaddrinfo, в маздае меня всё устроило, но а в линуксе не прокатило, так, что изменяюсь что ввёл в заблуждение.
AUX, полегче на поворотах - может и занести ненароком.
Теперь по делу.
Для меня сетевой интерфейс - это его имя, адрес, маска, шлюз и еще много разных параметров.
Получить это через socket невозможно.
Андрей СветловСогласен, но как я уже выше писал, меня это устраивало, но в Linux это не заработало :(
AUX, полегче на поворотах - может и занести ненароком.
Вы же увидели список адресов, через которые можете открыть соединения куда-нибудь (параметры для bind). Согласитесь, разные вещи.
Офлайн
А ты смотрю можешь только языком трепать, вот смотри код:Андрей Светлов изменяюсь за это выражение, я просто его не заметил ибо скопипастил свои пост с ЛОРа.
Офлайн
А если открыть TCP сокет куда-нибудь на google.com:80 и спросить у него gethostname()?
Офлайн