一、Shell循环:for
语法结构
如果是公司员工姓名
1.案例1:ping测试主机
优化脚本
2.案例2:通过用户列表文件创建用户
通过用户列表文件创建用户
升级
用户可以使用参数的形式,自定义用户名文件
如果用户没有输入用户名文件,提示用户输入
如果用户输入的不是文件,提示用户更正
启动循环创建用户
如果用户已经存在,提示存在
如果用户已经不存在,则创建成功,提示成功
3.案例3:使用for实现批量主机root密码的修改
注意:for和参数不要离太远,done后面需要再加一行空白
二、Shell循环: while until
特点:循环次数不一定是固定的
1.while语句结构(死循环/逐行处理文件)
实例:每秒显示一个数字,一次递增+1
退出程序三个命令
2.until语法结构
实例:每秒显示一个数字,一次递增+1
3.循环总结
三、expect
1.前言
观察ssh登录的交互现象,有点程序难以避免的需要交互,你该如何解决脚本和程序的交互问题?
2.名词解释
Expect是一个免费的编程语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect是一个用来实现自动交互的软件套件。使用它系统管理员可以创建脚本来实现对命令或程序提供输入,而这些命令和程序是期望从终端得到输入,一般来说这些输入都需要手工输入进行的,Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行,甚至可以实现简单的BBS聊天机器人
解决人机交互问题。
3.安装
4.实例1:通过expect解决ssh交互问题
4.1通过expect编写脚本
4.2登录验证免交互
如果想实现磁盘自动化,在spawn后加disk
5.实例2:expect实战,公钥推送
注备工作:安装expect,准备公钥
1.通过shell循环判断在线主机
2.通过expect进行交互
注意:
1.bash里是无法直接执行expect的,
2.运行expect用输入重定向,或者把它的内容单独写在文件里,让expect自己去调用
3.优化脚本
虚拟机环境重置