您好我正在编写一个shell脚本,该脚本将附加到多个服务器上的fstab下面。
/dev/vg00/lv_berf /opt/berf ext3 defaults 1 2
/dev/vg00/lv_vberf /var/opt/berf ext3 defaults 1 2
但是有些fstab有不同的条目示例
服务器1上的fstab:
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/vg00/lv_swap swap swap defaults 0 0
########### ABCD specific FS ############################################
/dev/vgabdc/lv_apal3 /opt/apal3 ext3 defaults 1 2
服务器2上的fstab /
dev/vgabc/lv_vabc /var/opt/das ext3 defaults 1 2
/dev/vgabc/lv_vabcoracle /var/opt/oracle/abc ext3 defaults 1 2
/dev/vgabc/lv_vgdb20u01 /var/opt/vgdb20 ext3 defaults 1 2
/dev/vgabc/lv_dasredprairie /opt/redprairie ext3 defaults 1 2
/dev/vgabc/lv_common /opt/common ext3 defaults 1 2
########### ABCD Failover filesystems ############################################
/dev/vgabcd/lv_apal3 /abcd/opt/apal3 ext3 defaults 1 2
我希望在" ########### ABCD之前附加..."并在最后一个条目旁边
服务器1上的fstab
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/vg00/lv_swap swap swap defaults 0 0
/dev/vg00/lv_berf /opt/berf ext3 defaults 1 2
/dev/vg00/lv_vberf /var/opt/berf ext3 defaults 1 2
########### ABCD specific FS ############################################
/dev/vgabdc/lv_apal3 /opt/apal3 ext3 defaults 1 2
服务器2上的fstab
/dev/vgabc/lv_vabc /var/opt/das ext3 defaults 1 2
/dev/vgabc/lv_vabcoracle /var/opt/oracle/abc ext3 defaults 1 2
/dev/vgabc/lv_vgdb20u01 /var/opt/vgdb20 ext3 defaults 1 2
/dev/vgabc/lv_dasredprairie /opt/redprairie ext3 defaults 1 2
/dev/vgabc/lv_common /opt/common ext3 defaults 1 2
/dev/vg00/lv_berf /opt/berf ext3 defaults 1 2
/dev/vg00/lv_vberf /var/opt/berf ext3 defaults 1 2
########### ABCD Failover filesystems ############################################
/dev/vgabcd/lv_apal3 /abcd/opt/apal3 ext3 defaults 1 2
我有一个使用sed的工作脚本
line_count=`ssh $i grep -n "ABCD" fstab | cut -d: -f1`
next_line=$((line_count + 1))
ssh $i sed -i "${line_count}i\ '/dev/vg00/lv_berf /opt/berf ext3 defaults 1 2'" fstab
ssh $i sed -i "${next_line}i\ '/dev/vg00/lv_vberf /var/opt/berf ext3 defaults 1 2'" fstab
问题是,当fstab条目在ABCD之前有空格时,它将附加到空格旁边。就像在server1上的fstab上的例子一样,它在### ABCD之前有空格,所以当脚本运行时它将如下所示:
tab1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/vg00/lv_swap swap swap defaults 0 0
/dev/vg00/lv_berf /opt/berf ext3 defaults 1 2
/dev/vg00/lv_vberf /var/opt/berf ext3 defaults 1 2
########### ABCD specific FS ############################################
/dev/vgabdc/lv_apal3 /opt/apal3 ext3 defaults 1 2
如何解决不影响服务器2上具有不同最后条目的fstab上的其他条目的问题?
答案 0 :(得分:0)
使用函数addmntent()
参见addmntent的手册页