使用sed工具處理/etc/fstab配置檔案
背景:某行有一百多臺伺服器需要重新配置檔案系統,原有的檔案系統的內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
/dev/sdb1
/data/ssd1
/dev/sdc1
/data/ssd2
/dev/sdd1
/data/disk
/dev/sde1
/data/disk2
/dev/sdf1
/data/disk3
/dev/sdg1
/data/disk4
/dev/sdh1
/data/disk5
/dev/sdi1
/data/disk6
/dev/sdj1
/data/disk7
/dev/sdk1
/data/disk8
/dev/sdl1
/data/disk9
/dev/sdm1
/data/disk10
現要求將其改為如下內容:
1
2
3
4
5
6
7
8
9
10
11
12
/dev/sdb
/data/ssd1
/dev/sdc
/data/ssd2
/dev/sdd
/data/disk
/dev/sde
/data/disk2
/dev/sdf
/data/disk3
/dev/sdg
/data/disk4
/dev/sdh
/data/disk5
/dev/sdi
/data/disk6
/dev/sdj
/data/disk7
/dev/sdk
/data/disk8
/dev/sdl
/data/disk9
/dev/sdm
/data/disk10
由於伺服器數量較多和客戶要求盡快處理,鑑於此,我使用shell指令碼與expect指令碼結合的方法進行處理,具體步驟如下:
先建立乙個ip位址檔案,內容如下:
1
2
3
4
5
6
7
[root@ceshiji xgfs]
# cat ip.txt
192.168.100.114
192.168.100.113
192.168.100.112
192.168.100.111
192.168.100.110
。。。。。
由於是實驗,我將/etc/fstab檔案複製乙份到/oldboy/kewai/xgfs/pfzh,下面是expect指令碼,用於完成互動,內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
[root@ceshiji xgfs]
# cat fs.exp
#!/usr/bin/expect
set
ip [lindex $ar** 0]
set
timeout 60
set
password
"root"
spawn
ssh
root@$ip
expect
"*password:"
}
expect eof
exit
shell指令碼使用for迴圈,指令碼內容如下:
說明:實際生產中要使用mount -a重新掛載下檔案系統,使用df -th檢視下檔案系統掛載情況!
1
2
3
4
5
6
7
8
9
[root@ceshiji xgfs]
# cat fs.sh
#!/bin/bash
for
ip
in
$(
cat
/oldboy/kewai/xgfs/ip
.txt)
do
expect fs.exp $ip
cat
/oldboy/kewai/xgfs/pfzh
#mount -a
#df -th
done
執行sh -x fs.sh即可
文字處理工具sed
sed全稱叫stream editor,是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 patternspace 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。然後讀入下行,執行下乙個迴圈。如果沒有使諸如 d 的特殊命令,那會在...
文字處理工具sed
1 刪除centos7系統 etc grub2.cfg檔案中所有以空白開頭的行行首的空白字元 sed d etc grub2.cfg 2 刪除 etc fstab檔案中所有以 開頭,後面至少跟乙個空白字元的行的行首的 和空白字元 sed r space d d etc fstab 包括空白行 sed...
shell指令碼之sed工具使用
執行 顯示 sed 選項 操作 引數 sed 選項 f 指令碼檔案 引數 3.3.1 p 輸出符合條件的文字 root localhost sed n p test.txt 輸出所有內容,等同於 cat test.txt 省略內容 root localhost sed n 3p test.txt 輸...