免交互:不需要人为控制就可以完成的自动化操作(自动化运维)
shell脚本和面交互是一个概念,但是两种写法
shell:默认解释器是bash
使用i/o(输入/输出)重定向的方式,将命令的列表提供给交互式的程序或者命令
cat read 是一种标准输入,只能接受正确的指令或者命令
格式
注意事项
1.标记可以使用人以合法字符(通常用EOF)
2.结尾的标记一定要顶格写,前面不能有任何字符
3.结尾的标记后面,也不能有任何字符,包括空格
4.如果开头的标记前有空格,这个空格会被自动省略
cat结合免交互实现重定向输出到指定文件
去掉每行之前的tab字符
多行注释(#就是不注释)
Expect 需要自动安装
tcl语言基础之上的一种工具,自动化测试和控制,在脚本中解决交互的问题
转义符:\n 换行 \t制表符,tab键 \r回车 \b退格键,就是删除键
基本命令格式
语法
spawn后面通常跟一个linux的执行命令,表示开启一个会话,启动一个进程,并且跟踪后续的交互信息
expect,捕获,上一次执行的命令中,是否包含指定的字符串,如果有立即返回,否则等待超时,自动退出(默认超时时间为10s)
expect 只能捕获由spawn启动的进程输出
send 向进程发送字符串,用于模拟用户的输入,该命令不能自动回车,一般后面加一个回车键:\r 或者\n
第一种写法
第二种写法
第三种多分支结构
只要匹配其中一个情况,执行相应的send语句,然后退出
expect
结束符:expect eof:会切换回之前的终端
interact 留在当前终端不变
set 设置超市等待时间,默认是10s
set timeout 5 -1()则表示永不超时
面交互实现修改密码
expect_continue 可以在expect判断之后,继续匹配expect,捕获的其他内容,类似于脚本中continue,表示允许继续向下执行指令
send_user 会先信息,相当于echo跟上用户想要输出的内容
接收参数:类似于shell当中的位置变量$1 $2
嵌入执行模式:有一个问题:如果涉及终端切换,最好不要用嵌入模式
创建用户密码
ssh远程登陆