shell脚本免交互——初始化磁盘的方法

一、只针对一块已存在的硬盘初始化

内含当expect匹配到同样的字符串时应当如何操作
注意需要先安装expect,yum -y install expect

#!/bin/bash
expect<<-EOF
spawn fdisk /dev/sdb    //启动进程并并跟踪
expect {
"获取帮助" {send "n\n";exp_continue}     //捕捉spawn的输出,匹配到期望字符,则向进程输入字符串
"default p" {send "p\n";exp_continue}    //n为新建分区,\n为回车,p为主分区,再回车
"默认 1" {send "1\n";exp_continue}          //分区号
"默认为 2048" {send "\n";exp_continue}      //分区大小
"+size" {send "\n"}
}
###当expect匹配到同样的字符串时的操作####
expect "获取帮助" {send "p\n";send "wq\n";exp_continue}   //p显示已建分区,wq保存配置,注意exp_continue,否则无法继续输入wq
EOF
mkdir /data    //新建挂载目录
fdisk -l   
mkfs.xfs /dev/sdb1   //格式化
mount /dev/sdb1 /data    //挂载使用
df -Th

执行结果
在这里插入图片描述

二、当存在多块需要初始化的磁盘,利用循环实现

#!/bin/bash
a=`ls /dev/sd* | grep -o sd[b-z] | uniq`    //将多块磁盘从sdb开始赋值给a
for var in $a       //var遍历变量a
do
  echo -e "n\np\n\n\n\nwq\n" | fdisk /dev/$var   //echo与expect实现了相同的作用,连续输出字符串给执行disk /dev/$var后的结果,-e代表支持转义字符
  mkfs.ext4 /dev/${var}1     //格式化分区,使用变量循环格式化操作
  mkdir -p /data/${var}1     //新建不同磁盘的挂载目录,在/data下以自己的分区名建立
  mount /dev/${var}1 /data/${var}1    //挂载使用
done
~    

本实验有两块磁盘,执行结果
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值