linux 免交互
目录
一、免交互概念
二、基本免交互例子
三、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.用免交互的方式给硬盘分区,格式化,挂载



浙公网安备 33010602011771号