編寫hello world腳本 #!/bin/bash # 編寫hello world腳本 echo "Hello World!" ##通過位置變數創建 Linux 系統賬戶及密碼 #!/bin/bash # 通過位置變數創建 Linux 系統賬戶及密碼 #$1 是執行腳本的第一個參數,$2 是執行 ...
編寫hello world腳本
#!/bin/bash
# 編寫hello world腳本
echo "Hello World!"
通過位置變數創建 Linux 系統賬戶及密碼
#!/bin/bash
# 通過位置變數創建 Linux 系統賬戶及密碼
#$1 是執行腳本的第一個參數,$2 是執行腳本的第二個參數
useradd "$1"
echo "$2" | passwd ‐‐stdin "$1"
備份日誌
#!/bin/bash
# 每周 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
監控記憶體和磁碟容量,小於給定值時報警
#!/bin/bash
# 實時監控本機記憶體和硬碟剩餘空間,剩餘記憶體小於500M、根分區剩餘空間小於1000M時,發送報警郵件給root管理員
# 提取根分區剩餘空間
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
猜數字游戲
#!/bin/bash
# 腳本生成一個 100 以內的隨機數,提示用戶猜數字,根據用戶的輸入,提示用戶猜對了,
# 猜小了或猜大了,直至用戶猜對腳本結束。
# RANDOM 為系統自帶的系統變數,值為 0‐32767的隨機數
# 使用取餘演算法將隨機數變為 1‐100 的隨機數
num=$[RANDOM%100+1]
echo "$num"
# 使用 read 提示用戶猜數字
# 使用 if 判斷用戶猜數字的大小關係:‐eq(等於),‐ne(不等於),‐gt(大於),‐ge(大於等於),
# ‐lt(小於),‐le(小於等於)
while :
do
read -p "電腦生成了一個 1‐100 的隨機數,你猜: " cai
if [ $cai -eq $num ]
then
echo "恭喜,猜對了"
exit
elif [ $cai -gt $num ]
then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done
破解密碼
# 使用二個嵌套的迴圈生成密碼,並將生成的密碼傳遞給A,最終將結果寫入到log文件。
#!/bin/bash
while read i; do
while read ii; do
password="$i$ii"
result=$(./A -p "$password")
echo "$result-$password" >> log.txt &
sleep 0.01
done < st.txt
done < st.txt
輸入三個數併進行升序排序
#!/bin/bash
# 依次提示用戶輸入 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
fi
# 如果 num1 大於 num3,就把 num1 和 num3 對調,確保 num1 變數中存的是最小值
if [ $num1 -gt $num3 ];then
tmp=$num1
num1=$num3
num3=$tmp
fi
# 如果 num2 大於 num3,就把 num2 和 num3 對標,確保 num2 變數中存的是小一點的值
if [ $num2 -gt $num3 ];then
tmp=$num2
num2=$num3
num3=$tmp
fi
echo "排序後數據(從小到大)為:$num1,$num2,$num3"
石頭、剪刀、布游戲
#!/bin/bash
# 編寫腳本,實現人機<石頭,剪刀,布>游戲
game=(石頭 剪刀 布)
num=$[RANDOM%3]
computer=${game[$num]}
# 通過隨機數獲取電腦的出拳
# 出拳的可能性保存在一個數組中,game[0],game[1],game[2]分別是 3 中不同的可能
echo "請根據下列提示選擇您的出拳手勢"
echo "1.石頭"
echo "2.剪刀"
echo "3.布"
read -p "請選擇 1‐3:" person
case $person in
1)
if [ $num -eq 0 ]
then
echo "平局"
elif [ $num -eq 1 ]
then
echo "你贏"
else
echo "電腦贏"
fi;;
2)
if [ $num -eq 0 ]
then
echo "電腦贏"
elif [ $num -eq 1 ]
then
echo "平局"
else
echo "你贏"
fi;;
3)
if [ $num -eq 0 ]
then
echo "你贏"
elif [ $num -eq 1 ]
then
echo "電腦贏"
else
echo "平局"
fi;;
*)
echo "必須輸入 1‐3 的數字"
esac
9*9 乘法表
#!/bin/bash
# 9*9 乘法表(編寫 shell 腳本,列印 9*9 乘法表)
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$j*$i=$[i*j] "
done
echo
done
編寫批量修改擴展名腳本
#!/bin/bash
# 編寫批量修改擴展名腳本,如批量將 txt 文件修改為 doc 文件
# 執行腳本時,需要給腳本添加位置參數
# 腳本名 txt doc(可以將 txt 的擴展名修改為 doc)
# 腳本名 doc jpg(可以將 doc 的擴展名修改為 jpg)
for i in `ls *.$1`
do
mv $i ${i%.*}.$2
done
dd重裝系統
wget -N --no-check-certificate https://raw.githubusercontent.com/veip007/dd/master/InstallNET.sh && chmod +x InstallNET.sh && ./InstallNET.sh -d 10 -v 64 -p "自定義root密碼" -port "自定義ssh埠"
openssl生成自簽名證書
通過openssl生成私鑰
openssl genrsa -out server.key 2048
# 根據私鑰生成證書申請文件csr
openssl req -new -key server.key -out server.csr
# 使用私鑰對證書申請進行簽名從而生成證書
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
常用的腳本備份
https://archives.vip/6.html