Форум сайта python.su
Решил написать программу, для своевременного быстрого доступа к своему компьютеру. В виде сервера и клиента.
Управление производится с помощью обращения к cmd, то есть через os.system отправляю команды в консоль windows.
Есть ли возможность наблюдать то, что в этот момента выводится в консоли?!
В слепую совершать сложные операции не очень то и удобною
Офлайн
Ловите данные из stdout и шлете себе (см перенаправление stdout). А вы telnet, rsh и прочие стандарные средства
не хотите принципиально использовать?
Офлайн
не то чтобы принципиально, но хотелось бы просто остаться в рамках самого языка.
stdout я с ним разобрался в том плане, что получаю вывод с консоли только после того как функция полностью выполнена, то есть не ждет ответа от пользователя.Если же необходимо ввести подтверждение, или просто задать тоже время. То вывод уже не приходит. Как можно решить эту проблему?!
Офлайн
Я сам новичек - поэтому привожу что умею
import subprocess as sp
import time
from threading import Thread
class Tcmd(Thread):
def __init__ (self):
Thread.__init__(self)
self.evt=threading.Event()
def run(self):
self.c=sp.Popen(["cmd"],stdin=sp.PIPE,stdout=sp.PIPE)
self.evt.set()
while 1:
a=self.c.stdout.readline()
if not a:
break
print("send:"+a)
def put(self,cmd):
self.c.stdin.write(cmd)
obj=Tcmd()
obj.start()
obj.evt.wait()
obj.put("dir\n")
time.sleep(2)
obj.put("echo\n")
time.sleep(2)
obj.put("exit\n")
obj.join()
Офлайн