1. 編寫 hello world 腳本
#!/bin/bash
echo "hello world"
2. 通過位置變量建立 Linux 系統賬戶及密碼
#$1 是執行腳本的第一個參數,$2 是執行腳本的第二個參數
useradd "$!"
echo "$2" | passwd ‐‐stdin "$2"
3. 每周 5 使用 tar 指令備份/var/log 下的所有日志檔案
#vim /root/logbak.sh
#編寫備份腳本,備份後的檔案名包含日期标簽,防止後面的備份将前面的備份資料覆寫
#注意 date 指令需要使用反引号括起來,反引号在鍵盤<tab>鍵上面
tar -czf log-`date +%Y%m%d`.tar.gz /var/log
# crontab ‐e #編寫計劃任務,執行備份腳本
00 03 * * 5 /root/logbak.sh
4. 一鍵部署 LNMP(RPM 包版本)
#使用 yum 安裝部署 LNMP,需要提前配置好 yum 源,否則該腳本會失敗
#本腳本使用于 centos7.2 或 RHEL7.2
yum ‐y install httpd
yum ‐y install mariadb mariadb‐devel mariadb‐server
yum ‐y install php php‐mysql
systemctl start httpd mariadb
systemctl enable httpd mariadb
5. 實時監控本機記憶體和硬碟剩餘空間,剩餘記憶體小于 500M、根分區剩餘空間小于 1000M
時,發送報警郵件給 root 管理者
#Author:丁丁曆險(Jacob)
#提取根分區剩餘空間
disk_size=$(df / |awk '/\//{print $4}')
#提取記憶體剩餘空間
mem_size=$(free |awk '/Mem/{print $4}')
while :
do
#注意記憶體和磁盤提取的空間大小都是以 Kb 為機關
if [ $disk_size ‐le 512000 ‐a $mem_size ‐le 1024000 ];then
mail ‐s Warning root <<EOF
Insufficient resources,資源不足
EOF
fi
done
6. 腳本生成一個 100 以内的随機數,提示使用者猜數字,根據使用者的輸入,提示使用者猜對了,
猜小了或猜大了,直至使用者猜對腳本結束。
#RANDOM 為系統自帶的系統變量,值為 0‐32767 的随機數
#使用取餘算法将随機數變為 1‐100 的随機數
num=$[RANDOM%100+1]
#使用 read 提示使用者猜數字
#使用 if 判斷使用者猜數字的大小關系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小
于等于)
while :
read ‐p "計算機生成了一個 1‐100 的随機數,你猜: " cai
if [ $cai ‐eq $num ];then
echo "恭喜,猜對了"
exit
elif [ $cai ‐gt $num ];then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
7. 檢測本機目前使用者是否為超級管理者,如果是管理者,則使用 yum 安裝 vsftpd,如果不
是,則提示您非管理者(使用字串對比版本)
if [ $USER == "root" ];then
yum ‐y install vsftpd
else
echo "您不是管理者,沒有權限安裝軟體"
8. 檢測本機目前使用者是否為超級管理者,如果是管理者,則使用 yum 安裝 vsftpd,如果不
是,則提示您非管理者(使用 UID 數字對比版本)
if [ $UID ‐eq 0 ];then
9. 編寫腳本:提示使用者輸入使用者名和密碼,腳本自動建立相應的賬戶及配置密碼。如果使用者
不輸入賬戶名,則提示必須輸入賬戶名并退出腳本;如果使用者不輸入密碼,則統一使用默
認的 123456 作為預設密碼。
read ‐p "請輸入使用者名: " user
#使用‐z 可以判斷一個變量是否為空,如果為空,提示使用者必須輸入賬戶名,并退出腳本,退出碼為 2
#沒有輸入使用者名腳本退出後,使用$?檢視的傳回碼為 2
if [ ‐z $user ];then
echo "您不需輸入賬戶名"
exit 2
#使用 stty ‐echo 關閉 shell 的回顯功能
#使用 stty echo 打開 shell 的回顯功能
stty ‐echo
read ‐p "請輸入密碼: " pass
stty echo
pass=${pass:‐123456}
useradd "$user"
echo "$pass" | passwd ‐‐stdin "$user"
10. 依次提示使用者輸入 3 個整數,腳本根據數字大小依次排序輸出 3 個數字
read ‐p "請輸入一個整數:" num1
read ‐p "請輸入一個整數:" num2
read ‐p "請輸入一個整數:" num3
#不管誰大誰小,最後都列印 echo "$num1,$num2,$num3"
#num1 中永遠存最小的值,num2 中永遠存中間值,num3 永遠存最大值
#如果輸入的不是這樣的順序,則改變數的存儲順序,如:可以将 num1 和 num2 的值對調
tmp=0
#如果 num1 大于 num2,就把 num1 和和 num2 的值對調,確定 num1 變量中存的是最小值
if [ $num1 ‐gt $num2 ];then
tmp=$num1
num1=$num2
num2=$tmp
#如果 num1 大于 num3,就把 num1 和 num3 對調,確定 num1 變量中存的是最小值
if [ $num1 ‐gt $num3 ];then
num1=$num3
num3=$tmp
#如果 num2 大于 num3,就把 num2 和 num3 對标,確定 num2 變量中存的是小一點的值
if [ $num2 ‐gt $num3 ];then
tmp=$num2
num2=$num3
echo "排序後資料為:$num1,$num2,$num3"
本文轉自雲計算王森 51CTO部落格,原文連結:http://blog.51cto.com/13426941/2064514,如需轉載請自行聯系原作者