Я пытаюсь подключиться к удаленному компьютеру с помощью psexec и выполнить cmd.exe. После того, как я открою этот сеанс, я хочу запустить несколько команд, таких как mkdir, del и т. Д. Я столкнулся с проблемой, что я могу запустить только одну команду с подпроцессом, поскольку связь закрывает канал. Есть ли способ выполнить?
from subprocess import Popen, PIPE, STDOUT
class WsRPC():
def __init__(self):
self.rpc_exec_path = r'C:\SysinternalsSuite\psexec.exe'
self.user = 'administrator'
self.ip = '172.xxx.xxx.xxx'
self.password = 'XxXxXxXx'
self.session = ''
def wsConnect(self):
pass
def runCommand(self):
try:
self.session = Popen([self.rpc_exec_path, '\\\\' + self.ip, '-u',
self.user, '-p', self.password, 'cmd.exe'],
stdin = PIPE,stdout = PIPE,stderr = PIPE,
shell = True)
command = 'cmd.exe /c dir'
self.session.stdin.write('dir/r/n')
strout, strerr = self.session.communicate()
print strout
print strerr
except Exception,e:
print str(e)
obj = WsRPC()
obj.runCommand()
Я получаю следующее o/p, когда запускаю этот код:
C:\SysinternalsSuite\psexec.exe \\172.xxx.xxx.xxx -u administrator
-p XxXxXxXx cmd.exe
Microsoft Windows [Version 5.2.3790]
PsExec v2.0 - Execute processes remotely
Copyright (C) 2001-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
Connecting to 172.xxx.xxx.xxx...
Starting PSEXESVC service on 172.xxx.xxx.xxx...
Connecting with PsExec service on 172.xxx.xxx.xxx...
Starting cmd.exe on 172.xxx.xxx.xxx...
cmd.exe exited on 172.xxx.xxx.xxx with error code 0.
Так что кажется, что мой "реж" не работает.
PS: Как отладить и такой сценарий?
command = 'dir\r\n'
? Возможно, вам нужна новая строка. - person User   schedule 20.11.2013time.sleep(5)
передself.session.stdin.write(command)
. - person User   schedule 20.11.2013