文章目录
一、expect简介
免费的编程语言,主要用来实现自动和交互式任务通信。语言基于Tcl,作为一种脚本语言,语法非常简单,总之一句话,易上手。
二、常用命令
如下所示:
expect:expect内置一个命令用来接收返回的信息
send:当expect接收到匹配的信息后发送信息
set:定义一个变量
interact:执行完交互后保持当前的状态
spawn:启动一个新的进程
puts:输入字符串信息跟shell中的echo一个作用
proc:定义一个函数
argv:参数的位置从0开始,不包括脚本本身
argc:参数的总数
三、实例参考
3.1、通过expect脚本,实现ssh自动化连接
#!/bin/bash
ip="192.168.1.101"
username="root"
password="111111"
# 指定执行引擎
/usr/bin/expect <<EOF
set timeout -1
spawn ssh $username@$ip date
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$password\r" }
}
expect eof
EOF
3.2、利用shell循环执行expect脚本命令
vim a.exp
#!/usr/bin/expect
if { $argc != 2 } {
puts "usage: expect $argv0 ip command"
exit
}
set ip [lindex $argv 0]
set cmd [lindex $argv 1]
set password "111111"
spawn ssh root@$ip $cmd
expect {
"yes/no" {send "yes\r";exp_continue}
"*password:" {send "$password\r"}
}
expect eof
测试: expect a.exp 192.168.1.100 uptime
################################################################################################
vim a.sh
#!/bin/bash
if [ $# -ne 1 ];then
echo "USAGE:$0 cmd"
exit 1
fi
cmd=$1
for i in 101 102
do
expect a.exp 192.168.1.$i "$cmd"
done
测试 sh a.sh uptime
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结