我试图在命令行oneliner上重现以下批处理文件。我希望能够在python脚本中使用此客户端并确定是否建立了连接我需要能够检索错误代码。我通过子进程调用应用程序任何帮助将不胜感激
批量文件代码
ECHO OFF
START /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch
ECHO %ERRORLEVEL%
我已尝试过以下命令以及许多变化,但无法获得预期的结果。可以找到有关可执行文件的信息here
示例
c:\Python27>start /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /log /batch | ECHO %ERRORLEVEL%
c:\Python27>start rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch || ECHO %ERRORLEVEL%
PYTHON CODE的单位
try:
cmdrdp = "rdp.exe /v:%s /u:%s /p:%s /log /batch" % (server, username, password)
subprocess.check_output(cmdrdp)
except CalledProcessError as e:
print(e.returncode)
else:
print "Connected to: %s %s %s" % (server, username, password)
答案 0 :(得分:1)
如果您将单个字符串传递给subprocess.check_output
,则它将作为文字文件名进行插入,如果您希望它能够工作,则需要传递shell=True
参数。
但是,使用subprocess
系列函数的推荐方法是使用字符串列表作为参数:
subprocess.check_output(["rdp.exe", "/v:" + server, "/u:" + username, "/p:" + password, "/log", "/batch"])