Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Paste
P8961
md-tools.sh
Active
Public
Actions
Authored by
CDanis
on Aug 22 2019, 5:24 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Referenced Files
F30064931: raw.txt
Aug 22 2019, 5:24 PM
2019-08-22 17:24:41 (UTC+0)
Subscribers
None
#!/bin/bash
# to "minify":
# echo echo $(gzip -c md_tools.sh | base64 -w0) '| base64 -d | zcat | sudo bash'
set
-eu
# given a filesystem path, returns its associated block device
fs_to_dev
()
{
df
"
$1
"
|
tail -n1
|
cut -f1 -d
' '
}
# given a mdN device name, return all the associated sdXn block device names
md_to_disks
()
{
ls -1 /sys/block/
"
$1
"
/slaves
}
# e.g. sda1 --> sda
partition_to_disk
()
{
echo
"
$1
"
|
sed
's/[0-9]*$//'
}
FULLBOOTDEV
=
"
$(
fs_to_dev /boot
)
"
BOOTDEV
=
"
$(
basename
$FULLBOOTDEV
)
"
if
[[
"
$FULLBOOTDEV
"
==
"/dev/mapper"
*
]]
;
then
# /boot uses LVM; find the name of the device mapper's device
DMNAME
=
"
$(
basename
$(
readlink -f
$FULLBOOTDEV
))
"
# and then map that to its underlying md device
BOOTDEV
=
"
$(
md_to_disks
$DMNAME
)
"
if
[[
$BOOTDEV
==
*
" "
*
]]
;
then
echo
"ERROR: /boot is backed by
$DMNAME
with multiple slaves
$BOOTDEV
"
exit
2
fi
fi
if
[[
"
$BOOTDEV
"
!
=
"md"
*
]]
;
then
echo
"exclude: /boot is not backed by a md device"
exit
0
fi
for
DEV in
$(
md_to_disks
$BOOTDEV
)
;
do
DISK
=
$(
partition_to_disk
$DEV
)
if
head -c512 /dev/
$DISK
|
grep -q GRUB
;
then
#echo -e "$DISK\tyes-GRUB"
true
else
#echo -e "$DISK\tno"
echo
"bad"
exit
0
fi
done
echo
"good-grub"
Event Timeline
CDanis
created this paste.
Aug 22 2019, 5:24 PM
2019-08-22 17:24:41 (UTC+0)
Log In to Comment