2017-02-03 11 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

で任意のヘルプ、またはポインタをいただければと思います[OK]を、これは私が最初に思ったよりもより困難になります。

  • それがログインセッションの後のtelnet
  • にエコー-INGの、それはマーカーの後にマーカー
  • 何を印刷し無効にします。私は:-)

    これは何
    #!/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 
    

    があるそれが好き

  • 「$ HOST - 」の部分を印刷するもう1つのシェルに、
を埋め込みました。
+0

彼は '$ Output'をまだ持っていません。問題は、 'Output = $(... | telnet)'はすべての認証を取得し、コマンドの最終出力だけでなく起動するということです。 – chepner

+0

ああ、私は認証を忘れていました。私は今質問を理解しています。私は第二の解決法を提案するために編集中です。 – Aissen

+0

可能であれば、 'ssh'は良いアイデアです。しかし、アプリケーションが何らかの種類の内部/組み込み/レガシーデバイス上にあり、テルネット経由でしかアクセスできない場合は、良い質問です。 – chepner

関連する問題