0

我编写了一个脚本,我需要使用 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')
4

1 回答 1

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

这意味着您的远程脚本必须打印变量(到标准输出)以便您阅读它,并且您需要操作输出。不要忘记清理(关闭管道和连接)。

于 2013-10-17T20:00:11.090 回答