实现简单的免交互

#!/bin/bash
disk=$1
/usr/bin/expect <<-EOF
set timeout 5
spawn fdisk /dev/$disk
expect "Command" 
send "n\r"
expect {
        "Select" {send "\r";exp_continue}
        "Partition number" {send "\r";exp_continue}
        "First sector" {send "\r";exp_continue}
        "Last sector" {send "\r";exp_continue}
        "Command" {send "w\r"}
}
expect eof
EOF

partprobe
lsblk | grep "${disk}1"
if [ $? -eq 0 ];then
  echo "分区/dev/${disk}1已建立!"
else
  echo "未检测到分区,请检查!"
  exit
fi
mkfs.xfs /dev/${disk}1
mkdir /opt/${disk}1
mount /dev/${disk}1 /opt/${disk}1
echo "学习使我快乐" > /opt/${disk}1/test.txt
cat /opt/${disk}1/test.txt

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_44265455/article/details/139965204

一、免交互

1.1 简单解释免交互

交互:在计算机中,交互一般指发出指令控制程序的运行,程序在接收到指令之后按照指令的效果做出对应的反应。

免交互:间接地通过第三方的方式把指令传送给程序,不用直接地下达指令。一般通过脚本

Here Document 免交互

这是命令行格式,也可以写在脚本当中。通过I/O重定向的方式将命令的列表传送给交互式程序或命令。是标准输入的一种替代品,代替了人工的输入方式。

语法格式:

注意事项:

  1. 标记可以是任意合法字符,一般不用特殊字符、不以数字开头,通常以EOF作为默认的标记位。
  2. 结尾的标记一定要顶格写,前面不能有任何字符,空格也不行。
  3. 结尾的标记,后面也不能有任何字符,包括空格。
  4. 开头的标记前后的空格都会被省略掉,不影响标记的内容。

上述都可以在命令行向test1.txt输入文本了,直到输入文本EOF作为结束标志

tee主要用于从标准输入读取数据,并将其写入到一个或多个文件,同时也可以将数据输出到标准输出(通常是终端)。

1.2 变量赋值

变量赋值

整体变量赋值

1.3 Expect实现免交互

用tcl语言写的一个工具,主要用到自动化控制和测试,解决shell脚本交互的问题。

使用expect需要先安装expect

转义符:

  • \n :换行
  • \r :回车键
  • \t :横向制表符,相当于按TAB键
  • \b :退格,backspace

expect免交互文件的解释器不是/bin/bash,不能用sh bash来执行,要赋权后,用.来执行,即需要先chmod 777 file,然后再执行

set :也可以用于设置变量

expect :捕获的时候不一定要捕获全文,只要能捕获到内容即可

例:传参到脚本执行:

1.4 嵌入执行模式

shell当中加入expect。涉及到环境的切换的场景不适合使用嵌套。如sshsu

1.5 练习:

例:用expect实现ssh免交互登录root@20.0.0.20

传参实现ssh

例:一个脚本完成要求:免交互实现磁盘分区,分一个区即可,分完之后,第一步格式化,第二步实现挂载,手动挂载即可,然后在分区挂载点创建一个文件,写入内容"学习使我快乐!"并打印。

下面的操作都是对一个未分区的硬盘进行的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值