shell免交互

免交互:

也就是不需要进入到文件内部,可以在文件外对文件内容进行操作

sed 改 新增

awk 按行取列

here document 免交互

对文本内容进行操作:标准输入的替代品

语法格式:

命令 <<标记

内容

标记

命令:linux命令

注意事项:

1.标记可以使用任意合法字符。(字母和数字,一般不使用特殊符号,以字母为开头。EOF)

2.结尾的标记一定要顶格写,而且在结尾的标记前面不能有任何字符。(空格也不能有)

3.开头的标记可以加空格,但是会被自动省略(开头标记前,一般也没有空格)

免交互方式实现对行数的统计,将要统计的内容置于标记“EOF”之间,直接将内容传给 wc -l 来统计

通过 read 命令接收输入并打印,输入值是两个 EOF 标记之间的部分,作为变量 i 的值

免交互修改用户密码

免交互输出指定内容

免交互直接打印

在写入文件时会先将变量替换成实际值,再结合cat命令完成写入

整体赋值给变量

结果显示

关闭传参(加上引号)

结果显示

消除tab键打开的空格

结果显示

多行注释,没有任何结果

expect免交互

自动化控制和测试,解决shell脚本中交互的问题

expect建立在tcl语言基础上的工具

得先安装expect(yum -y install expect)

使用expect

得先声明:#!/usr/bin/expect

执行方式:sh bash

必须赋权执行

.sh

./test.sh

/opt/test.sh

常用的转义符:

\n:相当与换行,回车

\t:制表符,相当于tab键

\r:就是回车

\b:退格符

spawn

spawn后面一般都是linux的命令,表示开启会话或者进程跟踪后续的交互信息

例:spawn passwd root

expect

捕获

捕获命令的相关内容,字符串匹配

send

发送指令,模拟用户的输入

方法一:

expect “密码” {send”123456\r”}

写在一行必须要用花括号括起来

方法二:

expect “密码”

send “123456\r”

换行写不需要花括号

方法三:多分支匹配

expect

{

“密码1” {send “123456\r”}

“密码2” {send “123456\r”}

“密码3” {send “123456\r”}

}

结束符:

expect eof  

表示交互结束,等待执行结束,退回到原来的用户

expect默认等待时间10s

(退回之前的终端)

Interact

执行完成之后保持状态,把控制权交给控制台,然后停留在目标终端,不会退回原终端

注意点:这两个结束符只能二选一

set

定义变量,设置参数

set 命令可以设置会话超时时间

例:set timeout 5

exp_continue

和expect捕获命令结合一起使用,附加在expect判断项之后,匹配到expect的捕获内容之后,还能够继续判断expect捕获语句当中的其它选项

例如:下例将判断交互输出中是否存在 yes/no 或 *password。如果匹配 yes/no 则输出 yes 并再次执行判断;如果匹配 *password 则输出 abc123 并结束该段 expect 语句。

expect免交互修改密码

vim passwd.sh

结果显示

expect免交互切换用户

嵌入执行,将expect免交互的过程和shell结合起来

ssh su 会涉及到终端切换,不建议使用嵌入式执行

创建用户并设置密码

expect免交互实现ssh登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值