expect知识梳理
1 expect
expect软件用于实现非交互式操作,实际应用中常用于批量部署,可以帮助运维人员管理成千上万台服务器.
expect实现非交互式操作主要是在程序发出交互式询问时,按条件传递程序所需的字符串,如询问yes/no时自动传递yes或no,或询问密码时传递已定义好的密码,这样实现了非交互操作.
1.1 expect安装
推荐使用yum安装,方便快捷,自动解决依赖问题;如果手动编译,需同时安装expect和tcl软件.
安装省略,直接yum安装expect即可.
1.2 expect脚本中经常使用的命令及说明
| 命令 | 说明 |
| set timeout NUM | 设置超时时间,NUM是数字,单位是秒. |
| expect | 进入expect环境下 |
| spawn |
expect软件中的监控程序,监控后面程序/命令发出的交互式询问, spawn是expect环境下的内部命令. |
| send | 发送已定义的字符串或数字密码给程序,完成交互式操作 |
| "string\r" |
表示发送string字符串后执行回车操作,程序之间的交互一般使用 "\r" |
| "string\n" |
使用"string\n"表示发送指定的字符串后,并输出内容到终端, 方便用户查看结果. |
| exp_continue |
若问题不存在则继续下一步,回答下面的问题. 注意此项不能加在expect发送自动应答中的最后一项,否则报错. |
| expect eof |
当发送自动应答完毕后,退出expect环境 |
| interact |
当发送自动应答完毕后,停留在程序交互界面 |
| set NAME [lindex $argv 0] |
定义expect环境下的变量,类似shell中传参$1,$2,... 0代表发送自动应答传递的第一个参数, |
1.3 expect结合shell脚本实现主机批量互信
ssh-copy-id非交互式传递公钥到其他主机,实现互信:
[root@test ~]# ssh-keygen #<==回车创建rsa
[root@test ~]# mkdir /server/scripts -p
[root@test ~]# cd /server/scripts/
[root@test scripts]# cat auto_ssh-copy-id.exp #<==expect脚本需以.exp后缀结尾并添加x权限执行
#!/usr/bin/expect set timeout 10
set host [lindex $argv 0]
set passwd [lindex $argv 1]
spawn ssh-copy-id $host
expect {
"(yes/no)?"
{
send "yes\n"
expect "*assword:" { send "$passwd\n"}
}
"*assword:"
{
send "$passwd\n"
}
}
expect eof
######用法: ./auto_ssh-copy-id.exp user@host password
[root@test scripts]# chmod +x auto_ssh-copy-id.exp
[root@test scripts]# ./auto_ssh-copy-id.exp root@10.0.0.11 123456
[root@test scripts]# ssh root@10.0.0.11
Last login: Mon Nov 25 20:55:46 2019 from 10.0.0.253
expect结合shell脚本实现批量互信:
[root@test scripts]# pwd
/server/scripts
[root@test scripts]# vi autossh.sh
[root@test scripts]# cat autossh.sh
#!/bin/sh passwd=123456
user_host=`awk '{print $3}' ~/.ssh/id_rsa.pub` for i in $@
do
/server/scripts/auto_ssh-copy-id.exp $i $passwd >&/dev/null
ssh $i "grep "$user_host" ~/.ssh/authorized_keys" >&/dev/null
if [ $? -eq 0 ];then
echo "$i is successful"
else
echo "$i is failed"
fi
done
[root@test scripts]# chmod +x ./autossh.sh
[root@test scripts]# ls
auto_ssh-copy-id.exp autossh.sh
######用法: /server/scripts/autossh.sh user@host
[root@test scripts]# ./autossh.sh root@10.0.0.70
root@10.0.0.70 is successful
[root@test scripts]# ssh root@10.0.0.70
Last login: Mon Nov 25 21:07:32 2019 from 10.0.0.11
expect知识梳理的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
随机推荐
- Greedy Gift Givers 贪婪的送礼者 USACO 模拟
1002: 1.1.2 Greedy Gift Givers 贪婪的送礼者 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 9[提交] [状态] [讨论版] [命题人:外部导入 ...
- SQLiteOpenHelperde的oncreate方法
main中
- 详细解析Redis中的布隆过滤器及其应用
欢迎关注微信公众号:万猫学社,每周一分享Java技术干货. 什么是布隆过滤器 布隆过滤器(Bloom Filter)是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构,它可以告 ...
- excel中为什么不显示单引号
解决:打两个就可以了!因为:一个单引号表示该单元格为文本属性.
- python 找到项目使用的所有组件和版本
1.下载模块 pip3 install -i https://pypi.douban.com/simple pipreqs 2.生成文件 pipreqs ./ --encoding=utf-8
- 【WPF学习】第十三章 理解路由事件
每个.NET开发人员都熟悉“事件”的思想——当有意义的事情发生时,由对象(如WPF元素)发送的用于通知代码的消息.WPF通过事件路由(event routing)的概念增强了.NET事件模型.事件路由 ...
- 《ASP.NET Core 高性能系列》关于性能的闲聊
一.通常的性能问题类型 让我们一起看看那些公共的性能问题,看看他们是或者不是.我们将了解到为什么我们常常在开发期间会错过这些问题.我们也会看看当我们考虑性能时语言的选择.延迟.带宽.计算等因素. 二. ...
- 整理OD一些快捷键和零碎知识点
第一次记录:2019.9.15 完成了近期基本知识点的记录 第二次记录:2019.9.16 更新VB和的Delphi的汇编代码特点 介绍几个快捷键: Alt+B 断点编辑器,空格键可切换断点状态 ct ...
- Educational Codeforces Round 81 (Rated for Div. 2) B. Infinite Prefixes
题目链接:http://codeforces.com/contest/1295/problem/B 题目:给定由0,1组成的字符串s,长度为n,定义t = sssssss.....一个无限长的字符串. ...
- kivy file import
from kivy.app import Appfrom kivy.uix.boxlayout import BoxLayoutfrom kivy.properties import ObjectPr ...