2012-09-04 101 views
5

如何在shell腳本里面運行telnet並在遠程服務器上執行命令?在shell腳本里面的telnet

由於安全原因,我沒有期望安裝在我的solaris機器上。 我也沒有安裝perl net::telnet模塊。

因此,使用expect和perl,我該怎麼做呢?

我試過下面的東西,但它不工作。

#!/usr/bin/sh 
telnet 172.16.69.116 <<! 
user 
password 
ls 
exit 
! 

當我執行它,這就是我得到:

> cat tel.sh 
telnet 172.16.69.116 <<EOF 
xxxxxx 
xxxxxxxxx 
ls 
exit 
EOF 
> tel.sh 
Trying 172.16.69.116... 
Connected to 172.16.69.116. 
Escape character is '^]'. 
Connection to 172.16.69.116 closed by foreign host. 
> 
+0

你說「它不工作」,但_how_不工作?你會收到錯誤消息嗎?怎麼了? –

+0

你不覺得諷刺的是,你沒有安全的原因安裝某些東西,但你使用的是telnet而不是ssh? – gpojd

回答

11

一些你的命令可能會被丟棄。您可以使用普通腳本構造實現更好的控制,然後通過echo通過管道發送所需的命令。組命令的列表,使一個「會話」: -

{ 
sleep 5 
echo user 
sleep 3 
echo password 
sleep 3 
echo ls 
sleep 5 
echo exit 
} | telnet 172.16.65.209 
+4

+1或更好,然後切換到'nc'(Netcat),它比'telnet'更爲神祕,它明顯是專爲交互式使用而設計的。 – tripleee

+0

謝謝!它工作完美。 – Keshav

+0

比使用expect更容易!謝謝! – NaturalBornCamper

-1

我有同樣的問題。但是,至少在我的環境原來是在目標服務器上的SSL證書在一些被損壞方式和服務器團隊照顧這個問題。現在

,我想要做的是找出如何讓一個腳本來運行你上面正在做同樣的事情,除了我希望它傾倒了完全相同的情況下入一個文件,然後當它遇到它實際連接的服務器時,我希望它提供轉義字符(^])並繼續到下一個服務器。