ssh通过python脚本

时间:2014-08-17 18:21:33

标签: python ssh

这是我的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脚本中尝试它时,它才会抱怨上述错误。

4 个答案:

答案 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)