linux交互式脚本expect

我们在远程操作其它服务器时,希望写一个脚本自动运行就完事了,但是很多命令(例如:scp、ssh)是交互式的,需要等对方提示后才能输入,如果直接两条命令过去,第一条的返回交互消息还没提示,这边第二条就已经请求了,这样是无效的,所以交互式的就不能写自动脚本了。于是我们需要一种方式,输入后等待提示,然后再自动填写,这时候就需要用expect了。

安装tcl(Tool Command Language),expect

安装文件下载:expect&tcl的安装文件

rpm -i ./expect-5.45-14.el7_1.x86_64.rpm

rpm -i ./tcl-8.5.13-8.el7.x86_64.rpm

下面就是一个执行远程脚本的交互脚本,具体的命令学习tcl&expect

#!/usr/bin/expect
set user root
set pass 123456
set shfile /home/depoly.sh
set ip 192.168.1.1

spawn ssh ${user}@${ip} "${shfile}"
expect "${user}@${ip}'s password:"
send "${pass}\r"
interact

说明

  1. spawn接管目标程序的输入输出

  2. expect拦截分析目标程序的输出,如果符合拦截的格式,继续向下执行

  3. send向目标程序输入

  4. interact将控制权交给用户

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值