我编写了一个脚本,我需要使用 Paramiko 从远程服务器访问变量。
是否可以像在该服务器上运行 ipython 一样访问远程脚本对象?
本地...例如来自 foo.py
list = [1,2,3]
ipython -i foo.py
In[1]: list
Out[1] [1,2,3]
如何使用 Paramiko 访问相同的内容?偏僻的 ..
ssh = ssh.exec_command('ipython -i /some path/foo.py')
我建议使用RPyC。它允许轻松访问远程对象。
但是,如果您必须使用 Paramiko,则可以使用以下示例:
sin, sout, serr = ssh.exec_command("python")
sin.write('''x=["a1","b2","c3"]
print("-".join(x))
exit()
''')
sin.flush()
sin.channel.shutdown_write()
line = sout.readline()
print("line:{}".format(line))
myarr = line.split("-")
for e, i in enumerate(myarr):
print("item {}:{}".format(e,i))
其输出将是:
line:a1-b2-c3
item 0:a1
item 1:b2
item 2:c3
这意味着您的远程脚本必须打印变量(到标准输出)以便您阅读它,并且您需要操作输出。不要忘记清理(关闭管道和连接)。