100 個 Linux Shell 腳本經(jīng)典案例解析
1)編寫 hello world 腳本
2)通過位置變量創(chuàng)建 Linux 系統(tǒng)賬戶及密碼
3)備份日志
4)一鍵部署 LNMP(RPM 包版本)
5)監(jiān)控內(nèi)存和磁盤容量,小于給定值時報警
6)猜數(shù)字游戲
7)檢測本機當(dāng)前用戶是否為超級管理員, 如果是管理員, 則使用 yum 安裝 vsftpd, 如果不是, 則提示您非管理員 (使用字串對比版本)
8)檢測本機當(dāng)前用戶是否為超級管理員, 如果是管理員, 則使用 yum 安裝 vsftpd, 如果不是, 則提示您非管理員 (使用 UID 數(shù)字對比版本)
9)編寫腳本: 提示用戶輸入用戶名和密碼, 腳本自動創(chuàng)建相應(yīng)的賬戶及配置密碼。如果用戶不輸入賬戶名, 則提示必須輸入賬戶名并退出腳本; 如果用戶不輸入密碼, 則統(tǒng)一使用默認的 123456 作為默認密碼。
10)輸入三個數(shù)并進行升序排序
11)石頭、剪刀、布游戲
12)編寫腳本測試 192.168.4.0/24 整個網(wǎng)段中哪些主機處于開機狀態(tài), 哪些主機處于關(guān)機狀態(tài) (for 版本)
13)編寫腳本測試 192.168.4.0/24 整個網(wǎng)段中哪些主機處于開機狀態(tài), 哪些主機處于關(guān)機狀態(tài) (while 版本)
14)編寫腳本測試 192.168.4.0/24 整個網(wǎng)段中哪些主機處于開機狀態(tài), 哪些主機處于關(guān)機狀態(tài) (多進程版)
15)編寫腳本, 顯示進度條
16)進度條, 動態(tài)時針版本;定義一個顯示進度的函數(shù), 屏幕快速顯示 | ?/ ‐ \
17)9*9 乘法表
18)使用死循環(huán)實時顯示 eth0 網(wǎng)卡發(fā)送的數(shù)據(jù)包流量
19)使用 user.txt 文件中的人員名單, 在計算機中自動創(chuàng)建對應(yīng)的賬戶并配置初始密碼本腳本執(zhí)行, 需要提前準備一個 user.txt 文件, 該文件中包含有若干用戶名信息
20)編寫批量修改擴展名腳本
21)使用 expect 工具自動交互密碼遠程其他主機安裝 httpd 軟件
22)一鍵部署 LNMP(源碼安裝版本)
23)編寫腳本快速克隆 KVM 虛擬機
24)點名器腳本
25)查看有多少遠程的 IP 在連接本機
26)對 100 以內(nèi)的所有正整數(shù)相加求和 (1+2+3+4…+100)
27)統(tǒng)計 13:30 到 14:30 所有訪問 apache 服務(wù)器的請求有多少個
28)統(tǒng)計 13:30 到 14:30 所有訪問本機 Aapche 服務(wù)器的遠程 IP 地址是什么
29)打印國際象棋棋盤
30)統(tǒng)計每個遠程 IP 訪問了本機 apache 幾次
31)統(tǒng)計當(dāng)前 Linux 系統(tǒng)中可以登錄計算機的賬戶有多少個
32)統(tǒng)計 / var/log 有多少個文件, 并顯示這些文件名
33)自動為其他腳本添加解釋器信息
34)自動化部署 varnish 源碼包軟件
35)編寫 nginx 啟動腳本
36)自動對磁盤分區(qū)、格式化、掛載
37)自動優(yōu)化 Linux 內(nèi)核參數(shù)
38)切割 Nginx 日志文件 (防止單個文件過大, 后期處理很困難)
39)檢測 MySQL 數(shù)據(jù)庫連接數(shù)量
40)根據(jù) md5 校驗碼, 檢測文件是否被修改
41)檢測 MySQL 服務(wù)是否存活
42)備份 MySQL 的 shell 腳本 (mysqldump 版本)
43)將文件中所有的小寫字母轉(zhuǎn)換為大寫字母
44)非交互自動生成 SSH 密鑰文件
45)檢查特定的軟件包是否已經(jīng)安裝
46)監(jiān)控 HTTP 服務(wù)器的狀態(tài) (測試返回碼)
47)自動添加防火墻規(guī)則, 開啟某些服務(wù)或端口 (適用于 RHEL7)
48)使用腳本自動創(chuàng)建邏輯卷
49)顯示 CPU 廠商信息
50)刪除某個目錄下大小為 0 的文件
51)查找 Linux 系統(tǒng)中的僵尸進程
52)提示用戶輸入年份后判斷該年是否為閏年
53)生成隨機密碼 (urandom 版本)
54)生成隨機密碼 (字串截取版本)
55)生成隨機密碼 (UUID 版本, 16 進制密碼)
56)生成隨機密碼 (進程 ID 版本, 數(shù)字密碼)
57)測試用戶名與密碼是否正確
58)循環(huán)測試用戶名與密碼是否正確
59)Shell 腳本的 fork 炸彈
60)批量下載有序文件 (pdf、圖片、視頻等等)
61)顯示當(dāng)前計算機中所有賬戶的用戶名稱
62)制定目錄路徑, 腳本自動將該目錄使用 tar 命令打包備份到 / data 目錄
63)顯示進度條 (回旋鏢版)
64)安裝 LAMP 環(huán)境 (yum 版本)
65)循環(huán)關(guān)閉局域網(wǎng)中所有主機
66)獲取本機 MAC 地址
67)自動配置 rsynd 服務(wù)器的配置文件 rsyncd.conf
68)修改 Linux 系統(tǒng)的最大打開文件數(shù)量
69)設(shè)置 Python 支持自動命令補齊功能
70)自動修改計劃任務(wù)配置文件
71)使用腳本循環(huán)創(chuàng)建三位數(shù)字的文本文件 (111-999 的文件)
72)找出 / etc/passwd 中能登錄的用戶, 并將對應(yīng)在 / etc/shadow 中第二列密碼提出處理
73)統(tǒng)計 / etc/passwd 中 root 出現(xiàn)的次數(shù)
74)統(tǒng)計 Linux 進程相關(guān)數(shù)量信息
75)從鍵盤讀取一個論壇積分, 判斷論壇用戶等級
76)判斷用戶輸入的數(shù)據(jù)類型 (字母、數(shù)字或其他)
77)顯示進度條 (數(shù)字版)
78)打印斐波那契數(shù)列
79)判斷用戶輸入的是 Yes 或 NO
80)顯示本機 Linux 系統(tǒng)上所有開放的端口列表
81)將 Linux 系統(tǒng)中 UID 大于等于 1000 的普通用戶都刪除
82)使用腳本開啟關(guān)閉虛擬機
83)調(diào)整虛擬機內(nèi)存參數(shù)的 shell 腳本
84)查看 KVM 虛擬機中的網(wǎng)卡信息 (不需要進入啟動或進入虛擬機)
85)不登陸虛擬機, 修改虛擬機網(wǎng)卡 IP 地址
86)破解虛擬機密碼, 無密碼登陸虛擬機系統(tǒng)
87)Shell 腳本對信號的處理, 執(zhí)行腳本后, 按鍵盤 Ctrl+C 無法終止的腳本
88)一鍵部署 memcached
89)一鍵配置 VNC 遠程桌面服務(wù)器 (無密碼版本)
90)關(guān)閉 SELinux
91)查看所有虛擬機磁盤使用量以及 CPU 使用量信息
92)使用 shell 腳本打印圖形
93)根據(jù)計算機當(dāng)前時間, 返回問候語, 可以將該腳本設(shè)置為開機啟動
94)讀取用戶輸入的賬戶名稱, 將賬戶名寫入到數(shù)組保存
95)判斷文件或目錄是否存在
96)打印各種格式的時間
97)使用 egrep 過濾 MAC 地址
98)統(tǒng)計雙色球各個數(shù)字的中獎概率
99)生成簽名私鑰和證書
100)使用 awk 編寫的 wc 程序