python - python脚本上的ssh没有返回值
问题描述
我正在将一个 python 文件 ( abnormalattr.py
) 从一个 linux 服务器复制到另一个,然后使用以下命令在第二个服务器上执行它:
ssh root@machinename python tmp/abnormalattr.py
这将返回 NONE。但是如果我像这样从第二个 linux 服务器执行:
ssh root@machinename
python tmp/abnormalattr.py
...它返回正确的值。
解决方案
该脚本指的是(而不是不必要地间接地)os.environ["HOSTNAME"]
.
作为交互式登录 shell 调用的 bash 实例——由ssh hostname
配置为使用没有其他参数的 bash 的帐户创建——源/etc/profile
(如果存在),然后是第一个存在的~/.bash_profile
、~/.bash_login
或~/.profile
。(交互式非登录外壳运行~/.bashrc
)。
当您运行时ssh hostname 'some-command'
,该命令在非交互式shell 中运行。因此,它没有/etc/profile
任何其他脚本的好处。
要以不依赖于 shell 初始化的方式获取主机名,请使用socket
Python 中的库:
import socket
print(socket.getfqdn())
推荐阅读
- go - sync.Map 似乎不安全的并发读/写
- pythonanywhere - 在 PythonAnywhere 中添加到白名单
- javascript - 如何在 Vuejs 模板中调用带参数的 Laravel 模型函数?
- vhdl - Xilinx 中的 case 语句错误(case-when)
- python - 使用后序二叉树遍历计算子树数
- python - 在遍历 pandas Series 时,使用 Series 的每个成员查询 SQLite 数据库
- c# - MongoDB 使用 C# 驱动程序替换数组内的数组
- java - 如何将对象添加到java中的对象?
- math - 是否有一个方程可以插入钟形曲线?
- c# - 为什么在制作 asp.net web api 时出现此错误?