Ich versuche, ein Expect-Skript in einem Bash-Skript zu implementieren. Bear mit mir, da ich ziemlich neu bin zu bash/erwarten.Expect innerhalb Bash-Skript
Hier ist das Skript erwarten, die wie beabsichtigt funktioniert:
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
Nun, ich bin die Hoffnung, dieses Skript erwartet in einer Bash-Skript zu schließen, aber es funktioniert nicht wie beabsichtigt.
Hier ist, was ich bisher:
#!/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"
Der Fehler Ich erhalte ist:
command substitution: line 42: syntax error near unexpected token `('
command substitution: line 42: `expect "$ " { puts $fh "$expect_out(buffer)"}'
Ich bin offen für alle anderen Möglichkeiten, dies zu implementieren! :)
In Ihrem ursprünglichen Skript wird die Variable '$ Server' um Tcl erweitert, da das ganze Zeug ein Tcl-Programm ist. In Ihrem zweiten Skript wird die Variable '$ server' um bash erweitert, und da es keine bash-Variable mit diesem Namen gibt, wird sie durch die leere Zeichenkette ersetzt. – user1934428