Найти - Пользователи
Полная версия: os.system('ipconfig') - как "отловить" результат???
Начало » Python для новичков » os.system('ipconfig') - как "отловить" результат???
1
Gregor
Здравствуйте все, многоуважаемые питонеры!
Хочу сделать такую утилитку, которая подключалась бы к FTP-серверу, производила бы файловый обмен и, самое главное, информировала бы о невозможности выполнения из-за чегой-то там.
Одним из путей алгоритма решения задачи, прежде всего, я наметил определить сетевые интерфейсы (если более одного), установленные на имеющемся компьютере и доступные для ОС, из них, - определить какие активные и неактивные (“неактивные” - значит выдернут сетевой кабель или не включен интерфейс пользователем, ОС - WinXP, например), чтобы проанализировать ситуацию.
Т.к. это первый учебно-боевой прожект много чего не знаю, и, первое, что приходит на ум - “ipconfig”. Но при задании os.system('ipconfig') - информация о состоянии - фр-р-р!, - пролетела мимо. Можно ли её как-то “изловить” в переменную, раз. Второе - есть ли иные пути, “питонские”, для этого?
Копаясь в недрах, нашел такой самородок: “> Python для экспертов > Как перехватить сообщения операционной системы?” Долго вчитывался, наверное не то?… “Python v3.2.2 documentation” - в большинстве случаев - шпаргалка для матёрых питонеров, но не для начинающих настольная книга.
Вот!
Спасибо всем, кто откликнется и простите за хлопоты.
doza_and
Если тупо то так:
os.system("ipconfig >you_some_unic_file_name")
with open("you_some_unic_file_name","rt") as f:
s=f.read()
Ed
Лучше через subprocess.check_output, например: http://docs.python.org/library/subprocess.html
Gregor
Почему “тупо”, не согласен! - всякий алгоритм имеет и недостатки и достоинства?! Спасибо! Положу в копилку как третий вариант решения, к этому времени я уже отыскал кое-что! Задачку можно решить тремя (уже) алгоритмами. Первый - описан уважаемым “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
…Пока писал, получил еще один ответ от “Ed'a”, в каком направлении двигаться. Отлично! Этим и займусь. Спасибо!
cutwater
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.
d1ffuz0r
а не сделать ли всё проще?
from urllib2 import urlopen
def isonline(reliableserver='http://www.google.com'):
try:
urlopen(reliableserver)
return True
except IOError:
return False
sypper-pit
для работы с ftp больше подходит http://docs.python.org/library/ftplib.html
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