source: trunk/mondo/mondo/restore-scripts/mondo/hack-fstab @ 30

Last change on this file since 30 was 30, checked in by bcornec, 14 years ago

Id property added on files to allow for better conf. management

  • Property svn:keywords set to Id
File size: 4.2 KB
Line 
1#!/bin/sh
2#
3#
4#
5#
6#
7# 2003/08/04
8# - added some logging
9#
10# mid-2002 --- created
11################################################
12
13
14LogIt() {
15    echo "$1" >> /dev/stderr
16}
17
18
19
20
21AddFancyParams() {
22    local incoming device mountpoint format size original_fstab_line
23#    echo "AddFancyParams '$1'" >> /dev/stderr
24    incoming=`echo "$1" | tr -s '\t' ' '`
25    [ "$incoming" = "" ] && return
26    device=`echo "$incoming"     | cut -d' ' -f1`
27    [ "`echo "$device" | grep "/dev/"`" = "" ] && return
28    mountpoint=`echo "$incoming" | cut -d' ' -f2`
29    format=`echo "$incoming"     | cut -d' ' -f3`
30    size=`echo "$incoming"       | cut -d' ' -f4`
31#    echo "'$device' '$mountpoint' '$format' '$size'" > /dev/stderr
32    original_fstab_line=`cat $old_fstab | grep " $mountpoint " | grep -v "#" | tr -s ' ' ' '`
33#    echo "original_fstab_line = $original_fstab_line" >> /dev/stderr
34    if [ "`cat $old_fstab | grep "LABEL="`" != "" ] ; then
35    if [ "$format" = "ext2" ] || [ "$format" = "ext3" ] ; then
36        device="LABEL=$mountpoint"
37    fi
38    fi
39
40#    LogIt "my_res = $my_res"
41
42    echo -e -n "$device $mountpoint $format "
43
44    if [ "$original_fstab_line" != "" ] ; then
45#   echo $original_fstab_line | gawk '{i=index($0,$4); print substr($0,i);}'
46    echo "$original_fstab_line" | cut -d' ' -f4-19 | tr -s ' ' ' '
47    else
48    echo -e "defaults 0 0"
49    fi
50}
51
52
53
54ProcessFstab() {
55    local incoming dev mountlist_entry blanklines new_i
56    read incoming
57    blanklines=0
58    while [ "$blanklines" -lt "5" ] ; do
59    if [ "$incoming" = "" ] ; then
60        blanklines=$(($blanklines+1))
61        read incoming
62        continue
63    fi
64    incoming=`echo "$incoming" | tr -s '\t' ' '`
65#   new_i=`HackIncomingIfLABELused "$incoming"`
66#   if [ ! "$new_i" ] ; then
67    if [ "`echo "$incoming" | grep -v "LABEL="`" ] ; then
68        dev=`echo "$incoming" | cut -d' ' -f1`
69#       echo "OK, $dev isn't a label" >> /dev/stderr
70        mountlist_entry=`grep "$dev " $old_mountlist`
71#       echo "MLE($dev) = '$mountlist_entry'" >> /dev/stderr
72        if [ "$mountlist_entry" = "" ] ; then
73#       echo "(PF) '$incoming'" >> /dev/stderr
74        echo "$incoming"
75        fi
76#   else
77#       echo "Skipping '$incoming'" >> /dev/stderr
78    fi
79    read incoming
80    done
81}
82
83
84HackIncomingIfLABELused() {
85    local incoming col1 col2 col_rest orig out result
86    result=""
87    incoming=`echo "$1" | tr -s '\t' ' '`
88    col1=`echo "$incoming" | cut -f1`
89    col2=`echo "$incoming" | cut -f2`
90    col_rest=`echo "$incoming" | cut -f3-19 | tr -s ' ' ' '`
91    orig="`cat $old_fstab | grep " $col2 " | cut -f1`"
92    if [ "`echo "$orig" | grep "LABEL="`" != "" ] ; then
93    echo "orig = $orig" >> /dev/stderr
94    echo -e "$orig $col2 $col_rest | tr -s ' ' ' '"
95    fi
96}
97
98
99#HackIncomingIfLABELused "LABEL=/ / ext2 defaults 0,0,0"
100#exit 0
101
102
103
104ProcessMountlist() {
105    local incoming outstr res spc
106    read incoming
107    while [ "$incoming" != "" ] ; do
108    incoming=`echo "$incoming" | tr -s '\t' ' '`
109#   echo "(PM) incoming = '$incoming'" >> /dev/stderr
110    res=`HackIncomingIfLABELused "$incoming"`
111    if [ ! "$res" ] ; then
112        outstr=`AddFancyParams "$incoming"`
113    else
114        outstr=`AddFancyParams "$res"`
115    fi
116    spc="`echo "$outstr" | tr -s '\t' ' '`"
117    if [ "$spc" != "" ] && [ "$spc" != " " ] && [ "`echo "$spc" | grep "raid raid"`" = "" ] ; then
118        echo "$spc"
119#       echo "(PM) outgoing = '$outstr'" >> /dev/stderr
120    fi
121    read incoming
122    done
123}
124
125# ----------------- main ---------------
126
127LogIt "hack-fstab --- starting"
128
129if [ "$#" -ne "4" ] ; then
130    LogIt "hack-fstab <old mountlist> <old fstab> <new mountlist> <new fstab>" 1
131    LogIt "NB: the new fstab file is outgoing; all other files are incoming." 1
132    exit 1
133fi
134
135LogIt "hack-fstab '$1' '$2' '$3' '$4'"
136
137old_mountlist=$1
138old_fstab=$2
139new_mountlist=$3
140outfile=$4
141
142> $outfile
143LogIt "Processing mountlist"
144ProcessMountlist < $new_mountlist >> $outfile
145LogIt "Processing fstab"
146ProcessFstab < $old_fstab >> $outfile
147if [ ! -e "$outfile.old" ] ; then
148    LogIt "Moving $outfile to $outfile.old" 1
149    mv $outfile $outfile.old
150else
151    LogIt "$outfile.old exists already - assuming it _is_ the old one & using it" 1
152fi
153cat $outfile.old | tr -s ' ' ' ' \
154| gawk '{printf "%-15s %-18s %-10s ",$1,$2,$3; for(i=4;i<=NF;i++) {printf "%s ",$i;};print "";};' \
155| sort -u > $outfile
156
157LogIt "Finished writing to outfile ($outfile)"
158LogIt "hack-fstab --- leaving"
159exit 0
Note: See TracBrowser for help on using the repository browser.