Gregor
Окт. 17, 2011 23:36:16
Здравствуйте все, многоуважаемые питонеры!
Хочу сделать такую утилитку, которая подключалась бы к FTP-серверу, производила бы файловый обмен и, самое главное, информировала бы о невозможности выполнения из-за чегой-то там.
Одним из путей алгоритма решения задачи, прежде всего, я наметил определить сетевые интерфейсы (если более одного), установленные на имеющемся компьютере и доступные для ОС, из них, - определить какие активные и неактивные (“неактивные” - значит выдернут сетевой кабель или не включен интерфейс пользователем, ОС - WinXP, например), чтобы проанализировать ситуацию.
Т.к. это первый учебно-боевой прожект много чего не знаю, и, первое, что приходит на ум - “ipconfig”. Но при задании os.system('ipconfig') - информация о состоянии - фр-р-р!, - пролетела мимо. Можно ли её как-то “изловить” в переменную, раз. Второе - есть ли иные пути, “питонские”, для этого?
Копаясь в недрах, нашел такой самородок: “> Python для экспертов > Как перехватить сообщения операционной системы?” Долго вчитывался, наверное не то?… “Python v3.2.2 documentation” - в большинстве случаев - шпаргалка для матёрых питонеров, но не для начинающих настольная книга.
Вот!
Спасибо всем, кто откликнется и простите за хлопоты.
Ed
Окт. 18, 2011 14:47:05
Лучше через subprocess.check_output, например:
http://docs.python.org/library/subprocess.html
Gregor
Окт. 18, 2011 14:49:23
Почему “тупо”, не согласен! - всякий алгоритм имеет и недостатки и достоинства?! Спасибо! Положу в копилку как третий вариант решения, к этому времени я уже отыскал кое-что! Задачку можно решить тремя (уже) алгоритмами. Первый - описан уважаемым “doza_and'ом”;
Второй алгоритм:
code
import os
result=os.popen('ipconfig')
for line in result.readlines():
print(line)
result.close()
#
http://www.daniweb.com/software-development/python/threads/40790/code
Третий третий:
code
import subprocess
pp = subprocess.Popen(“ipconfig”, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for ss in pp.stdout.readlines():
print(ss.decode(“cp1251”).strip())
#
http://otvety.google.ru/otvety/thread?tid=1a2ec5a2e7eb0dae/code
Во втором алгоритме предложение “result.close()” написано мной. Не знаю, но наверное это правильно. Хорошо бы теорию найти на эту тему “subprocess” с точки зрения Python. Кто-что знает - подскажите, пожалуйста!
Gregor
Окт. 18, 2011 14:53:34
…Пока писал, получил еще один ответ от “Ed'a”, в каком направлении двигаться. Отлично! Этим и займусь. Спасибо!
d1ffuz0r
Окт. 18, 2011 19:22:02
а не сделать ли всё проще?
from urllib2 import urlopen
def isonline(reliableserver='http://www.google.com'):
try:
urlopen(reliableserver)
return True
except IOError:
return False
sypper-pit
Окт. 19, 2011 04:22:19