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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写条件期望脚本以根据服务器接受不同的密码集?相关的知识,希望对你有一定的参考价值。

我的要求是编写一个期望脚本,该期望不同的跳转服务器集需要不同的密码集。问题是我不能一概而论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:',​​因为它很常见...

答案

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

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

以上是关于如何编写条件期望脚本以根据服务器接受不同的密码集?的主要内容,如果未能解决你的问题,请参考以下文章

期望脚本不适用于多个密码请求

使用if语句编写Shell脚本

在“期望”中使用条件语句

过滤以多列为条件的数据框,根据列值具有不同的条件

如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件

如何编写 hql 查询或条件查询以根据时间戳获取最新记录