一鍵部署LNMP

2021-10-04 23:45:34 字數 4246 閱讀 9545

一鍵部署dhcp、dns、lamp、mysql、samba、nfs、ntp

sed 處理文字內容

學習方法:

主要學習選項和條件

思路:sed是要替換vim的

語法結構:

1.前置命令 | sed 選項 『條件指令』

2.sed 選項 『條件指令』 檔案

//1.條件可以是行號或者/正則/

//2.沒有條件是預設所有條件

//3.指令可以是增刪改查指令

//4.預設sed會輸出所有的內容,可以使用-n 遮蔽輸出

//5.支援擴充套件正則,使用-r選型

常用的選項:

-n :遮蔽輸出

-r :讓sed支援擴充套件正則

-i :直接修改原始檔,預設值通過記憶體進行修改,原始檔無影響

//多個指令用分號;進行間隔

指令:p : 輸出

準備測試檔案cp /etc/passwd ./passwd

1.列印第三行:

# sed -n 『3p』 passwd

2.列印第3-5行:

# sed -n 『3,5p』 passwd

3.列印第3行和第5行:

# sed -n 『3p;5p』passwd

4.列印第3行以及後面的10行:

# sed -n 『3,+10p』passwd

5.列印奇數行:

# sed -n 『1~2p』passwd

6.列印偶數行:

# sed -n 『2~2p』passwd

7.列印包含root的行:

# sed -n 『/root/p』passwd

8.列印一bash結尾的行:

# sed -n 『/bash$/p』passwd

『$=』:輸出檔案的行數

指令:

p :輸出

d :刪除:

1.刪除檔案最後一行:

# sed 『/katex parse error: expected 'eof', got '#' at position 27: …t 2.刪除檔案空行: #̲ sed 『/^/d』tset.txt

s :替換:

# cat  test.txt

2017 2018 2019

2017 2017 2019

2017 2017 2017

語法結構:

1. sed 『s/old/new/』 tset.txt

//替換第乙個匹配到的old

2. sed 『s/old/new/g』test.txt

//替換所有匹配到的old

3. sed 『s/old/new/2』test.txt

//替換每行匹配到的第2個

替換實現刪除的效果:

1. sed 『s/old//2』test.txt

//刪除匹配到每行的第2個

2. sed -n 『s/old/new/p』test.txt

//列印出替換之後的結果

例項演示: s指令

1.將test.txt 中每行第三個xml替換為xml

sed 『s/xml/xml/3』 test.txt

2.將test.txt 中每行的xml刪除

sed 『s/xml//』 test.txt

3.將每行的/bin/bash替換為/bin/sh

sed 's/\/bin\/bash/\/sbin\/sh/g'

sed 's#/bin/bash#/bin/bash#'

4.將第4-7行加上注釋 (每行開頭加上#號)

# sed 『4,7s/^/#/』 test.txt

5.將以#an 開頭的注釋去掉 (去掉每行開頭的#號)

# sed 『s/^#an/an/』 test.txt

6.刪除檔案中每行的第二個字元,最後乙個字元(兩次操作,需要用分號隔開)

# sed 『s/.//2 ; s/.$//』 test.txt

7.將檔案中每行的第乙個和最後乙個字元進行互換

# sed -r 『s/^(.)(.*)(.)$/\3\2\1/』 test.txt

// -r 選項支援擴充套件正則

8.刪除檔案中所有數字

# sed 『s/[0-9]//』 test.txt

9.刪除行首的空格

# sed -r 『s/^( )+//』 test.txt

10.為檔案中每個的大寫字母新增括號

# sed -r 『s/[a-z]/[\1]/g』

例項:編寫乙個ftp.sh指令碼,用來安裝配置匿名ftp服務

指令碼實現功能:

1.通過yum安裝vsftpd軟體包

2.修改vsfatpd服務配置,開啟匿名上傳

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

4.啟動vsftpd服務,設定為開機自啟

ftp服務安裝及配置:

包名:vsftpd

配置檔案: /etc/vsftpd/vsftpd.conf

埠: 20 21

黑名單檔案: /etc/vsftpd/ftppusers

白名單檔案: /etc/vsftpd/user_list

匿名傳輸:

#anonymous_enable=yes

允許本地使用者登入:

#incal_enable=yes

#!/bin/bash

yum -y install vsftpd

//安裝vsftpd軟體

sed -i 『s/^#an/s/^#//』 /etc/vsftpd/vsftpd.conf

//修改配置檔案

chown ftp /var/ftp/pub

//調整目錄許可權

systemctl restart vsftpd

systemctl enbale vsftpd

sed 多文字處理:

完成以下操作:

修改主機配置檔案

修改hosts檔案,新增兩條對映記錄

192.168.1.2 www.aaa.com

192.168.1.3 www.bbb.com

多文字處理操作:

i :在指定的行之前插入文字

a :在指定的行之後插入文字

c :替換指定的行

語法結構:

# sed 『2a xx』 a.txt //在第二行後面,追加xx

# sed 『2i xx』 a.txt //在第二行前面,追加xx

# sed 『2c xx』 a.txt //將第二行替換為xx

修改主機名配置檔案:新增兩條對映記錄

192.168.1.2 www.aaa.com

192.168.1.3 www.bbb.com

總結:選項:

-n :遮蔽預設輸出

-r :支援擴充套件正則

-i :修改原始檔

條件:行號: 4 4,5 4~2 4,+10

/正則/

指令:p :列印

d :刪除

s :替換 s/舊/新/g

a :追加

i :插入

c :替換行

指令碼例項:

編寫乙個getupwd.sh 實現以下需求:

1.找到使用bash作為登入shell的本地使用者

2.列出這些使用者的shadow密碼記錄

3.按照每行「 使用者名稱 —> 密碼記錄 」 格式儲存到getuowd.log

root - -> 1

11mqxhhawys$yonhc2aqw66xkrzjn2m.syr/

實現思路:

1.先從/etc/passwd中取出以bash結尾的使用者名稱

2.結合迴圈去遍歷取出來的使用者名稱,對/etc/shadow進行處理

3.採用掐頭去尾方式,獲得密碼字串

4.按照指定格式進行追加

#!/bin/bash

username=`sed 『/bash$/s』 /etc/passwd`

for i in $username

do passl=`grep $i /etc/shadow`

pass2=$

pass3=$

echo 「$i - -> $pass3」 >> getupws.log

done

一鍵部署lnmp指令碼

bin bash 關閉防火牆和selinux systemctl stop firewalld setenforce 0 echo 防火牆已關閉 echo 請手動檢查 systemctl disable firewalld dev null echo 1.nginx 安裝進行中 是否安裝常用工具 r...

LNMP環境一鍵部署

1 bin bash 2 用於安裝lnmp環境 34 d software mkdir software56 功能選擇選單 7menu 2829 0 安裝依賴包 30install package 5455 1 編譯安裝nginx 56install nginx 131132 2 原始碼編譯安裝my...

shell指令碼一鍵部署LNMP

author create date 2020 07 15 01 52 version mail description bin bash mysql的原始碼安裝 read p 即將進行mysql原始碼安裝,請問是否進行 y n speed case speed in y mysqld yes my...