使用〜/ .ssh / config文件通过Python进行SSH

时间:2016-07-05 15:02:52

标签: python ssh

我正在尝试创建一个在Python中使用SSH登录远程计算机的脚本。然后我的脚本应该从该机器调用某个rest API,然后将响应返回给原始客户端。

我无法使用子流程,因此不可思议。我尝试使用Paramiko和Fabric,但最终得到了非常复杂的代码段,其中包含许多必填字段。我已经在我和机器之间的所有步骤中设置了我的公钥,只需输入即可轻松浏览所有中间机器。

" SSH xxx" - 在终端

所以我正在寻找的东西允许我做这个简单的请求,而不必重新指定已经设置的所有内容。有没有人做过类似的事情?

1 个答案:

答案 0 :(得分:0)

是的,我做过类似的事情。

这是一个工作示例程序,它在Python中使用SSH登录到远程计算机,然后从该计算机调用某个rest API,然后将响应返回给原始客户端。

import paramiko
from xml.etree import ElementTree as ET
import sys

my_server = sys.argv[1]

client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect(my_server)
stdin, stdout, stderr = client.exec_command(
    'curl http://www.thomas-bayer.com/sqlrest/CUSTOMER/3/')
xml = stdout.read()
xml = ET.fromstring(xml)
assert xml.find('.//FIRSTNAME').text == 'Michael'

如果你可以使用subprocess,这是另一个这样的程序:

import subprocess
import sys
from xml.etree import ElementTree as ET

my_server = sys.argv[1]

xml = subprocess.check_output([
    'ssh',
    my_server,
    'curl -s http://www.thomas-bayer.com/sqlrest/CUSTOMER/3/'])

xml = ET.fromstring(xml)
assert xml.find('FIRSTNAME').text == 'Michael'