psexec を使用してリモート マシンに接続し、cmd.exe を実行しようとしています。このセッションを開いた後、mkdir、del などの複数のコマンドを実行したいと思います。パイプを閉じて通信するときに、サブプロセスで 1 つのコマンドしか実行できないという問題に直面しています。達成する方法はありますか?
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: この種のシナリオもデバッグする方法は?