2017-01-02 25 views
-1

我试图创建一个非托管脚本来管理我的tp-link开关(更改状态,描述和速度......)。 TP-LINK使用思科......例如类似的连接:关闭端口:linux中的非托管任务

enable 
configure 
interface gigabitEthernet 1/0/20 
shutdown 

如果我连接到我的开关(带SSH)我可以执行所有的命令没有问题,但我用命令行唐”牛逼的作品:

例如:

ssh x.x.x.x "sh interface configuration" 

此命令应该是显示我的端口的状态,但不显示任何内容。用户和密码是好的。 SSH返回:

Authenticated with partial success. 
Connection to 192.168.20.26 closed by remote host. 

你可以说其他选项来执行此操作吗?

我试着用expect和telnet来执行这个选项,结果是好的,但是如果我用ssh连接执行期望的话也不行。

我希望脚本:

#!/usr/bin/expect -f 

spawn -noecho telnet 192.168.20.26 

expect "User:" 
send -- "admin\r" 
expect "Password:" 
send -- "mypass\r" 
send -- "enable\r" 
send -- "configure\r" 
send -- "interface gigabitEthernet 1/0/20\r" 
send -- "description hola\r" 
send -- "exit\r" 
send -- "exit\r" 
send -- "exit\r" 
send -- "exit\r" 
send -- "exit\r" 

interact 

该脚本工作正常,但如果我从远程主机执行这个脚本不工作。

此致敬礼。

+0

如果您提供了一些无法使用的预期代码 - 我们可以提供帮助,否则问题有点过于笼统。 – favoretti

+0

嗨@favoretti。我用期望的脚本编辑我的文章。问题不在于脚本。这工作正常,但如果我执行期望与远程主机不起作用(不要登录)。 – user3368224

+0

那么当你用'ssh'替换'telnet'时,它什么都不做?你尝试过使用'ssh -T'(不要分配PTY)。 – favoretti

回答

0

上面的问题是由于ssh未能自动分配PTY导致的。 ssh -t修复了这个问题。