我制作了一个 Bash 脚本,它使用一个期望脚本来自动化 ssh 登录。该脚本连接到多个服务器并运行一些命令。bash 脚本会提示输入登录凭据一次。
我想加入一个功能,如果第一台服务器的登录失败,脚本将终止,以避免脚本检查下一台服务器导致用户帐户被锁定。帐户锁定发生在连续 3 次登录失败并且脚本尝试连接的服务器数量超过 3 台时。
这是 bash 脚本中调用期望脚本的片段。
countu=0
for servername in $(cat $linux_host_list)
do
./script.expect $LUSERNAME $LPASS $servername Linux >> linux_log_file.txt & < /dev/null
let countl=countl+1
done
这是期望脚本(script.expect
)片段
#!/usr/bin/expect -f
set timeout 30
set username [lindex $argv 0]
set SPASS [lindex $argv 1]
set servername [lindex $argv 2]
set case [lindex $argv 3]
set prompt "(%|#|\\$|%\]) $"
switch $case {
Linux {
log_user 0
spawn ssh -o StrictHostKeyChecking=no $username@$servername
expect {
"assword:" {
send "$SPASS\r"
expect -re "$prompt"
}
expect -re "$prompt"
}
send "sudo su -\r"
expect {
"assword:" { send "$SPASS\r" }
}
expect -re "$prompt"
log_user 1
send "opcagt -status ; opctemplate -l ; cat watch.cf 2> /dev/null\r"
expect -re "$prompt"
log_user 0
send "exit\r"
expect -re "$prompt"
log_user 1
}
我尝试获取 bash 命令输出$?
(任何建议将不胜感激。