我正在将python文件(abnormalattr.py
)从一台linux服务器复制到另一台,然后在第二台服务器上使用以下命令执行该文件:
ssh root@machinename python tmp/abnormalattr.py
这将返回NONE。 但是,如果我从第二台Linux服务器执行以下命令:
ssh root@machinename
python tmp/abnormalattr.py
...它返回正确的值。
答案 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())