我有一个带有大量操作的文本文件,我希望使用我的期望脚本发送它(用我的textr文件中的命令替换op1& op2,每行一个命令):
#!/usr/bin/expect
spawn ssh root@ccTest telnet jpaxdp
expect {\-> }
send "op1(20)\r"
expect {\-> }
send "op2\r"
expect {\-> }
send "exit\r"
expect eof
我该怎么做?
答案 0 :(得分:1)
我不认为我理解你的问题。在我看来,最简单的方法是让期望处理文件:
#!/usr/bin/expect
set command_file [lindex $argv 0]
spawn ssh root@ccTest 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
然后
答案 1 :(得分:0)
您可以使用bash脚本创建一系列命令并将其发送给它。
例如,您有cmds.txt
:
echo hello
echo goodbye
以及名为ex.sh
的bash脚本:
#!/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'
所以现在你所要做的就是使用这样的管道:
cat cmds.txt | bash ex.sh | expect
输出:
admin@admin:/tmp$ cat cmds.txt | bash ex.sh | expect
spawn bash
admin@admin:/tmp$ echo hello
hello
admin@admin:/tmp$ echo goodbuy
goodbuy
admin@admin:/tmp$ exit
exit