Ich habe eine Liste von etwa 5 k Benutzer, die ich durch die Back-End-Befehls-API eines Server-Programms durchlaufen müssen, um Kontoinformationen abrufen. Im Moment mache ich das über 2 Skripte. Das erste ist ein Bash-Skript, das jede Zeile in einer Datei übernimmt und die Daten dem nächsten Skript zuführt, das ein Expect-Skript ist. Das Expect-Skript übernimmt dann die Daten aus der Datei als Argument und führt ein Telnet zur Befehls-API aus, um die benötigten Daten zu erhalten. Dies funktioniert gut, aber im Geiste der Effizienz, und nicht 5k Telnet-Verbindungen auf meinem Server zu öffnen gibt es eine Möglichkeit, alle Dateidaten in einer einzigen Telnet-Operation innerhalb der Expect-Skript zu wiederholen?Schleife Operation innerhalb erwarten Skript
Bash-Skript:
#!/bin/bash
exp="/path_to_expect_script"
file="/path_to_data_file"
while read -r user; do
$exp "$user" </dev/tty
echo
done < $file
Expect Script:
#!/usr/bin/expect -f
lassign $argv user
spawn telnet 127.0.0.1 825
expect "200 PWD Server ready"
send "USER username\r"
expect "300 please send the PASS"
send "PASS password\r"
expect "200 login OK, proceed"
### Line below does the work ####
send "MYCOMMAND $user\r"
expect "200 OK"
send "quit\r"
interact
ich so etwas wie dies möchte:
send "MYCOMMAND $user\r"
expect "200 OK"
send "MYCOMMAND $user\r"
expect "200 OK"
send "MYCOMMAND $user\r"
expect "200 OK"
etc..
Wie kann ich dies nicht erwarten, mit?
Sie haben das Privileg * laufen myCommand Benutzer_b *, wenn Sie als * anmelden user_a *? – pynexj
Ja, vorausgesetzt, Sie sprechen davon, dass "user_A" der Benutzer ist, der sich für die Tellnet-Sitzung autorisiert. MYCOMMAND user_B ist nur eine Variable, die aus der Datei in der while-Schleife importiert wird. – user53029