Shell脚本攻略:expect脚本免交互

目录

目录

一、理论

1.Here Document

2.expect实现免交互

二、实验

1.实验一

2.实验二

3.实验三

4.问题


一、理论

1.Here Document

(1)概念

Here Document也被称为here-document/here-text/heredoc/hereis/here-string/here-script,在Linux/Unix中的shell中被广泛地应用,尤其在于用于传入多行分割参数给执行命令。除了shell(包含sh/csh/tcsh/ksh/bash/zsh等),这种方式的功能也影响和很多其他语言诸如Perl,PHP以及Ruby等。这篇文章以bash为例进行使用说明。


(2)使用方式和限制

使用格式如下所示:

命令 << 分隔串(最为常见的为EOF)
字符串1
…
字符串n
分隔串

使用限制:

分割串常见的为EOF,但不一定固定为EOF,可以使用开发者自行定义的,比如LIUMIAO
缺省方式下第二个分割串(EOF)必须顶格写,前后均不可有空格或者tab
缺省方式下第一个分割串(EOF)前后均可有空格或者tab,运行时会自动剔除,不会造成影响

(3)基本用法

统计行

read

添加密码    EOF(合法字符)

cat实现查看和重定向输出到指定文件

外部免交互

停止外部免交互


 

(4)<<- 与 <<的区别

使用<<-代替<<唯一的作用在与分割串所扩起来的内容,顶格的tab会被删除,用于ident。

 去掉每行的tab字符(空格键无效)

不输出

2.expect实现免交互

(1)概念

建立在tcl(tool command language)语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互的相关问题,使用前需要安装(yum install  -y expect)。

(2)expect基本命令

命令功能
脚本解释器expect 脚本中首先引入文件,表明使用的是哪一种shell。expect的为:/usr/bin/expect
spawn命令用于捕捉关键词,后面常跟一个linux执行命令。
expect命令用于判断上层捕捉输出的结果是否有指定字符,有则立即返回,没有则默认等待10s。
exp_continue命令expect多分支判断时使用。
send命令expect命令判断完成需要返回时,发送需要交互的指令,想要传递给电脑的文字或字符,该命令不能自动回车换行,\n和\r是回车。
set命令可用于设置变量、设置expect超时时间,默认是10s。
set设置位置变量set password  [lindex $argv 0] ,设置时从0开始,执行脚本时在脚本后跟参数即可。
结束符expect eof 结束并返回原来环境,原来主机。
interact 结束但是不会返回原来的地方,保持当前状态,当前主机。

(3)安装expect

安装软件包

赋权执行

su切换用户

interact运行完保持

expect运行完退出

bash嵌套expect

⑥ ssh

二、实验

1.实验一

监控脚本写一个函数库,用定时任务调用这个函数库,每个月1号执行

(1)脚本截图

主函数

调用函数

(2)crontab计划任务

(3)运行结果

2.实验二

ssh免交互登录,如果密码出错,也使用免交互的方式实现自动完成

(1)脚本截图

(2)运行结果

密码输入错误

密码输入正确

3.实验三

使用fdisk给磁盘分区,格式化,挂载

(1)脚本截图

(2)运行结果

EOF自动分区

#!/bin/bash
fdisk /dev/sdb <<EOF
n
p
1
                           #必须的空格,代表第一次回车
                           #必须的空格,代表第二次回车
wq
EOF
 
/sbin/mkfs.xfs /dev/sdb1 &&  /bin/mkdir -p /data && /bin/mount /dev/sdb1 /data
echo 'LABEL=data_disk /data xfs defaults 0 0' >> /etc/fstab

4.问题

linux系统或者掉盘的用户常常遭遇挂载磁盘报Structure needs cleaning(清理磁盘结构----格盘)的问题。

首先查看/dev/存储块是什么文件系统

在操作前请务必做好备份:

(1)ext4文件系统,使用命令  fsck.ext4 /dev/md0 修复,

(2)xfs文件系统,使用命令 xfs_repair -L /dev/md0修复,

一般情况修复后均可挂载,

但是如果磁盘有问题,或者阵列出问题时此种修复可能会失败,挂载时依然要求格盘,只能进行格盘了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值