Group :: Sistema/Base
RPM: startup-rescue
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
rescue-0.7/ 0000755 0000000 0000000 00000000000 11167350106 0012644 5 ustar 00root root 0000000 0000000 rescue-0.7/find-fstab 0000755 0000000 0000000 00000002773 11167350106 0014620 0 ustar 00root root 0000000 0000000 #!/bin/sh -efu
. shell-error
## Volume manager specific functions
fstype() {
[ "$#" -eq 1 -a -n "$1" ] || return 1
local fs= fsinfo="`evms_query info "$1" |sed -n -e 's/^Filesystem: //p'`"
case "$fsinfo" in
ReiserFS) fs="reiserfs" ;;
Ext2/3) fs="ext2 ext3" ;;
XFS) fs="xfs" ;;
JFS) fs="jfs" ;;
*) return 1 ;;
esac
echo "$fs"
}
volumes() {
evms_query volumes
}
## Functions
usage() {
echo "Usage: $PROG [--help|--list-only|<outdir>]" >&2
exit 1
}
workdir=
exit_handler() {
local rc=$?
trap - EXIT
if cut -d' ' -f2 /proc/mounts |fgrep -xqs "$workdir"; then
umount -l "$workdir"
fi
[ ! -d "$workdir" ] || rm -rf -- "$workdir"
exit $rc
}
listonly=
outdir=
i=0
fstab_list() {
local v fs fslist success
for v in `volumes`; do
fslist="`fstype "$v"`" && [ -n "$fslist" ] || continue
success=
for fs in $fslist; do
modprobe -b $fs ||:
mount -t "$fs" -oro "$v" "$workdir" >/dev/null 2>&1 && success=1 ||:
done
[ -n "$success" ] || continue
if [ ! -f "$workdir/etc/fstab" ]; then
umount -l "$workdir"
continue
fi
i="$(($i+1))"
[ -z "$listonly" ] &&
cp -- "$workdir/etc/fstab" "$outdir/fstab.$i" ||
echo "File /etc/fstab found on volume '$v'"
umount -l "$workdir"
done
}
[ "$#" -eq 1 ] || usage
if [ "$1" = "--list-only" ]; then
listonly=1
elif [ "$1" = "--help" ]; then
usage
else
outdir="`readlink -ev "$1"`"
fi
trap exit_handler HUP PIPE INT QUIT TERM EXIT
workdir="`mktemp -dt "$PROG.XXXXXXXXXX"`"
fstab_list
[ "$i" -gt 0 ] && rc=0 || rc=1
exit $rc