Java 远程tty/pty的python结构使用
我需要使用ssh登录到远程机器并做一些“工作”。 远程机器是一个设备,不允许使用bash等。 当用户通过ssh登录设备时,例如“admin”。我们最终将进入一个“特殊”CLI shell,其中包含有限且专门的命令 我为一个简单的“show info”创建了一个fabbile,但我不断地返回错误消息,即不允许使用远程ssh命令 我当前的代码:Java 远程tty/pty的python结构使用,java,python,ssh,fabric,Java,Python,Ssh,Fabric,我需要使用ssh登录到远程机器并做一些“工作”。 远程机器是一个设备,不允许使用bash等。 当用户通过ssh登录设备时,例如“admin”。我们最终将进入一个“特殊”CLI shell,其中包含有限且专门的命令 我为一个简单的“show info”创建了一个fabbile,但我不断地返回错误消息,即不允许使用远程ssh命令 我当前的代码: from fabric.api import run from fabric.api import env def info(): run('sh
from fabric.api import run
from fabric.api import env
def info():
run('show info', pty=True)
就我所知,pty=True正是我需要的原因,即请求远程TTY
有一些java代码(我想转换为python的更大java项目的一部分),它们使用:
Session sess = conn.openSession();
/* */
/* 82 */ sess.requestDumbPTY();
/* */
/* 84 */ sess.startShell();
/* */
/* 86 */ strBuf = test.getResponse(sess, strbuf);
/* */
/* 91 */ conn.close();
对于这一点,实际上效果很好。(在ethz.ssh库之外)
你知道如何使用fabric(或任何其他python方法)实现这一点吗?或者我的代码有什么问题
谢谢
安德烈
更新:
正如fabric/fabfile的疑难解答部分所建议的,我尝试了以下方法:
ssh -t admin@192.168.88.20 "show info"
Riverbed SteelHead
admin@192.168.88.20's password:
Riverbed ssh: ssh remote command is not allowed.
Connection to 192.168.88.20 closed.
据我所知,-t参数做了pty=True应该做的事情,所以它失败也就不足为奇了。
如何在python中实现这一点?如上所述,上面的java代码似乎工作正常
更新20.03.15
在收到“Tumbleweed”徽章(问了一个一周没有投票、没有回答、没有评论、低浏览量的问题)后,我想我又碰上了它?这里有这么多聪明人,真不敢相信没有人有答案
谢谢 有人吗?没人知道吗?如果有任何提示/提示,我将不胜感激。。。拜托,这让我快发疯了