我编写了一个脚本,我需要使用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')
答案 0 :(得分:0)
我建议使用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
这意味着您的远程脚本必须打印变量(到stdout)以便您阅读它,并且您需要操作输出。不要忘记清理(关闭管道和连接)。