shell 使用sed修改系統配置

2021-09-24 02:53:27 字數 4592 閱讀 1563

2.使用sed修改系統配置

問題本案例要求熟悉課上的sed應用案例,並編寫指令碼anonftp.sh,實現以下功能:

通過yum安裝vsftpd軟體包

修改vsftpd服務配置,開啟匿名上傳

調整/var/ftp/pub目錄許可權,允許ftp寫入

啟動vsftpd服務,並設定開機自執行

方案步驟

實現此案例需要按照如下步驟進行。

步驟一:認識課堂上的sed練習

1)修改預設執行級別

確認當前的執行級別配置(以id:開頭的行):

[root@svr5 ~]# grep 「^id:」 /etc/inittab

id:3:initdefault:

將預設執行級別修改為5,確認修改結果:

[root@svr5 ~]# sed -i 『/^id:/s/3/5/』 /etc/inittab

[root@svr5 ~]# grep 「^id:」 /etc/inittab

id:5:initdefault:

再改回去:

[root@svr5 ~]# sed -i 『/^id:/s/5/3/』 /etc/inittab

[root@svr5 ~]# grep 「^id:」 /etc/inittab

id:3:initdefault:

2)修改ip位址的網段部分,主機位址不變。

直接修改網絡卡eth0的配置檔案,檢查原有的配置內容:

[root@svr5 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

device=eth0

bootproto=none

hwaddr=00:0c:29:82:09:e9

onboot=yes

netmask=255.255.255.0

ipaddr=192.168.4.4

type=ethernet

若希望將ip位址192.168.4.4修改為172.16.16.4,則應該定位到「ipaddr」所在的行,執行相應的替換(僅測試,尚未修改):

[root@svr5 ~]# sed 『/^ipaddr/s/192.168.4.4/172.16.16.4/』

/etc/sysconfig/network-scripts/ifcfg-eth0 | grep 「^ipaddr」

ipaddr=172.16.16.4

由於要求只修改網段位址,當上述操作在指令碼中使用時,若要提供給不同的主機執行,顯示不能直接寫成 4 。這種情況下,可以利用擴充套件正規表示式的 \1、\2、……等呼叫,分別對應此前第1個、第2個、…… 以 ()包圍的表示式所匹配的內容。

所以上述操作可以改為如下(啟用擴充套件匹配應新增 -r 選項):

[root@svr5 ~]# sed -r -i 『/^ipaddr/s/192.168.4.(.)/172.16.16.\1/』

/etc/sysconfig/network-scripts/ifcfg-eth0

確認修改結果:

[root@svr5 ~]# grep 「^ipaddr」 /etc/sysconfig/network-scripts/ifcfg-eth0

ipaddr=172.16.16.4

再改回去:

[root@svr5 ~]# sed -r -i '/^ipaddr/s/172.16.16.(.)/192.168.4.\1/』

/etc/sysconfig/network-scripts/ifcfg-eth0

[root@svr5 ~]# grep 「^ipaddr」 /etc/sysconfig/network-scripts/ifcfg-eth0

ipaddr=192.168.4.4

3)調整httpd服務配置,更改**根目錄。

以rhel6預設安裝的httpd軟體包為例,預設**根目錄為「/var/www/html」,現需要將其改為「/opt/wwwroot」(僅示範修改方法,目錄準備等其他工作不再闡述)。

確認原有配置內容:

由於需要替換的字串中有 / ,為了避免與sed替換操作的分隔混淆,可以使用其他字元作為替換分隔,比如可改用「s#old#new#」的方式實現替換:

若要恢復,可再改回去:

步驟二:編寫anonftp.sh指令碼,用來裝配匿名ftp服務

1)任務需求及思路分析

vsftpd服務的安裝、改目錄許可權、起服務等操作可以直接寫在指令碼中。

修改vsftpd.conf配置的工作可以使用sed命令,根據預設配置,只需要定位到以#anon開頭的行,去掉開頭的注釋即可。

準備測試環境(如果未安裝vsftpd,則此處可跳過):

[root@svr5 ~]# yum -y remove vsftpd //解除安裝vsftpd包

… …[root@svr5 ~]# mv /var/ftp/ /var/ftp.old //移除ftp根目錄

[root@svr5 ~]# mv /etc/vsftpd/ /etc/vsftpd.old //轉移舊的配置

2)根據實現思路編寫指令碼檔案

[root@svr5 ~]# vim anonftp.sh

#!/bin/bash

yum -y install vsftpd //安裝vsftpd軟體

cp /etc/vsftpd/vsftpd.conf //備份預設的配置檔案

sed -i 「/#anon/s/#//」 /etc/vsftpd/vsftpd.conf //修改服務配置

chown ftp /var/ftp/pub //調整目錄許可權

/etc/init.d/vsftpd restart //啟動服務

chkconfig vsftpd on //設為自動執行

[root@svr5 ~]# chmod +x anonftp.sh

3)驗證、測試指令碼

執行指令碼anonftp.sh:

[root@svr5 ~]# ./anonftp.sh

… …installed:

vsftpd.x86_64 0:2.0.5-28.el5

complete!

關閉 vsftpd: [失敗]

為 vsftpd 啟動 vsftpd: [確定]

使用ftp登入服務,測試是否可以上傳:

[root@svr5 ~]# ftp localhost //本機訪問測試

connected to localhost.localdomain.

220 (vsftpd 2.0.5)

530 please login with user and pass.

530 please login with user and pass.

kerberos_v4 rejected as an authentication type

name (localhost:root): ftp //匿名登入

331 please specify the password.

password:

230 login successful.

remote system type is unix.

using binary mode to transfer files.

ftp> cd pub //切換到 pub/ 目錄

250 directory successfully changed.

ftp> put install.log //上傳當前目錄下的install.log 檔案

local: install.log remote: install.log

227 entering passive mode (127,0,0,1,192,127)

150 ok to send data.

226 file receive ok.

33139 bytes sent in 0.0065 seconds (5e+03 kbytes/s)

ftp> quit //斷開ftp連線

221 goodbye.

檢視/var/ftp/pub新上傳的檔案:

[root@svr5 ~]# ls -lh /var/ftp/pub/

總計 36k

-rw------- 1 ftp ftp 33k 12-13 18:25 install.log

shell 使用sed修改系統配置

本案例要求熟悉課上的sed應用案例,並編寫指令碼anonftp.sh,實現以下功能 通過yum安裝vsftpd軟體包 修改vsftpd服務配置,開啟匿名上傳 調整 var ftp pub目錄許可權,允許ftp寫入 啟動vsftpd服務,並設定開機自執行 實現此案例需要按照如下步驟進行。步驟一 認識課...

使用sed修改系統配置

本案例要求熟悉課上的sed應用案例,並編寫指令碼anonftp.sh,實現以下功能 實現此案例需要按照如下步驟進行。1 任務需求及思路分析 vsftpd服務的安裝 改目錄許可權 啟服務等操作可以直接寫在指令碼中 修改vsftpd.conf配置的工作可以使用sed命令,根據預設配置,只需要定位到以 a...

修改OpenCart系統配置

後台修改admin配置檔案和修改根目錄下的config.php define http server http 網域名稱 define http image http 網域名稱 image define http admin http 網域名稱 admin define https server h...