ubuntu在shell运行过程中交互输入、expect

        在运行的shell脚本中有可能需要交互输入指令或确认。如下面安装expect指令需要输入密码。

        例如创建三个节点的redis集群,在创建集群过程中需要三次输入交互。

 a.sh中片段:

#!/bin/sh

docker start redis-node01 redis-node02 redis-node03
 
docker exec -it redis-node01 /bin/bash
#此时需要输入

#....

安装expect

$ sudo apt-get install expect

创建auto_input_to_a.sh

#!/usr/bin/expect -f
spawn ./a.sh
expect "/data# "
send "redis-cli --cluster create 192.168.196.128:6379 192.168.196.128:6380 192.168.196.128:6381 --cluster-replicas 0\n"
expect "Can I set the above configuration? (type 'yes' to accept):"
send "yes\n"
expect "/data# "
send "exit\n"
expect off

注意: 第一行是/usr/bin/expect,这个是选用解释器的意思,我们shell一般选的是 /bin/bash,这里不是 

spawn: 指定需要将哪个命令自动化
expect: 需要等待的消息
send: 是要发送的命令
expect off: 指明命令交互结束 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值