私はbashスクリプトにexpectスクリプトを実装しようとしています。私はかなり新しくbash/expectに慣れているので、私と一緒にいてください。私はbashスクリプトでは、この期待スクリプトが含まれるように期待していますが、意図したとおり、それは働いていない、今bashスクリプト内で期待する
log_user 0
file delete foo.txt
set fh [open foo.txt a]
set servers {[email protected] [email protected]}
foreach s $servers {
spawn ssh $s
expect "password: "
send "PASSWORD\r"
expect "$ "
send "grep "something" /some/log/file.log"
expect "$ " { puts $fh "$expect_out(buffer)"}
send "exit\r"
}
close $fh
:
は、ここで意図したとおりに動作期待スクリプトです。ここで
は、私がこれまで持っているものです。
#!/bin/bash
XYZ=$(expect -c "
file delete foo.txt
set fh [open foo.txt a]
set servers {[email protected] [email protected]}
foreach s $servers {
spawn ssh $s
expect "password: "
send "PASSWORD\r"
expect "$ "
send "grep "something" /some/log/file.log"
expect "$ " { puts $fh "$expect_out(buffer)"}
send "exit\r"
}
close $fh
")
echo "$XYZ"
私は取得していますエラーは次のとおりです。
command substitution: line 42: syntax error near unexpected token `('
command substitution: line 42: `expect "$ " { puts $fh "$expect_out(buffer)"}'
私はこれを実装する任意の他の方法に開いています! :)
元のスクリプトでは、変数 '$ servers'はTclによって展開されます。 2番目のスクリプトでは、変数 '$ server'はbashによって展開され、この名前のbash変数がないので、null文字列に置き換えられます。 – user1934428