如何编写条件期望脚本以根据服务器接受不同的密码集?

问题描述 投票:0回答:1

我的要求是编写一个期望脚本,该期望不同的跳转服务器集需要不同的密码集。问题是我不能一概而论expect 'Password:'因为这在不同的服务器之间很常见。因此,识别服务器的唯一方法是事先阅读标语并检查特定的字符串并相应地发送密码。

我不知道如何在spawn ssh的期望命令中读取横幅] >>

我的代码如下

#!/usr/bin/expect

set host [lindex $argv 0]

set pass1 'xxx'
set pass2 'yy'

spawn ssh $host
expect "Password:*"
send "$pass1\r"
expect {
"Password:*" {
        send "$pass2\r"
        exp_continue
    }
}

我的要求是编写一个期望脚本,该脚本将针对不同组的跳转服务器使用不同的密码集。问题是我无法概括期望的'Password:',​​因为它很常见...

bash shell ssh tcl expect
1个回答
0
投票

似乎很奇怪,当您已经在$ host变量中拥有其标识时,需要根据返回的横幅中的某个字符串来标识服务器。除非指定的主机名解析为不共享公共密码的多台服务器。

假设这种情况,并且每个主机返回一个标语为“欢迎使用servername

© www.soinside.com 2019 - 2024. All rights reserved.