如何从期望脚本中终止脚本
How to terminate script from within expect script
我有一个 expect 脚本,它通过 ssh 连接到服务器以验证它使用的密码是否正确。但是,如果它检测到密码不正确,虽然它会停止 expect 命令,但它会继续执行脚本的其余部分。
代码如下 - 我的问题是我们可以在失败案例(密码不正确)中放入什么命令(如果有的话)并让它终止脚本,这样它就不会继续执行其余功能好像密码是正确的。
expect <<-EOS
#!/usr/bin/expect
log_user 0
set timeout $EXP_TIMEOUT
puts "\nValidating Password...\n"
spawn ssh -q -o ConnectTimeout=$SSH_TIMEOUT -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${hostname}
expect "*assword*"
send -- "$secret\r"
expect {
"*assword*" {
send \x03
puts "\nIncorrect Password\n"
}
"$prompt" {
send -- "exit\r"
puts "\nPassword Validated\n"
}
}
expect eof
EOS
如有任何帮助,我们将不胜感激!
编辑:我正在使用 bash。上面粘贴的代码是整个 bash 脚本中的一个函数。
您使用的是什么编码语言?对于许多语言,有一个简单的代码可以退出应用程序,例如 C# 中的 this.Exit()
或 python 中的 exit()
。
我将以下内容添加到我的代码中,它似乎有效。如果有人有任何批评,请随时告诉我可以改进的地方。
期待命令:
expect <<-EOS
#!/usr/bin/expect
log_user 0
set timeout $EXP_TIMEOUT
puts "\nValidating Password...\n"
spawn ssh -q -o ConnectTimeout=$SSH_TIMEOUT -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${hostname}
expect "*assword*"
send -- "$secret\r"
expect {
"*assword*" {
send \x03
puts "\nIncorrect Password\n"
exit 1
}
"$prompt" {
send -- "exit\r"
puts "\nPassword Validated\n"
}
}
expect eof
exit 0
EOS
父级 Bash 脚本:
if [ $? == 1 ]
then
echo "Password validation failed. Exiting..."
exit
fi
我有一个 expect 脚本,它通过 ssh 连接到服务器以验证它使用的密码是否正确。但是,如果它检测到密码不正确,虽然它会停止 expect 命令,但它会继续执行脚本的其余部分。
代码如下 - 我的问题是我们可以在失败案例(密码不正确)中放入什么命令(如果有的话)并让它终止脚本,这样它就不会继续执行其余功能好像密码是正确的。
expect <<-EOS
#!/usr/bin/expect
log_user 0
set timeout $EXP_TIMEOUT
puts "\nValidating Password...\n"
spawn ssh -q -o ConnectTimeout=$SSH_TIMEOUT -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${hostname}
expect "*assword*"
send -- "$secret\r"
expect {
"*assword*" {
send \x03
puts "\nIncorrect Password\n"
}
"$prompt" {
send -- "exit\r"
puts "\nPassword Validated\n"
}
}
expect eof
EOS
如有任何帮助,我们将不胜感激!
编辑:我正在使用 bash。上面粘贴的代码是整个 bash 脚本中的一个函数。
您使用的是什么编码语言?对于许多语言,有一个简单的代码可以退出应用程序,例如 C# 中的 this.Exit()
或 python 中的 exit()
。
我将以下内容添加到我的代码中,它似乎有效。如果有人有任何批评,请随时告诉我可以改进的地方。
期待命令:
expect <<-EOS
#!/usr/bin/expect
log_user 0
set timeout $EXP_TIMEOUT
puts "\nValidating Password...\n"
spawn ssh -q -o ConnectTimeout=$SSH_TIMEOUT -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${hostname}
expect "*assword*"
send -- "$secret\r"
expect {
"*assword*" {
send \x03
puts "\nIncorrect Password\n"
exit 1
}
"$prompt" {
send -- "exit\r"
puts "\nPassword Validated\n"
}
}
expect eof
exit 0
EOS
父级 Bash 脚本:
if [ $? == 1 ]
then
echo "Password validation failed. Exiting..."
exit
fi