linux下shell脚本执行交互式操作命令 —【expect】

本文介绍了一种利用Expect脚本来自动处理Linux环境下SSH登录时的手动输入密码问题的方法。通过send、expect和spawn三个基本命令,可以实现对多台服务器进行高效、一致的操作管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多情况下,为了开发方便,会写一些小工具辅助。下面简单分享下linux 下执行shell脚本时遇到交互式场景时的解决办法。

场景:linux 下ssh 登入远程服务器,需要手动输入password。

expect 命令

Expect 是由 Don Libes 基于 Tcl 语言开发的,并被广泛应用于交互式操作和自动化测试的场景之中,它尤其适用于需要对多台服务器执行相同操作的环境中,可以大幅度得提高系统管理人员的工作效率。

Send,expect 和 spwan 是 Expect 语言最基本的命令。其中,send 命令会发送字符串给指定进程(process); expect 命令会等待接受该进程返回的结果并且会根据返回的字符串来决定下一步的操作;而 spwan 命令可以发起一个进程的运行。

简单demo示例:

1、touch test.expect

2、vi text.expect

3、脚本代码

#!/usr/bin/expect

# 设置超时时间60s

set timeout 60
spawn ssh lilei@127.0.0.1 -p 2222

expect {
    "*yes/no*" {
      send "yes\n";
      exp_continue;
    }

    "*password:*" {
      send "Welcome@2\r";
      exp_continue;
    }
}
#这里使用了 interact 命令,使执行完程序后,用户可以在 $host 终端进行交互操作。
interact

4、终端执行命令:expect test.expect

PS:linux 下 还有一种EOF语法,但不适用于这里。 

转载于:https://my.oschina.net/nbspjj/blog/733430

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值