Was ich versuche zu tun ist, um:liest in String-Datei und eine Schleife tun in Script Erwarten
- erstellen
.exp
-Datei, die von der*.txt
Datei aus demselben Verzeichnis und analysiert die gesamten Inhalt lesen in der Textdatei in eine String-Variable im Expect-Skript. - Schleifen Sie die Zeichenfolge, die eine Reihe von Hostnamen enthält, und führen Sie eine Reihe von Befehlen aus, bis die Zeichenfolge aufgezählt ist.
Also, was das Skript hat, eine Reihe von Host-Namen aus einer txt
-Datei im selben Verzeichnis gelesen wird, und sie dann in einen String gelesen, und die .exp
Datei wird von ihnen Auto-Log in jeden und eine Reihe excecute von Befehlen.
Ich habe den folgenden Code geschrieben, aber es funktioniert nicht:
#!/usr/bin/expect
set timeout 20
set user test
set password test
set fp [open ./*.txt r]
set scp [read -nonewline $fp]
close $fp
spawn ssh [email protected]$host
expect "password"
send "$password\r"
expect "host1"
send "$scp\r"
expect "host1"
send "exit\r"
Jede Hilfe wird sehr geschätzt ....
Ich bin ein wenig verwirrt. Haben Sie eine Datei, die alle Befehle auflistet, und eine andere, die alle Hosts auflistet? Oder haben Sie ein Verzeichnis mit einer Datei pro Host (benannt nach Hostname mit der Erweiterung .txt?), In dem die Befehle auf diesem Host laufen? –
Hallo. Ich versuche eine Schleife zu erstellen. Lesen Sie zuerst die Datei host.txt, die alle Server enthält, auf denen das exp-Skript ausgeführt werden soll. Kopieren Sie anschließend die Befehle, die sich in der Datei commands.txt befinden, in den Host. – Tony
was auch bedeutet, dass der expect-Befehl in diesem Skript eine Anzahl verschiedener Hosts erwartet, wie zB $ host1->, $ host2-> etc .... – Tony