我要做的是创建服务器和客户端,服务器能够执行CMD命令。
我设法进行服务器 - 客户端通信,但是我在使用python控制命令提示符时遇到了问题。
我目前的代码是:
import time
import _thread
import winpexpect
class CommandPrompt(object):
def __init__(self):
self.cmd = winpexpect.winspawn('cmd.exe')
def read(self):
while True:
if self.cmd.readline():
print(self.cmd.before)
def send(self,usinput):
self.cmd.sendline(usinput)
def close(self):
self.cmd.close()
cmd = CommandPrompt()
_thread.start_new_thread(cmd.read,())
time.sleep(1)
while True:
cmd.send(input('>>'))
使用这段代码,我可以执行shell命令,但它始终缺少最后一行,显示当前路径并等待我的输入ex:C:\Windows\system32>
。我认为没有显示该行的原因是因为没有输入。
此外,在一段时间没有输入任何命令之后它会崩溃pexpect.TIMEOUT
,我知道我可以通过提高超时来解决这个问题,但这并没有改变我的阅读方法存在缺陷的事实。
任何人都可以帮我阅读命令提示符的输出吗?
如果我没有描述我已经足够好的问题,我很抱歉,这是我第一次在stackoverflow上寻求帮助:) ...
答案 0 :(得分:0)
您可以尝试将输出通过管道输出到输出文件中并读取该文件。例如:
import time
import _thread
import winpexpect
class CommandPrompt(object):
def __init__(self):
self.cmd = winpexpect.winspawn('cmd.exe')
def read(self):
while True:
if self.cmd.readline():
print(self.cmd.before)
def send(self,usinput):
self.cmd.sendline(usinput)
def close(self):
self.cmd.close()
cmd = CommandPrompt()
_thread.start_new_thread(cmd.read,())
time.sleep(1)
while True:
cmd.send(input('>>') + " > out.txt")
# some sort of function to request the contents of "out.txt"
# some sort of function to remove "out.txt"