shell之expect应答语句(用shell脚本实现获取批量主机存活信息)(代码片段)

Tuki_a Tuki_a     2023-02-22     170

关键词:

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这个动... 查看详情