Fallout
Doppel-As
Hi,
ich meine hier mal etwas ähnliches gesehen zu haben aber kann leider nix passendes finden. Es geht darum, die Mountoptionen eines bestimmten Mountpoints in der fstab zu ändern.
Zu Grunde liegt GNU bash, version 3.2.48(1)
soll z. B. werden zu:
Angesetzt habe ich mal ähnlich wie:
Das Ganze funktioniert soweit scheinbar ganz gut - nun möchte ich aber ganz gerne natürlich noch die Optik einigermaßen halten sodaß zumindest bis zu den Mountoptions die Anzahl der Whitespaces eingehalten wird was aber scheinbar awk bei der Übergabe in die Variable auf das nötigste runterkürzt.
Also aus
wird
Hat jemand eine Idee wie man das noch in den Griff bekommen könnte?
Gruß Daniel
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
[edit]
Hm, eine Idee wäre noch das Ganze so umzubauen daß nicht awk für die Ersetzung verwendet wird sondern sed:
Zumindest werden die Whitespaces damit nicht beschnitten.
Gruß Daniel
ich meine hier mal etwas ähnliches gesehen zu haben aber kann leider nix passendes finden. Es geht darum, die Mountoptionen eines bestimmten Mountpoints in der fstab zu ändern.
Zu Grunde liegt GNU bash, version 3.2.48(1)
Code:
[font=courier]
/dev/cciss/c0d0p2 swap swap defaults 0 0
/dev/sysvg/root / ext3 [b]defaults[/b] 1 1
/dev/cciss/c0d0p1 /boot ext3 acl,user_xattr 1 2
/dev/sysvg/data /data reiserfs defaults 1 2
/dev/sysvg/home /home ext3 defaults 1 2
/dev/sysvg/opt /opt ext3 defaults 1 2
/dev/sysvg/tmp /tmp ext3 defaults 1 2
/dev/sysvg/usr /usr ext3 defaults 1 2
/dev/sysvg/var /var ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
[/font]
soll z. B. werden zu:
Code:
[font=courier]
/dev/cciss/c0d0p2 swap swap defaults 0 0
/dev/sysvg/root / ext3 [b]noacl,relatime[/b] 1 1
/dev/cciss/c0d0p1 /boot ext3 acl,user_xattr 1 2
/dev/sysvg/data /data reiserfs defaults 1 2
/dev/sysvg/home /home ext3 defaults 1 2
/dev/sysvg/opt /opt ext3 defaults 1 2
/dev/sysvg/tmp /tmp ext3 defaults 1 2
/dev/sysvg/usr /usr ext3 defaults 1 2
/dev/sysvg/var /var ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
[/font]
Angesetzt habe ich mal ähnlich wie:
Code:
[font=courier]
mp='/'
file=/etc/fstab
regmp=$(echo $mp|sed 's#/#\\/#g') # escape slashes
newopts='noacl,relatime'
oldline=$(awk "\$2~/^$regmp$/" $file)
newline=$(awk "\$2~/^$regmp$/" $file | awk "\$4=\"$newopts\"")
sed "s#$oldline#$newline#" $file
[/font]
Das Ganze funktioniert soweit scheinbar ganz gut - nun möchte ich aber ganz gerne natürlich noch die Optik einigermaßen halten sodaß zumindest bis zu den Mountoptions die Anzahl der Whitespaces eingehalten wird was aber scheinbar awk bei der Übergabe in die Variable auf das nötigste runterkürzt.
Also aus
Code:
[font=courier]/dev/sysvg/root / ext3 defaults 1 1[/font]
Code:
[font=courier]/dev/sysvg/root / ext3 noacl,relatime 1 1[/font]
Hat jemand eine Idee wie man das noch in den Griff bekommen könnte?
Gruß Daniel
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
[edit]
Hm, eine Idee wäre noch das Ganze so umzubauen daß nicht awk für die Ersetzung verwendet wird sondern sed:
Code:
[font=courier]
mp='/'
file=/etc/fstab
regmp=$(echo $mp|sed 's#/#\\/#g') # escape slashes
newopts='noacl,relatime'
oldline=$(awk "\$2~/^$regmp$/" $file)
oldopts=$(awk "\$2~/^$regmp$/{print \$4}" $file)
newline=$(awk "\$2~/^$regmp$/" $file | sed "s#$oldopts#$newopts#")
sed "s#$oldline#$newline#" $file
[/font]
Gruß Daniel
Zuletzt bearbeitet: