一鍵部署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...