《Linux运维实战:expect命令简单使用总结》



一、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运维实战总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值