是的,我做了类似的事情。
下面是一个工作示例程序,它使用Python中的SSH登录到远程机器,然后从该机器调用某个其余的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'
为什么你不能使用子?你也可以使用ssh作为隧道,也许这就够了。 – syntonym