目录
一、免交互概念
二、基本免交互例子
三、expect
四、实验演示
一、免交互概念
概念:对于shell脚本的自动化运维,就要实现免交互来达到自动化运维的效果
二、基本免交互例子
可以免交互统计出行号
1.命令行免交互统计
2.使用脚本免交互统计
3.使用免交互命令打印
4.免交互修改密码
5.重定向查看
6.重定向到指定文件
7.重定向直接指定文件
8.使用脚本完成重定向输入
9.免交互脚本完成赋值变量
10.关闭变量替换功能,按照原来样子输出
11.去tab键,无法去空格
12.注释打印,无法生效:批量注释
(1)脚本展示
(2)命令行展示
三、expect
expect:建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。
使用方法:表示捕捉关键词展示行
1.脚本解释器
(1)加入引用程序路径表示使用expect,表明使用这个shell
运行只能使用./运行,运行前赋权777
(2)嵌套使用
可以使用sh运行
2.expect符号:
n:表示换行符。
t:表示制表符。
r:表示回车符。
b:表示退格符。
3.执行命令
spawn 后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并跟踪后续交互信息。
例如:
3.send
向进程发送字符串,用于模拟用户的输入;该命令不能自动回车换行,一般要加r(回车)或者n
例子:
4.expect多分支
例子演示:ssh远程登录
5.结束符
expect eof:表示交互结束,等待执行结束,退回到原用户,与spawn对应
interact:执行完成后保持交互状态,把控制权交给控制台,会停留在目标终端而不会退回到原终端,interact后的命令不起作用
(1)expect(会在固定时间退回原先页面)
(2)interact(停留在操作页面)
6.set
expect 默认的超时时间是 10 秒,通过 set 命令可以设置会话超时时间,若不限制超时时间则应设置为-1。
例:set timeout 5
7.exp_continue
exp_continue 类似于控制语句中的 continue 语句。表示允许 expect 继续向下执行指令。
8.send_user
send_user 表示回显命令,相当于 echo。打印的功能
例子演示:
9.接收参数
expect 脚本可以接受从bash命令行传递的参数
使用[lindex $argv n]获得。其中n从0开始
例子演示:
四、实验演示
1.免交互预设值修改用户密码
2.su切换用户
3.创建用户并设置密码
4.实现 ssh 自动登录
5.怎么能够实现密码输入错误的提示
6.用免交互的方式给硬盘分区,格式化,挂载