如何使用Paramiko运行Ipython

时间:2013-10-17 12:42:01

标签: python ipython paramiko

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

1 个答案:

答案 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)以便您阅读它,并且您需要操作输出。不要忘记清理(关闭管道和连接)。