linux(九)—shell 服务器之间的交互 expect 的基本用法

1:expect 自动应答 tcl 语言 实现远程登录到其他主机进行操作

2:检测是否安装expect程序 

      检测是否安装命令:yum list|grep expect     安装成功 有如下图箭头所示表示已安装 

   安装命令:yum -y install expect

3:expect 语法如下:

#!/usr/bin/expect

# 使用set来定义变量 使用$ip来获取变量
set ip 192.168.195.11

# 使用spawn 单词开启一个程序
spawn ssh root@$ip
# 使用expect 单词来捕获相关内容
expect {
   "(yes/no)?" { send "yes\r";exp_continue }
   "login:" { send "root\r" }
   "password:" { send "root\r" }

}

# 使用expect 来捕获当前输入行的内容 #:表示 可以执行用户的命令
expect "#"

# 使用send 来发送命令 必须使用\r 结束命令
send "mkdir -p /home/test\r"
send "touch /home/test/file{1..3}\r"

# 必须使用exit 退出挡墙
send "exit\r"

# interact 会停留在目标用户 即停留在操作主机界面中的 目标用户的操作 程序不会退出
# 一般和expect eof 中选择一个 一般会选择 执行完毕后 通过expect eof 进行程序退出
# interact 

# 必须写expect eof 来程序执行完毕退出
expect eof


4:在执行expect 脚本

     授予权限:chmod +x  yyy/xxx.sh

     执行权限:/yyy/xxx.sh

5:执行上面的脚本

    创建 vi /home/shell/test06.sh

     复制上面代码到test06.sh中

    执行: chmod +x /home/shell/test06.sh

    执行:/home/shell/test06.sh

   结果如下:创建3个文件

6:expect 脚本定义位置参数

#!/usr/bin/env expect

# 通过脚本带参数来取值 第一个参数
set ip [ Lindex $argv 0]

# 通过脚本带参数来取值 第二个参数
set password [ Lindex $argv 1]

# 定义设置超时的时间
set timeout 5

# 开启一个程序
spawn ssh root@$ip

# 捕获
expect {
     "(yes/no)?" { send "yes\r";exp_continue }
     "password:" {send "$password\r" }
}

expect eof

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值