也就是不需要进入到文件内部,可以在文件外对文件内容进行操作
sed
awk
对文本内容进行免交互:
here document :
对文本内容进行操作,是标准输入的替代品
格式:
命令 <<标记
内容
标记
命令:linux命令
注意事项:
- 标记可以使用任意合法字符(字母,数字,一般不使用特殊符号),一般使用EOF为标记。
- 结尾标记一定要顶格写,且在结尾的标记前不能有任何字符(包括空格)。
- 开头标记前的空格会自动省略,一般不加。
在文本中追加和输入内容:
tee :
本身就有标准输出的作用,可以直接输入内容到文本
expect免交互:
自动化控制和测试,解决shell脚本中的相关交互问题
expect是建立在tcl语言中的工具(使用前要声明)
执行方式:只能赋权执行
常用的转译字符:
\n :换行
\t :制表符,就是tab键
\r :就是回车
\b :退格符
格式
spawn:在后面一般添加linux命令,表示开启会话或者进程
跟踪后续信息
spawn passwd root
expect :捕获命令相关内容,字符串匹配
send
发送指令,模拟用户输入
方式1:
expect “密码” { send “123456\r” }
方式2:
expect “密码”
send “123456\r”
(换行写不需要花括号)
方式3:
expect
{
“密码1” { send “123456\r” }
“密码2” { send “123456\r” }
“密码3” { send “123456\r ”}
}
结束符
expect eof
表示免交互结束,等待执行结束,退回原来的用户(终端)
exprct默认等待时间10s
interact
执行完成之后保持状态,把控制权交给控制台,然后停留在目标终端,不会退回
set
定义变量,设置参数
set timeout 5
exp_continue
和expect命令一起使用,继续向下执行指令,接着捕获其他选项,是附加在expect判断项之后
格式:
expect {
“connecting (yes/no)?” {send “yes\r” ; exp_continue;}
}
expect
send_user
回显命令,和echo一样,打印内容
利用免交互更改密码:
切换用户,传参的方式
嵌入执行:
将expect免交互的过程和shell结合起来
例如ssh,su等命令,会涉及到终端切换,不建议使用嵌入式执行
/usr/bin/expect <<-EOF
开启执行expect,但是仅限于嵌入式
实现ssh自动登录
传参方式执行: