这是我的python脚本的样子
import os
command = 'ssh testServer'
os.system(command)
它给了我以下错误
[Sun Aug 17 11:07:30 Adam@testServer:~/] $ python test.py
ld.so.1: ssh: fatal: relocation error: file /usr/bin/ssh: symbol SUNWcry_installed: referenced symbol not found
Killed
当我从命令行执行它时,Ssh命令工作正常。只有当我在使用os / subprocess模块的python脚本中尝试它时,它才会抱怨上述错误。
答案 0 :(得分:1)
您不应该使用os.system
,您应该使用subprocess:
就像你的情况一样:
bshCmd = "ssh testServer"
import subprocess
process = subprocess.Popen(bshCmd.split(), stdout=subprocess.PIPE)
output = process.communicate()[0]
如果您有任何疑问,请与我们联系!
答案 1 :(得分:0)
os.system有很多问题,而subprocess是执行unix命令的更好方法。使用此食谱:
import subprocess
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
答案 2 :(得分:0)
您是否考虑过使用ssh自动化软件包?像https://pypi.python.org/pypi/ssh/1.7.8
这样的东西答案 3 :(得分:0)
所以你的ssh依赖于位于/ opt / svn / current / lib中的库:“libz.so.1 => /opt/svn/current/lib/libz.so.1 libz.so. 1(SUNW_1.1)“。它通过查看环境变量LD_LIBRARY_PATH
找到此库。 python中的os.system调用不保留此变量。
import os
import subprocess
command = 'ssh testServer'
subprocess.Popen(command, shell=True, env=os.environ)