【发布时间】:2023-09-12 21:40:01
【问题描述】:
通过 SSH 连接到 Debian 服务器时,以以下 Python 代码为例:
stdin, stdout, stderr = ssh.exec_command('sudo systemctl stop tomcat')
if stdout.channel.recv_exit_status() != 0:
for line in iter(stderr.readline, ""):
print(line)
stdin, stdout, stderr = ssh.exec_command('sudo systemctl status tomcat')
if stdout.channel.recv_exit_status() != 0:
for line in iter(stderr.readline, ""):
print(line)
第二个 SSH 命令的
stdout.channel.recv_exit_status() 返回 3 - 不管这意味着什么。 是 SSH 返回码吗? Debian 主机返回码?文档建议后者:http://docs.paramiko.org/en/stable/api/channel.html(“服务器上进程的退出代码(作为 int)。”)
比较有趣的是,如果我用同样的命令启动 Tomcat,然后调用服务的状态,它返回0,从而让我相信我无论出于何种原因都无法获得状态Tomcat停止时。然而,如果我自己通过 SSH 连接到服务器,无论 Tomcat 是否启动,status 命令都会起作用。
对此的任何帮助将不胜感激。
【问题讨论】:
标签: python tomcat ssh debian paramiko