栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

使用expect程序解决交互式问题

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用expect程序解决交互式问题


一、expect简介


        expect是LINUX系统中用来实现自动化控制和测试的软件工具,作为Tcl脚本语言的一个扩展应用在交互式软件中,如Telnet、FTP、SSH等。

        执行shell脚本,需要从终端得到输入时(如ssh root@192.168.1.2),Expect可以根据提示,模拟标准输入来实现交互脚本执行,可以把shell和expect理解为两种不同的脚本语言,expect有独自的语法、变量。

二、expect用法 1、常用的命令:
  • spawn:调用程序
  • send:发送需要交互的命令;
  • expecct:捕获相关内容;
  • interact:保持交互状态,不会退出;
  • expect eof:结束expect匹配;
  • exp_continue:表示当前问题不存在时,继续回答下一个问题;
2、使用方法

通过一个例子来说明各个参数的使用方法;

例一:A远程登录到B服务器上什么都不做;

代码实现:

#!/usr/bin/expect
# 开启一个程序
set timeout 5 设置超时时间
spawn ssh root@10.1.1.1
# 捕获相关内容
expect {
        "(yes/no)?" { send "yesr";exp_continue }
        "password:" { send "*******r" } // password 不同的操作系统,显示不一样,根据实际情况写
}
interact   //交互,不会退出

expect eof // 结束expect,

expect中的变量用法

#!/usr/bin/expect
set IP 10.1.1.2   //定义变量IP
set PASS 123456   //定义变量PASS
set timeout 5     //超时时间
spawn ssh root@$IP
expect {
	"yes/no" { send "yesr";exp_continue }
	"password:" { send "$PASSr" }
}
interact

结合shell脚本使用 

例二:shell脚本和expect结合使用,远程登陆到对台服务器上。

        在大多数的生产环境中,对服务器都做了安全加固,通过sshuse用户登录,再切换到root用户,当然root用户一般不会给你使用,这里只是做个实验 

#!/bin/env bash
#在这里使用whlie语句来实现循环控制
#新建一个ip_list文件,用来存放设备的ip和password,由于我的所有机器密码都是相同的,所以这里只存放IP地址

ip_list=/tmp/shell/ip_list
#
while read ip
do
        /usr/bin/expect <<-END
        set timeout 10
        spawn ssh sshusr@$ip
        expect "(yes/no)" { send "yesr";exp_continue }
        expect "*assword:" { send "******r"}
        expect "$"
        send "su - rootr"  //登录root用户
        expect "(yes/no)" { send "yesr";exp_continue }
        expect "*assword:" { send "*******r" }
        expect "#" //捕获#
        send "mkidr  /tmp/ceshir"    //发送相关的指令 
        expect eof        //退出expect匹配;
        END
done < $ip_list

可以通过send命令来完成想要实现的操作命令,非常的方便,提高工作效率;

3、总结

         expect在运维的工作中,使用起来还是很方便的,能够节省大量的时间和避免重复性劳动。想要学好expect使用方法,还需要多学习,深入了解。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号