一、只针对一块已存在的硬盘初始化
内含当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
~
本实验有两块磁盘,执行结果