首页 > 生活 > 娱乐

shell编程基本知识(shell编程-Expect)

时间:2023-01-08 13:55:18 作者: 阅读:0

shell编程基本知识?[root@qfedu ~] yum -y install expect是一个免费的编程工具, 用来实现自动的交互式任务, 而无需人为干预. 说白了 expect 就是一套用来实现自动交互功能的软件,我来为大家讲解一下关于shell编程基本知识?跟着小编一起来看一看吧!

shell编程基本知识(shell编程-Expect)

shell编程基本知识

No.1 expect的安装

[root@qfedu ~] yum -y install expect

No.2 expect的语法-------通过expect可以实现将交互式的命令变为非交互式执行,不需要人为干预(手动输入)

是一个免费的编程工具, 用来实现自动的交互式任务, 而无需人为干预. 说白了 expect 就是一套用来实现自动交互功能的软件

在实际工作中我们运行命令、脚本或程序时, 都需要从终端输入某些继续运行的指令,而这些输 入都需要人为的手工进行. 而利用 expect 则可以根据程序的提示, 模拟标准输入提供给程序, 从而实现自动化交互执 行. 这就是 expect

如果能够在工作中熟练的使用shell脚本就可以很大程度的提高工作效率, 那么再搭配上expect这个时候很多工作都可以实现自动化进行。

用法: 1)定义expect脚本执行的shell #!/usr/bin/expect -----类似于#!/bin/bash 2)set timeout 30 设置超时时间30s 3)spawn spawn是执行expect之后后执行的内部命令开启一个会话 #功能:用来执行shell的交互命令 4)expect ---相当于捕捉 功能:判断输出结果是否包含某项字符串(相当于捕捉返回的结果),没有则会断开,否则等待一段时间后返回,等待通过timeout设置 5)send 执行交互动作,将交互要执行的命令进行发送给交互指令,命令字符串结尾要加上“\r”,#---相当于回车 6)interract 执行完后保持交互状态,需要等待手动退出交互状态,如果不加这一项,交互完成会自动退出 7)exp_continue 继续执行接下来的操作

实战非交互式ssh连接:

案例1:普通操作 [root@qfedu script]# vim expect01.sh #!/usr/bin/expect spawn ssh root@192.168.246.115 expect { "yes/no" { send "yes\r"; exp_continue } "password:" { send "1\r" }; } interact [root@qfedu script]# chmod x expect01.sh [root@qfedu script]# ./expect01.sh spawn ssh root@192.168.246.115 root@192.168.246.115's password: Last login: Fri Aug 28 16:57:09 2019 #如果添加interact参数将会等待我们手动交互进行退出。如果不加interact参数在登录成功之后会立刻退出。 ============================================================================ 2.设置变量与进行传参的方式 #注意:expect环境中设置变量用set,识别不了bash方式定义的变量 [root@qfedu script]# vim expect01.sh #!/usr/bin/expect set user root set pass 1 set ip [ lindex $argv 0 ] #expect固定写法,从0开始,第一个位置参数,相当于shell中的$1 set timeout 10 spawn ssh $user@$ip expect { "yes/no" { send "yes\r"; exp_continue } "password:" { send "$pass\r" }; } interact [root@qfedu script]# ./expect01.sh 192.168.246.115 spawn ssh root@192.168.246.115 root@192.168.246.115's password: Last login: Fri Aug 28 07:13:57 2019 from 192.168.246.135 #如果想登录成功自动结束交互模式也就是expect,可以采用下面方式: expect "#" send "useradd test\r" send "pwd\r" send "exit\r" expect eof #直接退出expect模式 ============================================================================ 3.进行批量推送公钥实现免密连接,ping通一个ip地址连接一个ip------!!!!扩展 [root@qfedu script]# vim getip_push.sh #!/usr/bin/bash pass=1 #判断expect命令是否安装 rpm -qa expect &> /dev/null if [ $? -ne 0 ];then yum install -y expect fi #判断主机下面是否生成秘钥,如果没有生成秘钥 if [ ! -f ~/.ssh/id_rsa ];then ssh-keygen -P "" -f ~/.ssh/id_rsa fi #循环执行获取up状态的ip地址。 for i in {2..254} do { ip=192.168.198.$i ping -c1 $ip &> /dev/null if [ $? -eq 0 ];then echo "$ip" >> up_ip.txt set timeout 10 /usr/bin/expect <<-EOF #shell脚本中调用expect命令 spawn ssh-copy-id $ip expect { "yes/no" { send "yes\r"; exp_continue } "password:" { send "$pass\r" }; } expect eof EOF fi } & wait done echo "finish..." [root@qfedu script]# chmod x getip_push.sh [root@qfedu script]# ./getip_push.sh 测试....

