diff --git a/operation/mkTmpfstab.sh b/operation/mkTmpfstab.sh index 3aa27bc..1af61af 100755 --- a/operation/mkTmpfstab.sh +++ b/operation/mkTmpfstab.sh @@ -40,19 +40,11 @@ setArgument(){ for((i=0; i<${#ARGV_MKFSTAB[@]}; i++)) do case ${ARGV_MKFSTAB[$i]} in - --from) + --from|-f) ((i++)) PATHFROM=${ARGV_MKFSTAB[$i]} ;; - --to) - ((i++)) - PATHTO=${ARGV_MKFSTAB[$i]} - ;; - -f) - ((i++)) - PATHFROM=${ARGV_MKFSTAB[$i]} - ;; - -t) + --to|-t) ((i++)) PATHTO=${ARGV_MKFSTAB[$i]} ;; @@ -77,15 +69,7 @@ setArgument(){ # Description: copy the old fstab to a temp place ########################################################################### cpTmpfstab(){ - local i - local TMPPATH=`echo "$2"|sed -e s/[/]/' '/g` - for i in $TMPPATH - do - continue - done - local PATHTOFILE=$i - local PATHTODIR=`echo "$2"|sed -e s/"$PATHTOFILE"/''/g` - + local PATHTODIR=`dirname $2` mkdir -p $PATHTODIR 2>>$LOGDIR$LOGFILE if [ $? != "0" ];then echo "can not makedir named $PATHTODIR" >>$LOGDIR$LOGFILE @@ -108,44 +92,81 @@ mdfyTmpFstab(){ local i local j local LASTNAME='' - local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) - for i in $UUIDFROMFSTAB - do - blkid -t$i >/tmp/.blkid.tmp - local NAMEFROMUUID=`cut -f 1 -d : /tmp/.blkid.tmp` - if [ ! "${NAMEFROMUUID}" ];then - echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE - exit 1 - fi - if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then - LASTNAME=$NAMEFROMUUID - else - for j in $NAMEFROMUUID - do - if [ `echo $j|grep 'md'` ];then - if [ ! $LASTNAME ]; then - LASTNAME=$j + #replace UUID in the temp fstab + local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) + if [ -n "$UUIDFROMFSTAB" ];then + for i in $UUIDFROMFSTAB + do + local NAMEFROMUUID=`blkid -t$i |cut -f 1 -d :` + if [ ! "${NAMEFROMUUID}" ];then + echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE + exit 1 + fi + + if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then + LASTNAME=$NAMEFROMUUID + else + for j in $NAMEFROMUUID + do + if [ `echo $j|grep 'md'` ];then + if [ ! $LASTNAME ]; then + LASTNAME=$j + else + echo "too many raid devices be found" >>$LOGDIR$LOGFILE + exit 1 + fi else - echo "too many raid devices be found" >>$LOGDIR$LOGFILE - exit 1 + if [ `mdadm -Ds -v|grep -w $j` ];then + continue + else + echo "too many partitions be found" >>$LOGDIR$LOGFILE + exit 1 + fi fi - else - if [ `mdadm -Ds -v|grep -w $j` ];then - continue - else - echo "too many partitions be found" >>$LOGDIR$LOGFILE - exit 1 - fi - fi - done - fi - sed -i s@$i@$LASTNAME@g $1 - LASTNAME='' - done - rm /tmp/.blkid.tmp + done + fi + sed -i s@$i@$LASTNAME@g $1 + LASTNAME='' + done + fi + + #replace by-id in the temp fstab + local BYIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "by-id") { print $1}}' $1) + if [ -n "$BYIDFROMFSTAB" ];then + for i in $BYIDFROMFSTAB + do + local NAMEFROMBYID=`readlink $BYIDFROMFSTAB` + NAMEFROMBYID="/dev/`basename $NAMEFROMBYID`" + sed -i s@$i@$NAMEFROMBYID@g $1 + done + fi } +########################################################################### +# Function Name: checkArgument() +# Input: $PATHFROM $PATHTO +# Return: nothing +# Description: check the arguments +########################################################################### +checkArgument(){ + if [ ! -f $1 ];then + echo "Can not find pathfrom $1" >>$LOGDIR$LOGFILE + exit 1 + fi + if [ ! $2 ];then + echo "pathto argument is empty!!" >>$LOGDIR$LOGFILE + exit 1 + fi +} + +########################################################################### +# Function Name: () +# Input: $PATHFROM $PATHTO +# Return: nothing +# Description: check the arguments +########################################################################### + ########################################################################### # Function Name: usage() # Input: nothing @@ -197,6 +218,7 @@ NOWDATE=`date` echo $NOWDATE >>$LOGDIR$LOGFILE setArgument $@ +checkArgument $PATHFROM $PATHTO cpTmpfstab $PATHFROM $PATHTO mdfyTmpFstab $PATHTO echo "make temp fstab all right" >>$LOGDIR$LOGFILE diff --git a/operation/mkraidconf.sh b/operation/mkraidconf.sh index b20ec66..b9cf5ec 100755 --- a/operation/mkraidconf.sh +++ b/operation/mkraidconf.sh @@ -13,15 +13,7 @@ if [ ! $1 ]; then exit 1 fi -CONPATH=`echo $1|sed -e s/[/]/' '/g` -for i in $CONPATH -do - continue -done - -CONFILE=$i -CONDIR=`echo $1|sed -e s/$CONFILE/''/g` - +CONDIR=`dirname $1` if [ ! -d $CONDIR ]; then mkdir -p $CONDIR if [ $? != 0 ]; then @@ -29,5 +21,5 @@ if [ ! -d $CONDIR ]; then exit 1 fi fi -mdadm -Ds -v > $CONDIR$CONFILE +mdadm -Ds -v > $1