2017-01-02 24 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修復了這個問題。