2016-07-21 7 views
1

私の期待するスクリプトを使用して送信したいと思っている一連の操作を含むテキストファイルがあります(op1 & op2をtextrファイルのコマンドコマンド:1行につき):どのように私はbashスクリプトと一緒に使用するのですか?

#!/usr/bin/expect 
spawn ssh [email protected] telnet jpaxdp 
expect {\-> } 
send "op1(20)\r" 
expect {\-> } 
send "op2\r" 
expect {\-> } 
send "exit\r" 
expect eof 

どうすればいいですか?

答えて

1

私はあなたの質問を理解できないと思います。その後

+0

に-tオプションを追加しようとすると、 'expect'がこのようなスクリプトコマンドを食べるのを知らなかった!よく働く!ありがとう! – cerr

+1

Expectは、汎用言語であるTclを拡張します。それができないことはあまりありません。 –

0

bashスクリプトを使用すると、期待通りのコマンドを作成して送信することができます。例えば

あなたはcmds.txtを持っている:

echo hello 
echo goodbye 

そしてex.shという名前のbashスクリプトを次

cat cmds.txt | bash ex.sh | expect 

#!/bin/bash 

echo 'spawn bash' 
while read line; do 
    echo 'expect {$ }' 
    echo send '"'"$line\r"'"' 
done 
echo 'expect {$ }' 
echo 'send "exit\r"' 
echo 'expect eof' 

だから今、あなたがしなければならないすべてはそのような使用のパイプラインであります

出力:

[email protected]:/tmp$ cat cmds.txt | bash ex.sh | expect 
spawn bash 
[email protected]:/tmp$ echo hello 
hello 
[email protected]:/tmp$ echo goodbuy 
goodbuy 
[email protected]:/tmp$ exit 
exit 
+0

延期

#!/usr/bin/expect set command_file [lindex $argv 0] spawn ssh [email protected] telnet jpaxdp expect {\-> } set fh [open $command_file r] while {[gets $fh line] != -1} { send "$line\r" expect {\-> } } close $fh send "exit\r" expect eof 

が、どのようにリモートSSHホスト上の私のtelnet接続を持つこの作品は、 '産卵を見るん:一番簡単な方法は、ファイルを読み込む扱う期待できるようにすることです私には思えます'上のスクリプトの行:' spawn ssh root @ ccTest telnet jpaxdp' – cerr

+0

@cerrこれは、エミュレートする疑似ttyのために機能します。私はあなたがキーベースのssh認証を持っていればうまくいくはずです。どのような問題がありますか? sshに何か問題があった場合、ssh – frist

関連する問題