| Code: 
 #! /bin/bash
 # fstab-rebuild.sh
 VERSION="April 2012"
 # Farbe Variablen zuweisen
 ROT="\033[31m"
 ROT_HELL="\033[41m"
 GRUEN="\033[32m"
 GRUEN_HELL="\033[42m"
 GELB="\033[33m"
 GELB_HELL="\033[43m"
 BLAU="\033[34m"
 BLAU_HELL="\033[44m"
 MAGENTA="\033[35m"
 MAGENTA_HELL="\033[45m"
 ENDE="\033[0m\n"
 ENDE1="\033[0m"
 
 NUTZER=$(users |awk '{print $1}')
 
 if [ $(id -u) != 0 ]; then
 echo -e "$ROT_HELL Script erfordert root - Rechte \n  $ENDE "
 su
 exit 1
 fi
 
 echo -e "$ROT_HELL"
 cat <<EOT
 Diese script schreibt die /etc/fstab
 LABEL wird abgefragt.
 Falls kein LABEL vorhanden wird eins erzeugt in einer Mischung von Laufwerk und UUID.
 Gleichzeitig wird der Mountpoint in /media entsprechend der Auswahl in einem Menü  geändert.
 alle anderen Mountpoints in /media werden gelöscht.
 Vorhandene /etc/fstab wird mehrfach gesichert.
 Vor dem Überschreiben der alten /etc/fstab gibt es eine Abfrage.
 Ich habe da nun mehrfache Sicherheiten eingebaut, damit kein Müll entsteht.
 Kritik ist gerne willkommen. Zumal ich noch zimlich wenig Ahnung habe.
 
 Neu ist:
 Menü zum Auswählen von Optionen.
 z.B. auch atime
 Problem wheezy dass root-Partition als solche nicht erkannt wird behoben.
 Vor überschreiben wird nachgefragt.
 
 EOT
 # read
 
 echo -e "$ENDE $ENDE1"
 
 
 AUSW=`dialog --checklist "Wie soll die fstab.aussehen ??? " 0 0 0 \
 System "Linux Systeme als auto mounten ? " off \
 "homes mounten" "Partitionen mit home-Verzeichissen automounten?" off \
 automount "andere beim Start mounten?" on \
 noatime "noatime ? " off \
 Floppy "vorhanden ?" off \
 "USB-Laufwerke" "und andere bewegliche - normal nicht!!!!" off \
 "Mountpoint zusammenstellen aus:" "" off \
 "Laufwerk z.B. sda5" "falls hier  " off \
 UUID "mehrer angekreuzt werden *1 " off \
 Label "alle aneinandergehängt  " on \
 3>&1 1>&2 2>&3`
 
 if [[ "$AUSW" == *homes* ]] ; then
 HOMEAUTO=auto
 else
 HOMEAUTO=noauto
 fi
 
 
 if [[ "$AUSW" == *automount* ]] ; then
 ALLAUTO=auto
 else
 ALLAUTO=noauto
 fi
 
 if [[ "$AUSW" == *noatime* ]] ; then
 KEINATIME=noatime
 else
 KEINATIME=atime
 fi
 
 if [[ "$AUSW" == *System* ]] ; then
 SYSTEMAUTO=auto
 else
 SYSTEMAUTO=noauto
 fi
 
 SAVEROOT=$(cat /etc/fstab | grep errors=remount)
 KURZUUIDSAVEROOT=$(cat /etc/fstab | grep errors=remount | awk '{print $1}'| cut -b 1-3 )
 cd /
 umount -a
 # mögliche wichtige Mountpoints zum erhalten
 mount /
 mount $(cat /etc/fstab | grep errors=remount | awk '{print $1}')
 mount /home
 mount /home/$NUTZER
 mount /root
 mkdir /etc/fstab.backup
 
 # mv --backup=t funktioniert nicht, machen wirs halt selbst
 for (( I=1; $I <= 200; I++ )) ; do
 if [ -e /etc/fstab.backup/fstab.bak~$I ] ; then
 continue
 fi
 mv --backup=t  /etc/fstab.bak /etc/fstab.backup/fstab.bak~$I
 break
 done
 
 # mv /etc/fstab /etc/fstab.bak
 
 echo -e "# /etc/fstab: static file system information. \n# \n#\t <file system>\t\t\t\t<mount point> \t<type>\t\t<options>\t<dump><pass> " > /etc/fstab.neu  # /etc/fstab wir damit überschrieben
 
 
 rmdir /media/*
 
 
 for LAUFWERK in sda sdb sdc sde sdf sdg sdh sdi ; do
 
 if [ ! -e /dev/$LAUFWERK ] ; then
 # echo $LAUFWERK existiert nicht
 continue
 fi
 
 if ! [[ "$AUSW" == *USB-Laufwerke* ]] ; then
 REM=$(cat /sys/block/${LAUFWERK#/dev/}/removable 2>/dev/null)
 if [ "$REM" = "1" ]; then
 continue
 fi
 fi
 for (( I=1; $I <= 20; I++ )) ; do
 if [ ! -e /dev/$LAUFWERK$I ] ; then
 continue
 fi
 
 TYPE=$(blkid -o list /dev/$LAUFWERK$I | grep $LAUFWERK$I | awk '{print $2}')
 
 if [ "x$TYPE" = "x" ] ; then
 echo TYPE $TYPE von $LAUFWERK$I nicht ermittelt
 continue
 fi
 
 UUID_ERMITTELT2=$(blkid -o list /dev/$LAUFWERK$I | grep $LAUFWERK$I | awk '{print $7}' )
 
 if [ x$UUID_ERMITTELT2 = x ] ; then
 UUID_ERMITTELT2=$(blkid -o list /dev/$LAUFWERK$I| grep $LAUFWERK$I  | awk '{print $6}' )
 fi
 
 
 if [ x$UUID_ERMITTELT2 = x ] ; then
 UUID_ERMITTELT2=$(blkid -o list /dev/$LAUFWERK$I| grep $LAUFWERK$I --max-count=1 | awk '{print $5}' )
 fi
 
 if [ x$UUID_ERMITTELT2 = x ] ; then
 UUID_ERMITTELT2=$(blkid -o list /dev/$LAUFWERK$I | grep $LAUFWERK$I --max-count=1 | awk '{print $4}' )
 fi
 
 
 KURZUUID=$(echo $UUID_ERMITTELT2 | cut -b 1-4)
 
 
 
 
 
 LABELERSATZ=$TYPE-$(echo $LAUFWERK | cut -b 3)$I-$KURZUUID
 ERMITTELT=$(e2label /dev/$LAUFWERK$I)
 if [ x$ERMITTELT = x ] ; then
 e2label /dev/$LAUFWERK$I $LABELERSATZ
 ERMITTELT=$LABELERSATZ
 fi
 if [ ! -e /dev/disk/by-label/$ERMITTELT ] ; then
 LABEL_AUS_BLKID=$(blkid -o list /dev/$LAUFWERK$I | grep $LAUFWERK$I --max-count=1 | awk '{print $3}')
 if [ -e /dev/disk/by-label/$LABEL_AUS_BLKID ] ; then
 ERMITTELT=$LABEL_AUS_BLKID
 fi
 fi
 
 
 SCHONDA=$(cat /etc/fstab.neu | grep $ERMITTELT--max-count=1)
 if [ "x" != "x$SCHONDA" ] ; then
 echo das ist schon da $SCHONDA mit LABEL $ERMITTELT
 continue
 fi
 
 MOUNTPOINT=$ERMITTELT
 
 if [[ "$AUSW" == *sda5* ]] ; then
 MOUNTPOINT=$LAUFWERK$I
 if [[ "$AUSW" == *Label* ]] ; then
 MOUNTPOINT=$MOUNTPOINT"_"$ERMITTELT
 fi
 fi
 
 if [[ "$AUSW" == *UUID* ]] ; then
 MOUNTPOINT=$MOUNTPOINT"_"$UUID_ERMITTELT2
 fi
 
 
 WOEINGH=$(mount |grep $LAUFWERK$I --max-count=1 | awk '{print $3}')
 
 if [ ! -e /dev/disk/by-uuid/$UUID_ERMITTELT2 ] ; then
 echo UUID $UUID_ERMITTELT2 nicht gültig mounten nach Device
 
 if [ $TYPE = swap ] ; then
 echo -e "# $LAUFWERK$I ist SWAP " >> /etc/fstab.neu
 echo -e "/dev/$LAUFWERK$I \t\tnone \tswap \t\tsw \t\t\t0 0" >> /etc/fstab.neu
 continue
 elif [ $TYPE = vfat ] ; then
 echo -e "# $LAUFWERK$I LABEL=$(dosfslabel $LAUFWERK$I) vfat " >> /etc/fstab.neu
 echo -e "/dev/$LAUFWERK$I /media/$MOUNTPOINT vfat $ALLAUTO,users,exec,umask=000,shortname=mixed,rw 0 0" >> /etc/fstab.neu     # UUID=5F76D7A66A61B554 /media/daten ntfs defaults 0 0
 continue
 elif [ $TYPE = ntfs ] ; then
 echo -e "# $LAUFWERK$I ntfs " >> /etc/fstab.neu
 echo -e "/dev/$LAUFWERK$I /media/$MOUNTPOINT $ALLAUTO,ntfs defaults,user,$KEINATIME,rw 0 0" >> /etc/fstab.neu
 continue
 fi
 if [ "x$WOEINGH" = "x/" ] ; then
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT) ROOT-System \n/dev/$LAUFWERK$I\t\t$WOEINGH\t$TYPE\trw,errors=remount-ro,$KEINATIME \t0 0" >> /etc/fstab.neu
 continue
 elif  [[ $SAVEROOT == *$KURZUUID* ]] ; then
 echo ist root und lies sich nicht erkennen nach mountpoint
 echo rootuuid ist kurz:  $KURZUUIDSAVEROOT
 echo ermitteltes für das Laufwerk ist: *$KURZUUID*
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT)  ROOT-System \n/dev/$LAUFWERK$I\t\t$WOEINGH\t$TYPE\trw,errors=remount-ro,$KEINATIME \t0 0" >> /etc/fstab.neu
 continue
 elif [ x$WOEINGH != x ] ; then
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT) \n/dev/$LAUFWERK$I\t/\t$TYPE\tdefaults,user,$KEINATIME,auto\t0 0" >> /etc/fstab.neu
 continue
 else
 mount /dev/$LAUFWERK$I /mnt
 if [ -e /mnt/vmlinuz ] ; then
 echo -e "# /dev/$LAUFWERK$I (LABEL=$ERMITTELT) mit einem Linux System \n/dev/$LAUFWERK$I\t/media/$MOUNTPOINT\t$TYPE\tdefaults,user,$KEINATIME,$SYSTEMAUTO\t 0 0" >> /etc/fstab.neu
 elif [ -e /mnt/Desktop/ ] ; then
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT) mit einem Home-Verzeichniss \n/dev/$LAUFWERK$I\t/media/$MOUNTPOINT\t$TYPE\tdefaults,user,$KEINATIME,$HOMEAUTO \t0 0" >> /etc/fstab.neu
 else
 echo -e "#/dev/$LAUFWERK$I  (LABEL=$ERMITTELT) \n/dev/$LAUFWERK$I\t/media/$MOUNTPOINT\t$TYPE\tdefaults,user,$ALLAUTO,$KEINATIME\t0 0" >> /etc/fstab.neu
 fi
 fi
 
 while [[ $(mount | grep mnt) == *mnt* ]]  ; do
 umount /mnt
 done
 mkdir /media/$MOUNTPOINT
 chown $NUTZER:$NUTZER /media/$MOUNTPOINT
 mount  /media/$ERMITTEL
 chown $NUTZER:$NUTZER /media/$MOUNTPOINT/.
 continue
 fi
 
 
 
 SCHONDA=$(cat /etc/fstab.neu | grep $UUID_ERMITTELT2)
 if [ "x" != "x$SCHONDA" ] ; then
 echo UUID von Laufwerk $LAUFWERK$I   ist schon da    $SCHONDA
 # read
 continue
 fi
 if [ $TYPE = swap ] ; then
 echo -e "# $LAUFWERK$I ist SWAP " >> /etc/fstab.neu
 echo -e "UUID=$UUID_ERMITTELT2 \t\tnone \tswap \t\tsw \t\t\t0 0" >> /etc/fstab.neu
 continue
 elif [ $TYPE = vfat ] ; then
 # apt-get install dosfstools
 echo -e "# $LAUFWERK$I LABEL=$ERMITTELT (vfat) " >> /etc/fstab.neu
 echo -e "UUID=$UUID_ERMITTELT2 /media/$MOUNTPOINT vfat $ALLAUTO,users,exec,umask=000,shortname=mixed,rw 0 0" >> /etc/fstab.neu     # UUID=5F76D7A66A61B554 /media/daten ntfs defaults 0 0
 continue
 elif [ $TYPE = ntfs ] ; then
 echo -e "# $LAUFWERK$I $ERMITTELT (ntfs) " >> /etc/fstab.neu
 echo -e "UUID=$UUID_ERMITTELT2 /media/$MOUNTPOINT ntfs $ALLAUTO,defaults,user,$KEINATIME,rw 0 0" >> /etc/fstab.neu
 continue
 
 elif [ "x$WOEINGH" = "x/" ] ; then
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT)  ROOT-System \nUUID=$UUID_ERMITTELT2\t\t/\t$TYPE\trw,errors=remount-ro,$KEINATIME \t0 0" >> /etc/fstab.neu
 continue
 elif  [[ $SAVEROOT == *$KURZUUID* ]] ; then
 echo ist root und lies sich nicht erkennen nach mountpoint
 echo rootuuid ist kurz:  $KURZUUIDSAVEROOT
 echo ermitteltes für das Laufwerk ist: *$KURZUUID*
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT)  ROOT-System \nUUID=$UUID_ERMITTELT2\t\t/\t$TYPE\trw,errors=remount-ro,$KEINATIME \t0 0" >> /etc/fstab.neu
 continue
 elif [ x$WOEINGH != x ] ; then
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT) \nUUID=$UUID_ERMITTELT2\t$WOEINGH\t$TYPE\tdefaults,user,$KEINATIME,auto\t0 0" >> /etc/fstab.neu
 continue
 else
 mount /dev/$LAUFWERK$I /mnt
 if [ -e /mnt/vmlinuz ] ; then
 echo -e "# /dev/$LAUFWERK$I (LABEL=$ERMITTELT) mit einem Linux System \nUUID=$UUID_ERMITTELT2\t/media/$MOUNTPOINT\t$TYPE\tdefaults,user,$KEINATIME,$SYSTEMAUTO \t0 0" >> /etc/fstab.neu
 elif [ -e /mnt/Desktop/ ] ; then
 echo -e "# /dev/$LAUFWERK$I  (LABEL=$ERMITTELT) mit einem Home-Verzeichniss \nUUID=$UUID_ERMITTELT2\t/media/$MOUNTPOINT\t$TYPE\tdefaults,user,$KEINATIME,$HOMEAUTO \t0 0" >> /etc/fstab.neu
 else
 echo -e "#/dev/$LAUFWERK$I  (LABEL=$ERMITTELT) \nUUID=$UUID_ERMITTELT2\t/media/$MOUNTPOINT\t$TYPE\t$ALLAUTO,defaults,user,$KEINATIME\t0 0" >> /etc/fstab.neu
 fi
 
 while [[ $(mount | grep mnt) == *mnt* ]]  ; do
 umount /mnt
 done
 fi
 
 while [[ $(mount | grep mnt) == *mnt* ]]  ; do
 umount /mnt
 done
 
 mkdir /media/$MOUNTPOINT
 chown $NUTZER:$NUTZER /media/$MOUNTPOINT
 mount  /media/$MOUNTPOINT
 chown $NUTZER:$NUTZER /media/$MOUNTPOINT/.
 done
 
 done
 echo >> /etc/fstab.neu
 
 if [[ "$AUSW" == *Floppy* ]] ; then
 echo /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0  >> /etc/fstab.neu
 mkdir /media/floppy0
 fi
 
 echo /dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0  >> /etc/fstab.neu
 mkdir /media/cdrom0
 echo >> /etc/fstab.neu
 
 
 
 dialog --timeout 35 --exit-label "Das ist die neue /etc/fstab.neu" --textbox "/etc/fstab.neu" 35 130
 # dialog --timeout 35 "Das ist die neue /etc/fstab.neu" --textbox "/etc/fstab.neu" 35 130
 dialog --yesno "Ursprüngliche damit überschreiben?" 0 0
 # 0=ja; 1=nein
 antwort=$?
 if [ $antwort = 0 ]; then
 
 mv /etc/fstab /etc/fstab.bak
 mv /etc/fstab.neu /etc/fstab
 fi
 
 mount -a
 
 
 
 
 |