Paramiko SSH - "systemctl status tomcat" returns 代码 3 当 Tomcat 停止时
Paramiko SSH - "systemctl status tomcat" returns code 3 when Tomcat is stopped
以下面的Python代码为例,通过SSH连接到Debian服务器时:
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)
stdout.channel.recv_exit_status() 对于第二个 SSH 命令 returns 3 - 不管是什么意思。
是 SSH return 代码吗? Debian 主机 return 代码?文档建议使用后者:http://docs.paramiko.org/en/stable/api/channel.html(“服务器上进程的退出代码(作为 int)。”)
比较有趣的是,如果我用同样的命令startTomcat然后调用服务的状态,它returns 0,从而导致我相信无论出于何种原因,我都无法在停止时获得 Tomcat 的状态。然而,如果我自己通过 SSH 连接到服务器,无论 Tomcat 是否启动,status 命令都有效。
如有任何帮助,我们将不胜感激。
如果 tomcat 停止,systemctl status tomcat
将 return 3 作为退出代码,因此这种行为是正常的。
systemctl status <service>
的退出代码将指示所请求服务的状态,而不是实际检查是否成功。
如果你 运行 systemctl status tomcat
当 tomcat 停止时,然后 运行 echo $?
,你会看到退出代码是 3。如果tomcat是运行ning,应该是return0.
systemctl status
在这方面遵循 LSB 规范——可能的退出代码的完整列表在这里:https://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html.
以下面的Python代码为例,通过SSH连接到Debian服务器时:
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)
stdout.channel.recv_exit_status() 对于第二个 SSH 命令 returns 3 - 不管是什么意思。 是 SSH return 代码吗? Debian 主机 return 代码?文档建议使用后者:http://docs.paramiko.org/en/stable/api/channel.html(“服务器上进程的退出代码(作为 int)。”)
比较有趣的是,如果我用同样的命令startTomcat然后调用服务的状态,它returns 0,从而导致我相信无论出于何种原因,我都无法在停止时获得 Tomcat 的状态。然而,如果我自己通过 SSH 连接到服务器,无论 Tomcat 是否启动,status 命令都有效。
如有任何帮助,我们将不胜感激。
systemctl status tomcat
将 return 3 作为退出代码,因此这种行为是正常的。
systemctl status <service>
的退出代码将指示所请求服务的状态,而不是实际检查是否成功。
如果你 运行 systemctl status tomcat
当 tomcat 停止时,然后 运行 echo $?
,你会看到退出代码是 3。如果tomcat是运行ning,应该是return0.
systemctl status
在这方面遵循 LSB 规范——可能的退出代码的完整列表在这里:https://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html.