Форум сайта python.su
Здравствуйте все, многоуважаемые питонеры!
Хочу сделать такую утилитку, которая подключалась бы к FTP-серверу, производила бы файловый обмен и, самое главное, информировала бы о невозможности выполнения из-за чегой-то там.
Одним из путей алгоритма решения задачи, прежде всего, я наметил определить сетевые интерфейсы (если более одного), установленные на имеющемся компьютере и доступные для ОС, из них, - определить какие активные и неактивные (“неактивные” - значит выдернут сетевой кабель или не включен интерфейс пользователем, ОС - WinXP, например), чтобы проанализировать ситуацию.
Т.к. это первый учебно-боевой прожект много чего не знаю, и, первое, что приходит на ум - “ipconfig”. Но при задании os.system('ipconfig') - информация о состоянии - фр-р-р!, - пролетела мимо. Можно ли её как-то “изловить” в переменную, раз. Второе - есть ли иные пути, “питонские”, для этого?
Копаясь в недрах, нашел такой самородок: “> Python для экспертов > Как перехватить сообщения операционной системы?” Долго вчитывался, наверное не то?… “Python v3.2.2 documentation” - в большинстве случаев - шпаргалка для матёрых питонеров, но не для начинающих настольная книга.
Вот!
Спасибо всем, кто откликнется и простите за хлопоты.
Отредактировано (Окт. 18, 2011 14:50:59)
Офлайн
Если тупо то так:
os.system("ipconfig >you_some_unic_file_name")
with open("you_some_unic_file_name","rt") as f:
s=f.read()
Офлайн
Лучше через subprocess.check_output, например: http://docs.python.org/library/subprocess.html
Офлайн
Почему “тупо”, не согласен! - всякий алгоритм имеет и недостатки и достоинства?! Спасибо! Положу в копилку как третий вариант решения, к этому времени я уже отыскал кое-что! Задачку можно решить тремя (уже) алгоритмами. Первый - описан уважаемым “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. Кто-что знает - подскажите, пожалуйста!
Отредактировано (Окт. 18, 2011 14:57:14)
Офлайн
…Пока писал, получил еще один ответ от “Ed'a”, в каком направлении двигаться. Отлично! Этим и займусь. Спасибо!
Отредактировано (Окт. 18, 2011 14:54:59)
Офлайн
Gregorhttp://docs.python.org/library/subprocess.html
Хорошо бы теорию найти на эту тему “subprocess” с точки зрения Python.
Deprecated since version 2.6: This function is obsolete. Use the subprocess module. Check especially the Replacing Older Functions with the subprocess Module section.
Отредактировано (Окт. 18, 2011 22:57:03)
Офлайн
а не сделать ли всё проще?
from urllib2 import urlopen
def isonline(reliableserver='http://www.google.com'):
try:
urlopen(reliableserver)
return True
except IOError:
return False
Офлайн
для работы с ftp больше подходит http://docs.python.org/library/ftplib.html
Офлайн