expect使用与安装

expect使用与安装

Linux expect详解

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

expect 安装

1.yum安装

   yum install -y  expect

2.源码安装
源码安装前需要安装依赖,所以先安装unzip和gcc

yum install -y gcc unzip

源码安装前我们需要下载两个源码包,tcl源码包和expect源码包
下载tcl源码包

cd /tmp &&wget  http://core.tcl.tk/tcl/zip/release/tcl.zip

下载expect源码包

wget https://jaist.dl.sourceforge.net/project/expect/Expect/5.45.3/expect5.45.3.tar.gz

需要先编译安装tcl,因为expect包依赖于tcl。
解压压缩包并编译安装tcl

unzip tcl.zip && cd ./tcl/unix
./configure && make && make install

解压压缩包并编译安装expect.

cd /tmp && tar -xzvf expect5.45.3.tar.gz && cd expect5.45.3/
./configure && make && make install

检查是否安装好,查看到版本号就已经安装好了

expect -v

expect使用

使用参数:

  • -c:执行脚本前先执行的命令,可多次使用。
  • -d:debug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用exp_internal 1相似。
  • -D:启用交换调式器,可设一整数参数。
  • -f:从文件读取命令,仅用于使用#!时。如果文件名为"-",则从stdin读取(使用"./-"从文件名为-的文件读取)。
  • -i:交互式输入命令,使用"exit"或"EOF"退出输入状态。
  • –:标示选项结束(如果你需要传递与expect选项相似的参数给脚本时),可放到#!行:#!/usr/bin/expect --。
  • -v:显示expect版本信息。

常用命令:

  1. spawn shell命令
    # spawn ssh root@x.x.x.x
    # spawn是expect内部命令,开启ssh连接
  2. expect 提示信息
  3. send

举例说明:
给user10修改密码:

#!/usr/bin/expect	
	
spawn passwd user10	
expect "New password:"	
send "redhat\n"	
	
expect "Retype new password:"
send "redhat\n"	
	
expect eof

给多个服务器配置免密登录:

#! /bin/bash

current_path=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
# 在本地生成密钥对

if [ ! -e ~/.ssh/id_rsa ] || [ ! -e ~/.ssh/id_rsa.pub ]; then
        mkdir /ssh_bak &> /dev/null
        mv ~/.ssh /ssh_bak/.ssh-`date +%F-%T` &> /dev/null
	ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa &> /dev/null
fi

while read line 
do

sed -ir "/$line/d" ~/.ssh/known_hosts &> /dev/null

/usr/bin/expect << EOF
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$line
expect "(yes/no)?"
send "yes\r"

expect "password:"
send "$1\r"

expect eof
EOF

done < $current_path/ip.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值