关键词:
expect应答语句
我们写脚本的目的就是为了自动执行,但是有些命令需要输入参数才可以执行,比如ssh远程连接时,会要求输入密码,输入成功才可以执行后面的操作,有时还需要先输入yes认证完再输入密码,那这种情况怎么办呢?就需要用到expect应答脚本。
我们需要expect根据问题问什么来进行回答。就是提前告诉expect可能会遇到什么问题,遇到哪个问题应该怎么回答。
注意expect需要下载才可使用!
实例
要求
检测 192.168.187.131-192.168.187.140主机是否开启,如果正常请生成解析列表 hosts_list,
格式如ip 主机名称
例如: 192.168.187.131 为开启状态主机名为haha,hosts_list 中出现192.168.187.131 haha
代码
#!/bin/bash
host()
/usr/bin/expect <<EOF
spawn ssh -l root 192.168.187.$i hostname #先ssh然后执行hostname
expect
"yes" send "yes\\r";exp_continue #遇到问题的关键词里有yes的回答yes
"password" send "westos\\r" #遇到问题的关键词里有password的回答登陆密码westos
expect eof
EOF
for i in 131..140
do
ping -c1 -w1 192.168.187.$i &> /dev/null && #主机存活才会去ssh
echo 192.168.187.$i is up
echo -e "192.168.187.$i\\t`host $i | sed -n '$p'`" >> /lucky/host_list
#-e \\t是输出一个tab
#host是执行上边定义的函数并传参
#sed -n '$p'是输出最后一行
#主机信息追加到/lucky/host_list中
||
echo 192.168.187.$i is down
done
执行效果
我只开了一台,效果如下,执行成功!
主机信息记录成功!
shell之expect应答语句(用shell脚本实现获取批量主机存活信息)(代码片段)
expect应答语句我们写脚本的目的就是为了自动执行,但是有些命令需要输入参数才可以执行,比如ssh远程连接时,会要求输入密码,输入成功才可以执行后面的操作,有时还需要先输入yes认证完再输入密码ÿ... 查看详情
自动化运维脚本语言之expect实践学习
一、expect简介expect是一种简单的基于Tcl的脚本语言工具,一个可实现自动交互功能的软件套件,其功能就是进行自动化的人机交互;也能够按照脚本内容里面设定的方式与交互式程序进行“会话”的程序,根据脚本内容expect可以... 查看详情
运行linux脚本,遇到要按回车键,怎么让它自动应答,继续运行脚本?
...密码:#echo"123456\\n123456\\n"|passwduser 利用expect实现自动应答,也不难,你从网上搜一下追问不行阿,我意思是运行脚本它要按回车才会继续下一步,能让它自动应答继续下一步吗?命令是ssh密钥对生成的时候要回... 查看详情
shell——随机数(random)+expect自动应答(代码片段)
文章目录RANDOM示例示例1示例2expect自动应答使用示例RANDOMbash默认有一个$RANDOM的变量默认是0~32767。使用set|grepRANDOM查看上一次产生的随机数产生0~1之间的随机数echo$[$RANDOM%2]产生0~2之间的随机数echo$[$RANDOM%3]产生0~3之间的随机数echo$[... 查看详情
shell执行流控制语句实例详解(代码片段)
...件判断语句5、case应答语句6、continue/break/exit终止条件7、expect交互应答语句1、for循环语句for语句的作⽤为循环执⾏指定动作,其语句结构如下:for定义变量do使⽤变量,执⾏动作done结束标志 查看详情
shell脚本expect实现自动登陆
viauto_ssh.exp#!/usr/bin/expect setipaddress"123.227.159.159"setpasswd"你的密码"settimeout30 spawnssh[email protected]$ipaddress expect{"yes/no"{send"yes ";exp_continue}"password"{sen 查看详情
shel脚本-初步入门之《02什么是shell脚本》(代码片段)
...初步入门-什么是Shell脚本2、什么是Shell脚本当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,改程序就被称为Shell脚本。如果在Shell脚本里内置了很多条命令、语句及循环控制,然后将这些命令一次性执行... 查看详情
要在一台主机上执行shell脚本判断另一台上的某个文件是不是存在,这个shell语句该怎么写?
...主机上有相应的服务来监听并应答从远端发出的指令了,expect可以做到通过ssh登陆到目标主机执行相应指令并返回当然,第二种方式有很多的选择,例如通过http或sokect,但是完全用shell写可能比较难以实现 参考技术B首先,你要设... 查看详情
shell从入门到精通shell脚本几种运行方式的区别
...使Shell读入指定的Shell脚本文件并依次执行文件中的所有语句。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。用法:sourcefilename或.filenamesourcefilename与shfilename及./filename执行脚本的区别... 查看详情
expect小脚本
简介:Expect可以替系统管理员完成与系统的交互式操作shell>yum-yinstallexpect#可以通过yum安装shell>whichexpect#路径/usr/bin/expect例一:shell>catlogin.exp#!/usr/bin/expectspawnssh[email protected]192.168.1.81;expect{"(yes/ 查看详情
linux。shell脚本:判断y/n,以及有默认值,直接回车的shell语句是啥?
...采纳 参考技术B用到有交互的环境,可以试试在主机上装expect工具,很好用的,我以前做巡检的时候,几十台主机都是用expect脚本来完成。expect的语法和shell的很相近,很容易理解。可以参考:http://steven607.bokee.com/v 查看详情
shell脚本之循环语句(forwhileuntil)(代码片段)
...、echo命令二、查看当前系统的时间—date命令三、for循环语句四、while循环语句结构(迭代)五、until循环语句结构六、continue和break一、echo命令 echo-n表示不换行输出 echo-e输出转义字符,将转义后的内容输出到屏幕上转义符... 查看详情
expect自动应答
expect脚本 1.expect简介 expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。 expect(自动应答) 基于TCL(ToolCommandLanguage)语言演变而来 expect中最关键的四个命令是: send:用于向进程... 查看详情
1-23-shell脚本之-if流程控制语句和for循环语句的使用
大纲:1、逻辑判断2、if流程控制语句3、for循环控制语句 ----------------------------------------------在开始之前,先了解一下逻辑判断符号:&&与、||或、!非A&&B 必须A,B同时成立,才能通过判断--->判断流程:先执... 查看详情
悄悄用shell加expect搞定繁重任务,和女神约会去(代码片段)
任务:1、主机存活检查脚本用for和while两种方式,读取hostip.txt主机清单,实现显示主机存活状态。第一种方法:for循环,适用场景,主机数较少。1)创建主机列表文件2)编辑脚本:#!/bin/bashLIST... 查看详情
expect的使用(代码片段)
...变量定义:setvarvalue eg:setpasswd "1234"打印expect脚本信息,可用send_user、puts用法类似shell中echo[[email protected]expects]#catvar.exp#!/usr/bin/expectsetpasswd"1234"puts$passwdsend_user"$passwd"[[email protected]expects]#expectvar.exp12341234[[e... 查看详情
linux之expect命令(代码片段)
Linux之expect命令expect工具介绍基本语法expect使用自动登录ssh执行命令在shell中嵌套expectexpect工具介绍expect命令介绍:expect工具是一个根据脚本与其他交互式程序进行交互。通过在脚本中设定期望值和响应值进行交互操作。主要... 查看详情
shell中expect使用
我写了一个shell脚本,如下:#!/bin/shexpect<<!spawnsuexpect"Password:"send"pwd"touchfile1expecteof!由于shell脚本是在User下执行,现在我希望在脚本中做的是切到root下,然后创建一个file现在问题是,它不会执行touchfile1这个动... 查看详情