shell 编程-Expect

expect的安装

[root@qfedu ~] yum -y install expect

实现批量修改密码,批量推送ssh的公钥,进行远程ssh连接,任何批量操作的基本都能处理。

No.2 expect的语法-------通过expect可以实现将交互式的命令变为非交互式执行,不需要人为干预(手动输入)

是一个免费的编程工具, 用来实现自动的交互式任务, 而无需人为干预. 说白了 expect 就是一套用来实现自动交互功能的软件

如果能够在工作中熟练的使用Shell脚本就可以很大程度的提高工作效率, 那么再搭配上expect这个时候很多工作都可以实现自动化进行。

 用法: 
 1)定义expect脚本执行的shell
         #!/usr/bin/expect     -----类似于#!/bin/bash 
 2)set timeout 30
         设置超时时间30s 
 3)spawn
         spawn是执行expect之后后执行的内部命令开启一个会话 #功能:用来执行shell的交互命令
 4)expect ---相当于捕捉
         功能:判断输出结果是否包含某项字符串(相当于捕捉返回的结果),没有则会断开,否则等待一段时间后返回,等待通过timeout设置 
 5)send
         执行交互动作,将交互要执行的命令进行发送给交互指令,命令字符串结尾要加上“\r”,#---相当于回车
 6)interract 
         执行完后保持交互状态,需要等待手动退出交互状态,如果不加这一项,交互完成会自动退出
 7)exp_continue 
         继续执行接下来的操作

实战非交互式ssh连接:

 案例1:普通操作
 [root@qfedu script]# vim expect01.sh
 #!/usr/bin/expect
 spawn ssh root@192.168.246.115
 ​
 expect {
         "yes/no" {  send "yes\r"; exp_continue }
         "password:" { send "1\r" };
 }
 interact
 [root@qfedu script]# chmod +x expect01.sh
 [root@qfedu script]# ./expect01.sh
 spawn ssh root@192.168.246.115
 root@192.168.246.115's password: 
 Last login: Fri Aug 28 16:57:09 2019
 ​
 #如果添加interact参数将会等待我们手动交互进行退出。如果不加interact参数在登录成功之后会立刻退出。
 ============================================================================
 2.设置变量与进行传参的方式
 #注意:expect环境中设置变量用set,识别不了bash方式定义的变量 
 ​
 [root@qfedu script]# vim expect01.sh
 #!/usr/bin/expect
 set user root
 set pass 1
 set ip [ lindex $argv 0 ]  #expect固定写法,从0开始,第一个位置参数,相当于shell中的$1
 set timeout 10
 ​
 spawn ssh $user@$ip
 expect {
         "yes/no" {  send "yes\r"; exp_continue }
         "password:" { send "$pass\r" };
 }
 interact
 ​
 [root@qfedu script]# ./expect01.sh 192.168.246.115
 spawn ssh root@192.168.246.115
 root@192.168.246.115's password: 
 Last login: Fri Aug 28 07:13:57 2019 from 192.168.246.135
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值