shell脚本第八章shell编程免交互

免交互:不需要人为控制就可以完成的自动化操作。

云计算中的免交互主要为自动化运维。

shell脚本和免交互是一个概念,但是两种写法。

 

 

Here Document :使用i/o重定向的方式,将命令的列表提供给交互式的程序或者命令。(是一种标准输入,只能接受正确的指令或者命令)
语法格式:
命令 << 标记 (可以自定义标记,不过通常用EOF)

注意事项:

1,标记可以使用任意合法字符,通常用EOF作为标记。

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

3,结尾的标记后面也不能有任何字符,包括空格。

4,如果开头的标记前有空格,这个空格会被自动省略。

cat结合免交互重定向输出到指定文件

cat <<EOF>> test.txt

Expect免交互:

tcl语言基础之上的一种工具,自动化测试和控制,在脚本中解决交互问题。

转义符:

\n:换行

\t:制表符,TAB

\r:回车

\b:删除键

基本命令格式:

#!/use/bin/expect

执行方式:

1,必须赋权执行 chmod777

2,bash,sh都不能用,只能用./执行

语法:

spawn 后面通常跟一个Linux的执行命令,表示开启一个会话,启动一个进程,并且会跟踪后续的交互性息

spawn passwd lisi

expect:捕获,捕获上一次执行的命令中是否包含指定的字符串,如果有,则立即返回,否则,等待超时之后,自动退出,默认超时时间,10秒

expect:只能捕获由spawn启动的进程输出

send:向进程发送字符串,用于模拟用户的输入。该命令不能自动回车,一般后面要加一个回车键:\r或者\n

第一种写法:

expect"密码” {send "abc123\r"}

第二种写法:

expect “密码”

send "abc123\r"

第三种写法:

expect

{

"密码1"{send"abc123\r}

"密码2"{send"abc123\r}

"密码3"{send"abc123\r}

}

只要匹配到其中一个情况,执行相应的send语句,然后就会退出expect语句。

结束符:

expect eof

会切换回之前的终端

interact

留在当前的终端不变

set:可以设置超时等待时间,默认为10秒

set timeout 5

例题:免交胡实现修改密码

vim passwd.sh

#!/usr/bin/expect

set timeout 5

spawn passwd lisi

expect “新的密码”

send “abc123\r”

expect “重新输入新的密码”

send “abc123\r”

expect eof

chmod 777 passwd.sh

exp_continue

可以在expect判断之后,继续匹配expect捕获的其他内容,类似于脚本中的continue,表示允许继续向下执行指令。

exp_continue :结束语句不能直接使用expect eof

书写格式:

expect {

"(yes/no)"{send"yes\r;exp_continue}

"password" {send"123\r"}

}

send_user :回显信息,相当于echo跟上后面用户想要输出的内容

send_user ok

接收参数:类似于shell当中的位置变量 $1 $2

set hostname [lindex $ argv 0]$1

set password [lindex $ argv 1] $2

set user [lindex $argv 0]

set passwd [lindex $argv 1]

spawn su - $user

expect "密码"

send "$passwd\r"

expect "$"

send_user "普通用户"

expect "#"

send _user "管理员"

小作业,看能不能实现判断a

shell嵌入式执行系统密码

嵌入执行模式有一个问题:如果涉及到终端切换,最好就不要用嵌入模式了

 

设定一个脚本实行自动远程连接:

 

参的方式实现自动远程登录(如果连接被绝或者主机不存在):

 

 

作业:

用免交互的方式给硬盘分区,格式化,挂载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值