Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 17, 2011 23:36:16

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

Здравствуйте все, многоуважаемые питонеры!
Хочу сделать такую утилитку, которая подключалась бы к FTP-серверу, производила бы файловый обмен и, самое главное, информировала бы о невозможности выполнения из-за чегой-то там.
Одним из путей алгоритма решения задачи, прежде всего, я наметил определить сетевые интерфейсы (если более одного), установленные на имеющемся компьютере и доступные для ОС, из них, - определить какие активные и неактивные (“неактивные” - значит выдернут сетевой кабель или не включен интерфейс пользователем, ОС - WinXP, например), чтобы проанализировать ситуацию.
Т.к. это первый учебно-боевой прожект много чего не знаю, и, первое, что приходит на ум - “ipconfig”. Но при задании os.system('ipconfig') - информация о состоянии - фр-р-р!, - пролетела мимо. Можно ли её как-то “изловить” в переменную, раз. Второе - есть ли иные пути, “питонские”, для этого?
Копаясь в недрах, нашел такой самородок: “> Python для экспертов > Как перехватить сообщения операционной системы?” Долго вчитывался, наверное не то?… “Python v3.2.2 documentation” - в большинстве случаев - шпаргалка для матёрых питонеров, но не для начинающих настольная книга.
Вот!
Спасибо всем, кто откликнется и простите за хлопоты.



Отредактировано (Окт. 18, 2011 14:50:59)

Офлайн

#2 Окт. 18, 2011 11:08:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

Если тупо то так:

os.system("ipconfig >you_some_unic_file_name")
with open("you_some_unic_file_name","rt") as f:
s=f.read()



Офлайн

#3 Окт. 18, 2011 14:47:05

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

Лучше через subprocess.check_output, например: http://docs.python.org/library/subprocess.html



Офлайн

#4 Окт. 18, 2011 14:49:23

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

Почему “тупо”, не согласен! - всякий алгоритм имеет и недостатки и достоинства?! Спасибо! Положу в копилку как третий вариант решения, к этому времени я уже отыскал кое-что! Задачку можно решить тремя (уже) алгоритмами. Первый - описан уважаемым “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)

Офлайн

#5 Окт. 18, 2011 14:53:34

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

…Пока писал, получил еще один ответ от “Ed'a”, в каком направлении двигаться. Отлично! Этим и займусь. Спасибо!



Отредактировано (Окт. 18, 2011 14:54:59)

Офлайн

#6 Окт. 18, 2011 18:10:02

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

Gregor
Хорошо бы теорию найти на эту тему “subprocess” с точки зрения Python.
http://docs.python.org/library/subprocess.html

не?

P.S.
os.popen
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)

Офлайн

#7 Окт. 18, 2011 19:22:02

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

а не сделать ли всё проще?

from urllib2 import urlopen
def isonline(reliableserver='http://www.google.com'):
try:
urlopen(reliableserver)
return True
except IOError:
return False

Офлайн

#8 Окт. 19, 2011 04:22:19

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

os.system('ipconfig') - как "отловить" результат???

для работы с ftp больше подходит http://docs.python.org/library/ftplib.html

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version