,

图文新闻

相关文章

热门资讯

评论

1111111

更多推荐

你的电脑会弹广告吗(粉丝朋友财务电脑)
你的电脑会弹广告吗(粉丝朋友财务电脑)

一粉丝加我,叫我处理金蝶财务软件 ,顺便帮他处理下弹屏广告。 开机就这样,也是烦人 电脑 也装了360,也阻止

2023-01-08
mongodb的安装及使用(mongodb安装步骤)
mongodb的安装及使用(mongodb安装步骤)

#头条创作挑战赛# 背景MongoDB 是由C 语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的

2023-01-08
shell编程基本知识(shell编程-Expect)
shell编程基本知识(shell编程-Expect)

shell编程基本知识?[root@qfedu ~] yum -y install expect是一个免费的编程工具, 用来实现自动的交互式任务, 而无需人为干预.

2023-01-08
华为鸿蒙系统怎么看电池寿命(华为鸿蒙系统查看电池最大容量)
华为鸿蒙系统怎么看电池寿命(华为鸿蒙系统查看电池最大容量)

华为鸿蒙系统可在系统—设置—更多电池设置里查看当前电池的最大容量,所谓最大容量就是电池当前的损耗百分比,数值越高说明你的电

2023-01-08
dnf剑帝各个版本强度(924新版本剑帝登临国服第一)
dnf剑帝各个版本强度(924新版本剑帝登临国服第一)

大家好,我是钢丝侠,今天我来分析剑帝国庆版本选择以及后顾。 剑豪在国庆版本中得到大加强,这里我给想要起一个剑帝的玩家做一些

2023-01-08
手机使用八大问题(功能手机使用中的常见问题及解决方法)
手机使用八大问题(功能手机使用中的常见问题及解决方法)

手机使用八大问题?由于我国人口基数大,老年人多很多老年人年龄大,身体原因而不能使用智能手机,很多老年人的子女就会给自己的爸妈购

2023-01-08
换什么手机屏幕不容易破(身边自从有了它)
换什么手机屏幕不容易破(身边自从有了它)

在人们越来越依赖手机的今天,如果捧在掌心里的“小宝贝”有个什么磕磕碰碰简直比失恋还要伤心。尤其是脆弱的触摸屏,堪称是手滑党

2023-01-08
专业的录音软件有哪些(录音从未如此简单)
专业的录音软件有哪些(录音从未如此简单)

嘿Siri,新录音。 录音机 - 专业录音软件“随身录” 带有全新UI界面的录音机 - 专业录音软件“随身录”最近更新到12

2023-01-08
使用springcloud实战微服务(SpringCloud四十三)
使用springcloud实战微服务(SpringCloud四十三)

  在日常生活中,邮件已经被聊天软件、短信等更便捷的信息传送方式代替。但在日常工作中,我们的重要的信息通知等非常有必要去归

2023-01-08
航发动力趋势(航发动力研究报告)
航发动力趋势(航发动力研究报告)

(报告出品方/作者:德邦证券,倪正洋,杨英杰)1.军用航空发动机领域唯一整装上市平台 1.1.四大主机厂先后注入 公司是国内唯一能

2023-01-08
返回顶部