2017-02-03 39 views
2

我已經讓我的腳本儘可能地連接,登錄和運行命令。但我堅持如何將命令的響應保存到文件中,而不保存整個會話。如何保存來自telnet腳本的響應?

#!/bin/sh 
Var=1 
while [ $Var -lt 20 ] 
do 
HOST='IPa.ddr.ess.'$Var 
USER='MyUser' 
PASSWD='MyPassword' 
CMD='MyCommand' 

(
    echo open "$HOST" 
    sleep 1 
    echo "$USER" 
    sleep 1 
    echo "$PASSWD" 
    sleep 1 
    echo "$CMD" 
    #I want to save the output from my $cmd to an varaible $Output 
    #Then I want to write "$HOST - $Output" to a file named "output.txt" 
    sleep 2 
    echo "exit" 
    ) | telnet 
Var=$((Var + 1)) 
done 

我會很感激任何幫助,或者在正確的方向指針

回答

0

好吧,這看起來比我最初以爲更具挑戰性。我喜歡它:-)

#!/bin/sh 
Var=1 
while [ $Var -lt 20 ] 
do 
HOST='IPa.ddr.ess.'$Var 
USER='MyUser' 
PASSWD='MyPassword' 
CMD='MyCommand' 
MARKER='XXXX1234:AUIE' 

(echo "$HOST - " ; (
    echo unset echo 
    echo open "$HOST" 
    sleep 1 
    echo "$USER" 
    sleep 1 
    echo "$PASSWD" 
    sleep 1 
    echo echo "$MARKER" 
    echo "$CMD" 
    #I want to save the output from my $cmd to an varaible $Output 
    #Then I want to write "$HOST - $Output" to a file named "output.txt" 
    sleep 2 
    echo "exit" 
    ) | telnet | sed -e "1,/$MARKER/d") >> output.txt 
Var=$((Var + 1)) 
done 

這樣做是:

  • ,它禁用遠程登錄
  • 回聲荷蘭國際集團的登錄會話後,打印標記
  • 任何標記後保存到output.txt中
  • 我重疊到另一個shell中,它將打印「$ HOST - 」部分
+0

他還沒有'$輸出';問題是'Output = $(... | telnet)'會捕獲所有的身份驗證並啓動,而不僅僅是命令的最終輸出。 – chepner

+0

哦,我忘了驗證。我現在明白這個問題。爲了提出第二個解決方案,我將進行編輯。 – Aissen

+0

如果可能,'ssh'是一個好主意。不過,如果應用程序位於某種只能通過telnet訪問的內部/嵌入式/遺留設備上,這是一個很好的問題。 – chepner