Я пытаюсь реализовать сценарий ожидания в скрипт bash. Потерпите меня, так как я довольно новичок в bash/expect.Ожидайте в скрипте 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, так как весь материал - это программа Tcl. В вашем втором скрипте переменная '$ server' расширена bash, и поскольку в ней нет переменной bash с этим именем, она заменяется пустой строкой. – user1934428