From: Serge L. <sma...@us...> - 2010-06-02 06:59:17
|
Update of /cvsroot/devil-linux/build/scripts/scripts In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv28277 Modified Files: save-config Log Message: - added option for onfiguration backup over ssh (write config to STDOUT, "-o" ) Index: save-config =================================================================== RCS file: /cvsroot/devil-linux/build/scripts/scripts/save-config,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- save-config 5 Nov 2009 20:43:04 -0000 1.40 +++ save-config 2 Jun 2010 06:59:08 -0000 1.41 @@ -41,6 +41,7 @@ echo " -h This help text" echo " -q Quiet operation, no status ouput." echo " -s Force search of all devices for configuration file." + echo " -o Write the Devil-Linux configuration to STDOUT." echo; exit 0 ;; @@ -71,6 +72,9 @@ DL_CONFIG_FILE=$1 fi ;; + "-o" ) + WRITE2STDOUT="yes" + ;; * ) echo "Unknown option: $1" @@ -80,208 +84,216 @@ shift done -if [ -n $DL_CONFIG_SOURCE ]; then - if [ -b $DL_CONFIG_SOURCE ]; then - if [ -z "$QUIET" ]; then - $GREEN - echo -e "Found configuration file location used by boot: $DL_CONFIG_SOURCE" - $NORMAL - fi - else - $FAILURE - echo "Configuration file device specified \"$DL_CONFIG_SOURCE\" no longer exists!" - echo "Run save-config again with \"-s\" switch to search for other locations." - $NORMAL +if [ -z "$WRITE2STDOUT" ]; then + + if [ -n $DL_CONFIG_SOURCE ]; then + if [ -b $DL_CONFIG_SOURCE ]; then + if [ -z "$QUIET" ]; then + $GREEN + echo -e "Found configuration file location used by boot: $DL_CONFIG_SOURCE" + $NORMAL + fi + else + $FAILURE + echo "Configuration file device specified \"$DL_CONFIG_SOURCE\" no longer exists!" + echo "Run save-config again with \"-s\" switch to search for other locations." + $NORMAL exit 0 - fi -else + fi + else - # generate the device list we need to search for the configuration information - PARTITIONS_IDE=`find /dev/ide/ -name "part*" 2> /dev/null` - PARTITIONS_SCSI=`find /dev/scsi/ -name "part*" 2> /dev/null` - FLOPPIES=`find /dev/floppy/ -name "?" 2> /dev/null` - CONFIG_SRC_LIST="$PARTITIONS_SCSI $PARTITIONS_IDE $FLOPPIES" + # generate the device list we need to search for the configuration information + PARTITIONS_IDE=`find /dev/ide/ -name "part*" 2> /dev/null` + PARTITIONS_SCSI=`find /dev/scsi/ -name "part*" 2> /dev/null` + FLOPPIES=`find /dev/floppy/ -name "?" 2> /dev/null` + CONFIG_SRC_LIST="$PARTITIONS_SCSI $PARTITIONS_IDE $FLOPPIES" - $GREEN - echo -e "searching for configuration media" - $NORMAL + $GREEN + echo -e "searching for configuration media" + $NORMAL - until [ -e "$CONFIG_MOUNT/$DL_CONFIG_FILE" ] ; - do - for CFG_SRC in $CONFIG_SRC_LIST - do - echo -e "Checking $CFG_SRC" - if mount -n -o ro,noatime -t auto $CFG_SRC $CONFIG_MOUNT > /dev/null 2>&1 ; then + until [ -e "$CONFIG_MOUNT/$DL_CONFIG_FILE" ] ; + do + for CFG_SRC in $CONFIG_SRC_LIST + do + echo -e "Checking $CFG_SRC" + if mount -n -o ro,noatime -t auto $CFG_SRC $CONFIG_MOUNT > /dev/null 2>&1 ; then - if [ -e "$CONFIG_MOUNT/$DL_CONFIG_FILE" ] ; then - umount $CONFIG_MOUNT - $SUCCESS - echo -e "Found configuration on $CFG_SRC" - $NORMAL - if [ -z "$QUIET" ]; then - echo -n "Do you want to use this device?" - if ask_yes_no ; then - DL_CONFIG_SOURCE=$CFG_SRC - continue 2 - fi - else - DL_CONFIG_SOURCE=$CFG_SRC - continue 2 - fi - else - beep; - umount $CONFIG_MOUNT - $SUCCESS - echo -e "\n*** Found empty media $CFG_SRC . ***\n" - $NORMAL - echo -n "Do you want to save your configuration to this device?" - if ask_yes_no ; then - DL_CONFIG_SOURCE=$CFG_SRC - continue 2 - fi - fi - elif mount -n -o ro,noatime -t $FS_TYPE $CFG_SRC $CONFIG_MOUNT > /dev/null 2>&1 ; then + if [ -e "$CONFIG_MOUNT/$DL_CONFIG_FILE" ] ; then + umount $CONFIG_MOUNT + $SUCCESS + echo -e "Found configuration on $CFG_SRC" + $NORMAL + if [ -z "$QUIET" ]; then + echo -n "Do you want to use this device?" + if ask_yes_no ; then + DL_CONFIG_SOURCE=$CFG_SRC + continue 2 + fi + else + DL_CONFIG_SOURCE=$CFG_SRC + continue 2 + fi + else + beep; + umount $CONFIG_MOUNT + $SUCCESS + echo -e "\n*** Found empty media $CFG_SRC . ***\n" + $NORMAL + echo -n "Do you want to save your configuration to this device?" + if ask_yes_no ; then + DL_CONFIG_SOURCE=$CFG_SRC + continue 2 + fi + fi + elif mount -n -o ro,noatime -t $FS_TYPE $CFG_SRC $CONFIG_MOUNT > /dev/null 2>&1 ; then - if [ -e "$CONFIG_MOUNT/$DL_CONFIG_FILE" ] ; then - umount $CONFIG_MOUNT - $SUCCESS - echo -e "Found configuration on $CFG_SRC" - $NORMAL - if [ -z "$QUIET" ]; then - echo -n "Do you want to use this device?" - if ask_yes_no ; then - DL_CONFIG_SOURCE=$CFG_SRC - continue 2 - fi - else - DL_CONFIG_SOURCE=$CFG_SRC - continue 2 - fi - else - beep; - umount $CONFIG_MOUNT - $SUCCESS - echo -e "\n*** Found empty media $CFG_SRC . ***\n" - $NORMAL - echo -n "Do you want to save your configuration to this device?" - if ask_yes_no ; then - DL_CONFIG_SOURCE=$CFG_SRC - continue 2 - fi - fi - fi - done - beep; sleep 1; beep; sleep 1; beep; - $ERROR - echo -e "Please insert Configuration Media and press 'ENTER'" - $NORMAL - read ANS - echo - + if [ -e "$CONFIG_MOUNT/$DL_CONFIG_FILE" ] ; then + umount $CONFIG_MOUNT + $SUCCESS + echo -e "Found configuration on $CFG_SRC" + $NORMAL + if [ -z "$QUIET" ]; then + echo -n "Do you want to use this device?" + if ask_yes_no ; then + DL_CONFIG_SOURCE=$CFG_SRC + continue 2 + fi + else + DL_CONFIG_SOURCE=$CFG_SRC + continue 2 + fi + else + beep; + umount $CONFIG_MOUNT + $SUCCESS + echo -e "\n*** Found empty media $CFG_SRC . ***\n" + $NORMAL + echo -n "Do you want to save your configuration to this device?" + if ask_yes_no ; then + DL_CONFIG_SOURCE=$CFG_SRC + continue 2 + fi + fi + fi + done + beep; sleep 1; beep; sleep 1; beep; + $ERROR + echo -e "Please insert Configuration Media and press 'ENTER'" + $NORMAL + read ANS + echo + + done + fi + + $WARNING + echo "using device $DL_CONFIG_SOURCE" + $NORMAL + + until [ -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; do + # if mount $DL_CONFIG_SOURCE $CONFIG_MOUNT 2>&1 >/dev/null ; then + if mount -o ro,noatime $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1; then + if [ -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; then + $YELLOW + echo "Updating file on device..." + $NORMAL + break + else + # why should we require it exist? If the user + # wants it elsewhere let them say so. + # maybe the wanted to make a copy of a tesy config + # on a new diskette? + $YELLOW + echo "Creating new file on device..." + $NORMAL + break + fi + elif mount -o ro,noatime -t $FS_TYPE $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1 ; then + if [ -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; then + $YELLOW + echo "Updating file on device..." + $NORMAL + break + else + # why should we require it exist? If the user + # wants it elsewhere let them say so. + # maybe the wanted to make a copy of a tesy config + # on a new diskette? + $YELLOW + echo "Creating new file on device..." + $NORMAL + break + fi + fi + umount $CONFIG_MOUNT &> /dev/null + beep;beep; + $FAILURE + echo "Please insert Configuration Media in $DL_CONFIG_SOURCE" + $NORMAL + sleep 2 done -fi -$WARNING -echo "using device $DL_CONFIG_SOURCE" -$NORMAL + if [ -z "$QUIET" -a -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; then + $SUCCESS + echo "listing difference" + $NORMAL + ( cd /shm ; tar -djf $CONFIG_MOUNT/$DL_CONFIG_FILE etc-mods ) -until [ -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; do -# if mount $DL_CONFIG_SOURCE $CONFIG_MOUNT 2>&1 >/dev/null ; then - if mount -o ro,noatime $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1; then - if [ -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; then - $YELLOW - echo "Updating file on device..." - $NORMAL - break - else - # why should we require it exist? If the user - # wants it elsewhere let them say so. - # maybe the wanted to make a copy of a tesy config - # on a new diskette? - $YELLOW - echo "Creating new file on device..." - $NORMAL - break - fi - elif mount -o ro,noatime -t $FS_TYPE $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1 ; then - if [ -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; then - $YELLOW - echo "Updating file on device..." - $NORMAL - break - else - # why should we require it exist? If the user - # wants it elsewhere let them say so. - # maybe the wanted to make a copy of a tesy config - # on a new diskette? - $YELLOW - echo "Creating new file on device..." - $NORMAL - break - fi - fi - umount $CONFIG_MOUNT &> /dev/null - beep;beep; - $FAILURE - echo "Please insert Configuration Media in $DL_CONFIG_SOURCE" - $NORMAL - sleep 2 -done + umount $CONFIG_MOUNT -if [ -z "$QUIET" -a -e $CONFIG_MOUNT/$DL_CONFIG_FILE ] ; then - $SUCCESS - echo "listing difference" - $NORMAL - ( cd /shm ; tar -djf $CONFIG_MOUNT/$DL_CONFIG_FILE etc-mods ) + $FAILURE + echo -n "Do you still want to save?" + $NORMAL + if ! ask_yes_no ; then + exit 1 + fi + fi - umount $CONFIG_MOUNT + # This umount seems completely un-needed? Is this to give the user a chance to switch media? + umount $CONFIG_MOUNT &> /dev/null - $FAILURE - echo -n "Do you still want to save?" - $NORMAL - if ! ask_yes_no ; then - exit 1 - fi -fi + # mount RO at first to avoid mount error if config is on same device as ISO + if mount -o ro,noatime -t auto $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1; then + mount -o remount,rw,noatime $CONFIG_MOUNT + elif mount -o ro,noatime -t $FS_TYPE $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1; then + mount -o remount,rw,noatime $CONFIG_MOUNT + fi -# This umount seems completely un-needed? Is this to give the user a chance to switch media? -umount $CONFIG_MOUNT &> /dev/null + # check for old (pre-aufs) config file + if [ -e $CONFIG_MOUNT/$OLD_CONFIG_FILE ] ; then + $WARNING + echo + echo "There is an old config $OLD_CONFIG_FILE on $DL_CONFIG_SOURCE" + echo "Depending on file and media sizes, you may run out of disk space." + echo + echo -n "Would you like me to remove: $OLD_CONFIG_FILE ?" + $NORMAL + if ask_yes_no ; then + $FAILURE + echo -n "Last chance, are you sure?" + $NORMAL + if ask_yes_no ; then + $WARNING + echo -n "Removing: $CONFIG_MOUNT/$OLD_CONFIG_FILE ... " + sleep 5 # give them a couple seconds to hit CTRL-C + rm -f $CONFIG_MOUNT/$OLD_CONFIG_FILE + $SUCCESS + echo "done" + fi + fi + $NORMAL + fi -# mount RO at first to avoid mount error if config is on same device as ISO -if mount -o ro,noatime -t auto $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1; then - mount -o remount,rw,noatime $CONFIG_MOUNT -elif mount -o ro,noatime -t $FS_TYPE $DL_CONFIG_SOURCE $CONFIG_MOUNT > /dev/null 2>&1; then - mount -o remount,rw,noatime $CONFIG_MOUNT -fi + $SUCCESS + echo "Saving current configuration" + $NORMAL -# check for old (pre-aufs) config file -if [ -e $CONFIG_MOUNT/$OLD_CONFIG_FILE ] ; then - $WARNING - echo - echo "There is an old config $OLD_CONFIG_FILE on $DL_CONFIG_SOURCE" - echo "Depending on file and media sizes, you may run out of disk space." - echo - echo -n "Would you like me to remove: $OLD_CONFIG_FILE ?" - $NORMAL - if ask_yes_no ; then - $FAILURE - echo -n "Last chance, are you sure?" - $NORMAL - if ask_yes_no ; then - $WARNING - echo -n "Removing: $CONFIG_MOUNT/$OLD_CONFIG_FILE ... " - sleep 5 # give them a couple seconds to hit CTRL-C - rm -f $CONFIG_MOUNT/$OLD_CONFIG_FILE - $SUCCESS - echo "done" - fi - fi - $NORMAL + OUTPUT="$CONFIG_MOUNT/$DL_CONFIG_FILE" +else + OUTPUT="-" fi -$SUCCESS -echo "Saving current configuration" -$NORMAL tar -C /shm -c \ --exclude=*~ \ @@ -305,36 +317,39 @@ --exclude=samba/lock/winbind_cache.tdb \ --exclude=samba/lock/connections.tdb \ -j \ - -f $CONFIG_MOUNT/$DL_CONFIG_FILE \ + -f $OUTPUT \ etc-mods root error=$? -if [ $error -eq 141 ]; then - $RED - beep - echo "media protected, configuration not saved" - $NORMAL -else - if [ $error -eq 0 ]; then - chmod 0600 $CONFIG_MOUNT/$DL_CONFIG_FILE - $SUCCESS - echo "Configuration saved" - $NORMAL - - # run user specfic script after successful save - # useful for backing up the config elsewhere - # Pass device and file name just saved - [ -x /root/bin/post-save-config ] && /root/bin/post-save-config $DL_CONFIG_SOURCE $CONFIG_MOUNT $DL_CONFIG_FILE +if [ -z "$WRITE2STDOUT" ]; then + if [ $error -eq 141 ]; then + $RED + beep + echo "media protected, configuration not saved" + $NORMAL else - $RED - beep - echo "failed to save configuration" - $NORMAL + if [ $error -eq 0 ]; then + chmod 0600 $CONFIG_MOUNT/$DL_CONFIG_FILE + $SUCCESS + echo "Configuration saved" + $NORMAL + + # run user specfic script after successful save + # useful for backing up the config elsewhere + # Pass device and file name just saved + [ -x /root/bin/post-save-config ] && /root/bin/post-save-config $DL_CONFIG_SOURCE $CONFIG_MOUNT $DL_CONFIG_FILE + else + $RED + beep + echo "failed to save configuration" + $NORMAL + fi fi -fi -sync;sync;sync -# This kludge is in case configuration device is also location of bootcd.iso. Restore back to RO mode -mount -o remount,ro,noatime $CONFIG_MOUNT -umount $CONFIG_MOUNT + sync;sync;sync + # This kludge is in case configuration device is also location of bootcd.iso. Restore back to RO mode + mount -o remount,ro,noatime $CONFIG_MOUNT + umount $CONFIG_MOUNT + +fi |