Shell脚本之免交互

一、here document免交互

——对文本内容进行操作

(1)格式:

命令 <<标记

内容

标记

注意事项:

1、标记可以使用任意的合法字符。合法字符指字母和数字,一般不使用特殊符号;常以字母开头EOF

2、结尾标记一定要顶格写,且在结尾标记前不能有任何字符,空格也不行

3、开头标记前一般没有任何字符。开头标记可以加空格,但会被自动省略cat

命令含义格式
cat

对文件内容进行免交互操作

cat <<EOF>文件名

内容

EOF

tee

本身具有标准输出的作用,可以直接把文件内容输入到文件中

tee 文件名 <<EOF

内容

EOF

(2)cat

赋值单个变量

赋值整体变量

(3)tee

赋值单个变量

赋值整体变量

二、expect免交互

——解决shell脚本中的交互问题

注意事项:

1、需要安装expect

2、必须声明注释器   #!/usr/bin/expect

3、必须赋权执行   

chmod 777 test.sh

./test.sh      ./opt/test.sh      .sh

(1)常用的转义字符

\n 换行(回车键)

\t 制表符(tab键)

\r 回车

\b 退格符(backspace键)

(2)格式

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

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

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

结束符:

expect eof   交互结束。等待执行结束,退回到原来的用户(默认等待时间是10s)—退回之前的终端

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

格式1

spawn 命令

expect “捕获匹配的内容” {send "用户输入的内容\r"}

expect eof

    格式2

spawn 命令

expect “捕获匹配的内容”

send "用户输入的内容\r"

expect eof

格式3

spawn 命令

expect {

“捕获匹配的内容1” {send "用户输入的内容\r"}

“捕获匹配的内容2” {send "用户输入的内容\r"}

“捕获匹配的内容3” {send "用户输入的内容\r"}

“捕获匹配的内容4” {send "用户输入的内容\r"}

}

expect eof

三、set定义变量或设置参数

(1)格式

set hostname [ lindex $argv 0 ]

相当于hostname=$1  #位置变量

set passwd [ lindex $argv 1 ]

相当于passwd=$2  #位置变量

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

格式:

expect {

 “connecting (yes/no)?” {send “yes\r”;exp_continue;}

}

(2)send_user

send_user回显命令,跟echo一样,打印内容

1、免交互实现用户修改密码

2、传参方式实现修改密码

四、嵌入式执行模式

—将expect免交互过程和shell结合起来

涉及到终端切换的方式不建议使用嵌入式执行。例如:ssh或su

不需要交互的命令可以放在expect外面执行

例题:使用免交互的方式实现硬盘分区、格式化、挂载、挂载目录也要创建好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值