python脚本上的ssh不返回无值

时间:2018-06-21 16:16:58

标签: python ssh

我正在将python文件(abnormalattr.py)从一台linux服务器复制到另一台,然后在第二台服务器上使用以下命令执行该文件:

ssh root@machinename python tmp/abnormalattr.py

这将返回NONE。 但是,如果我从第二台Linux服务器执行以下命令:

ssh root@machinename
python tmp/abnormalattr.py

...它返回正确的值。

1 个答案:

答案 0 :(得分:0)

此脚本是指(而不是不必要地倾斜)指向os.environ["HOSTNAME"]

作为交互式登录外壳调用的bash实例-由ssh hostname创建到配置为使用bash且没有其他参数的帐户-源/etc/profile(如果有),后跟第一个存在~/.bash_profile~/.bash_login~/.profile。 (交互式非登录Shell运行~/.bashrc)。

运行ssh hostname 'some-command'时,该命令在 noninteractive shell中运行。因此,它没有/etc/profile或任何其他这些脚本的好处。


要以不依赖于外壳初始化的方式获取主机名,请使用Python中的socket库:

import socket
print(socket.getfqdn())