我有一個約5k用戶的列表,我需要通過服務器程序的後端命令API運行以檢索帳戶信息。現在我正在通過2個腳本來完成這個任務。第一個是一個bash腳本,它將文件中的每一行都輸入到下一個腳本中,這是一個期望腳本。期望腳本然後將文件中的數據作爲參數,並執行telnet到命令API以獲取我需要的數據。這工作正常,但本着效率的精神,而不必在我的服務器上打開5k telnet連接,是否有任何方法可以在expect腳本中的單個telnet操作中循環所有文件數據?預期腳本中的循環操作
bash腳本:
#!/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腳本:
#!/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
我想是這樣的:
send "MYCOMMAND $user\r"
expect "200 OK"
send "MYCOMMAND $user\r"
expect "200 OK"
send "MYCOMMAND $user\r"
expect "200 OK"
etc..
我如何能做到這一點與期望?
登錄新用戶,你有特權運行* mycommand的用戶_B *當你登錄爲*用戶_A *? – pynexj
是的,假設你正在談論的是「user_A」是授權給tellnet會話的用戶。 MYCOMMAND user_B只是一個從while循環中的文件中引入的變量。 – user53029