erwarten stellt in Datei schreiben
Schreibe ich eine expect-Skript, das ssh-Verbindung auf mehrere IP-Adressen testen Sie Ihre Konnektivität. Ich möchte zu eine "legt" - Anweisung zu schreiben, die das Ergebnis der einzelnen Tests in einer Datei auf dem Rechner nach dem aufrufen des Skripts. Obwohl ich denke, ich bin nach dem Handbuch für puts zu schreiben, um eine Datei schreibt er nur nach stdout. Finden Sie das Skript unten. Das Endergebnis ist, dass die Datei erstellt wird auf der lokalen Maschine, aber kein Ausgang gerichtet ist. Stattdessen wird die Ausgabe geht nach stdout.
#!/bin/bash
USER=user
PASSWORD=password
IPSTART=12.34.56.
OUTFILE="TEST.log"
PROMPT="#"
for IPEND in `seq 200 231`
do
expect -c "
set timeout 3
set chan [open $OUTFILE w]
spawn ssh $USER@$IPSTART$IPEND
expect -re \".*ssword.*\" {send \"$PASSWORD\n\"}
expect {
-re \".*Are you sure you want to continue connecting.*\" {send \"yes\n\"; exp_continue}
-re \".*$PROMPT.*\$.*\" {puts $chan \"$IPSTART$IPEND\n\"; send \"exit\n\"}
}
close $chan
"
done
Frage ich mich, ob es möglicherweise ein Problem mit dem zitieren, aber ich kann ' T es herausfinden.
Als Referenz, dies ist das Beispiel von http://www.tcl.tk/man/tcl8.4/TclCmd/puts.htm
set chan [open my.log a]
set timestamp [clock format [clock seconds]]
puts $chan "$timestamp - Hello, World!"
close $chan
InformationsquelleAutor Rusty Lemur | 2012-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du wahrscheinlich problem war, dass Sie mit doppelten Anführungszeichen. Deshalb sollten Sie die escape-literal
$
übergeben wird, zu erwarten (ie.\$chan
):InformationsquelleAutor Janito Vaqueiro Ferreira Filho
Gut, ich coulnd nicht herausfinden, wie es in der bash, also änderte ich das ganze Skript zu erwarten. Es funktioniert jetzt.
InformationsquelleAutor Rusty Lemur