python 子进程 - 使用 rsh 在不同机器上获取命令 运行 的退出状态
python subprocess - get exit status of command run on different machine using rsh
我正在尝试 运行 我通过 rsh
命令连接的某台机器上的一些命令(我的情况不能使用 ssh
)。
通过 subprocess.check_call
函数,我正在执行命令并期望 check_call
在我的“cd /libs/
”命令的退出状态指示失败时异常退出。
下面是我正在尝试的代码。
with open('logs.txt','w') as outstream:
subprocess.check_call("rsh bldr 'cd /libs/' ", shell=True,stdout=outstream)
但是在这里,rsh
只是 returns 它的退出状态,而不是它正在执行的命令。
因为即使在命令失败的情况下,check_call
函数也没有错误,因为它正在获得 rsh
退出状态,这将始终为 0。
那么,这里如何获取命令的退出状态呢?
此外,如何根据我的命令退出状态使 check_call
失败?
注意:我正在尝试将目录更改为不存在的 /libs。我希望 check_call
在这里失败并停止执行脚本。
同时捕获 stderr,它可用于检查远程机器上的命令是否失败。
with open('logs.txt','w') as outstream:
with open('error.txt','w') as errstream:
ret = subprocess.check_call("rsh centos lsh", shell=True, stderr=errstream, stdout=outstream)
fpstat = os.stat('error.txt')
if fpstat.st_size > 0:
print("problem in command on remote machine.")
else:
print("Successful.")
我正在尝试 运行 我通过 rsh
命令连接的某台机器上的一些命令(我的情况不能使用 ssh
)。
通过 subprocess.check_call
函数,我正在执行命令并期望 check_call
在我的“cd /libs/
”命令的退出状态指示失败时异常退出。
下面是我正在尝试的代码。
with open('logs.txt','w') as outstream:
subprocess.check_call("rsh bldr 'cd /libs/' ", shell=True,stdout=outstream)
但是在这里,rsh
只是 returns 它的退出状态,而不是它正在执行的命令。
因为即使在命令失败的情况下,check_call
函数也没有错误,因为它正在获得 rsh
退出状态,这将始终为 0。
那么,这里如何获取命令的退出状态呢?
此外,如何根据我的命令退出状态使 check_call
失败?
注意:我正在尝试将目录更改为不存在的 /libs。我希望 check_call
在这里失败并停止执行脚本。
同时捕获 stderr,它可用于检查远程机器上的命令是否失败。
with open('logs.txt','w') as outstream:
with open('error.txt','w') as errstream:
ret = subprocess.check_call("rsh centos lsh", shell=True, stderr=errstream, stdout=outstream)
fpstat = os.stat('error.txt')
if fpstat.st_size > 0:
print("problem in command on remote machine.")
else:
print("Successful.")