1、
通過位置變量創建linux系統賬戶及密碼
$1 是執行腳本的第一個參數,$2 是執行腳本的第二個參數
1#!/bin/bash
2 # Author: wangshilin
3 # Blog: https://home.cnblogs.com/wangshilin/
4 useradd "$!"
5 echo "$2 | passwd --stdin $2 "
2、
每周5使用tar命令備份/var/log 下的所有日志文件,防止文件覆蓋
1 #!/bin/bash
2 # Author: wangshilin
3 # Blog: https://home.cnblogs.com/wangshilin/
4 # Time: 2019-08-17 01:31:13
5 tar -czf log -`date +%Y%m%d` .tar.gz /var/log
6 00 03 * * 5 /root /logbak.sh
3、
實時監控本機內存和硬盤剩余空間,剩余內存小於500M,根分區剩余空間小於1000M的時候發送報警郵件
#!/bin/bash
#3
disk =$(df -h / | awk '/\//{print $4}')
mem=$(df -h / | awk '/\//{print $4}')
if [ $disk -le 512000 -a $mem -le 1024000 ]; then
mail -s Waring root << EOF
echo"Insufficient resources"
exit 0
fi
4、
腳本生成一個 100 以內的隨機數值,提示用戶猜數字,更具用戶的輸入,提示用戶猜對了,猜打了或猜小了,直至用戶猜對腳本結束。
#!/bin/bash
#4
num=$[RANDOM%100+1]
read -p "Please enter a number:" num
if [ $num -eq $num ]; then
echo "You right"
exit
elif [ $num -gt $num ]; then
echo "Oops,You big"
else
echo"Osps You small"
fi
5、
檢測本機當前用戶是否為超級管理員,如果是管理員,使用 yum 安裝 vsftpd,如果不是,則提示您非管理員,使用字串對比版本
#!/bin/bash
#5
if [ $UID -eq 0 ]; then
yum -y install vsftpd
else
echo "You do not administrator"
fi
~
6、
依次提示用戶輸入 3 個整數,腳本根據數字大小依次排序輸出 3 個數字
#!/bin/bash
#
read -p "請輸入一個整數:" num1
read -p "請輸入一個整數:" num2
read -p "請輸入一個整數:" num3
#不管誰大誰小,最后都打印 echo "$num1,$num2,$num3"
#num1 中永遠存最小的值,num2 中永遠存中間值,num3 永遠存最大值
tmp=0
if [ $num1 -gt $num2 ];then
tmp=$num1
num1=$num2
num2=$tmp
fi
if [ $num1 -gt $num3 ];then
tmp=$num1
num1=$num3
num3=$tmp
fi
if [ $num2 -gt $num3 ];then
tmp=$num2
num2=$num3
num3=$tmp
fi
echo "排序后數據為:$num1,$num2,$num3
7、
編寫腳本,實現人機《石頭,剪刀,布》游戲
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
[root@localhost ~]# vim 7.sh
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
8、
編寫腳本測試192.168.4.0/24整個網段中那些主機處於開機狀態,那些主機處於關機狀態(for 版本)
#!/bin/bash
#
for i in {1..254} do
ping -f 1 -i 0.2 -W 1 192.168.4.$i &>/dev/null
if [ $? –eq 0 ];then
echo "192.168.4.$i is up"
else
echo "192.168.4.$i is down"
fi
done
9、
編寫腳本測試 192.168.4.0/24 整個網段中那些主機處於開機狀態,那些主機處於關機狀態(多進程版),定義一個函數來實現,ping 某一台主機,並檢測主機的存貨狀態
#!/bin/bash
#9
myping(){
ping -c2 -i0.3 -W1 $1 &>/dev/null
if [ $? -eq 0 ];then
echo "$1 is up"
else
echo "$1 is down"
fi
}
for i in {1..254}
do
myping 192.168.4.$i &
done
10、
編寫腳本,復制文件的時候,顯示進度條
i=0
str='#'
ch=('|' '\' '-' '/')
index=0
while [ $i -le 25 ]
do
printf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]}
str+='#'
let i++
let index=i%4
sleep 0.1
done
printf "\n"
11、9*9 乘法表(編寫 shell 腳本,打印 9*9 乘法表)
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$i*$j=$[i*j] "
done
echo
done
12、
使用死循環實時顯示 eth0 網卡發送的數據包流量
1 #!/bin/bash
2 # Author: wangshilin
3 # Blog: https://home.cnblogs.com/wangshilin/
4 # Time: 2019-08-17 01:48:21
5 while :
7 do
9 echo '本地網卡 eth0 流量信息如下: '
11 ifconfig eno16777736 | grep "RX pack" | awk '{print $5}'
13 ifconfig eno16777736 | grep "TX pack" | awk '{print $5}'
15 sleep 1
17 done
1、通過位置變量創建linux系統賬戶及密碼$1 是執行腳本的第一個參數,$2 是執行腳本的第二個參數
#!/bin/bash#1useradd "$!"echo "$2 | passwd --stdin $2 "
2、每周5使用tar命令備份/var/log 下的所有日志文件,防止文件覆蓋tar -czf log -`date +%Y%m%d` .tar.gz /var/log00 03 * * 5 /root /logbak.sh
3、實時監控本機內存和硬盤剩余空間,剩余內存小於500M,根分區剩余空間小於1000M的時候發送報警郵件#!/bin/bash#3disk =$(df -h / | awk '/\//{print $4}')mem=$(df -h / | awk '/\//{print $4}')if [ $disk -le 512000 -a $mem -le 1024000 ]; then mail -s Waring root << EOF echo"Insufficient resources" exit 0fi
4、 腳本生成一個 100 以內的隨機數值,提示用戶猜數字,更具用戶的輸入,提示用戶猜對了,猜打了或猜小了,直至用戶猜對腳本結束。
#!/bin/bash#4num=$[RANDOM%100+1]read -p "Please enter a number:" numif [ $num -eq $num ]; then echo "You right" exitelif [ $num -gt $num ]; then echo "Oops,You big"else echo"Osps You small"fi
5、檢測本機當前用戶是否為超級管理員,如果是管理員,使用 yum 安裝 vsftpd,如果不是,則提示您非管理員,使用字串對比版本
#!/bin/bash#5if [ $UID -eq 0 ]; then yum -y install vsftpdelse echo "You do not administrator"fi~
6、依次提示用戶輸入 3 個整數,腳本根據數字大小依次排序輸出 3 個數字
#!/bin/bash#read -p "請輸入一個整數:" num1read -p "請輸入一個整數:" num2read -p "請輸入一個整數:" num3#不管誰大誰小,最后都打印 echo "$num1,$num2,$num3"#num1 中永遠存最小的值,num2 中永遠存中間值,num3 永遠存最大值
tmp=0if [ $num1 -gt $num2 ];then tmp=$num1 num1=$num2 num2=$tmpfi
if [ $num1 -gt $num3 ];then tmp=$num1 num1=$num3 num3=$tmpfi
if [ $num2 -gt $num3 ];then tmp=$num2 num2=$num3 num3=$tmpfiecho "排序后數據為:$num1,$num2,$num3
7、編寫腳本,實現人機《石頭,剪刀,布》游戲
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[root@localhost ~]# vim 7.sh 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
8、編寫腳本測試192.168.4.0/24整個網段中那些主機處於開機狀態,那些主機處於關機狀態(for 版本)#!/bin/bash#for i in {1..254} do ping -f 1 -i 0.2 -W 1 192.168.4.$i &>/dev/null if [ $? –eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fidone
9、編寫腳本測試 192.168.4.0/24 整個網段中那些主機處於開機狀態,那些主機處於關機狀態(多進程版),定義一個函數來實現,ping 某一台主機,並檢測主機的存貨狀態
#!/bin/bash#9myping(){ ping -c2 -i0.3 -W1 $1 &>/dev/null if [ $? -eq 0 ];then echo "$1 is up" else echo "$1 is down" fi}
for i in {1..254}do myping 192.168.4.$i &done
10、編寫腳本,復制文件的時候,顯示進度條
i=0str='#'ch=('|' '\' '-' '/')index=0while [ $i -le 25 ]do printf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]} str+='#' let i++ let index=i%4 sleep 0.1doneprintf "\n"
11、9*9 乘法表(編寫 shell 腳本,打印 9*9 乘法表)
#!/bin/bashfor i in `seq 9`do for j in `seq $i` do echo -n "$i*$j=$[i*j] " done echodone
12、使用死循環實時顯示 eth0 網卡發送的數據包流量
13、使用user.txt 文件中的人員名單,在計算機中自動創建對應的賬戶並配置初始密碼腳本執行,需要提前准備一個 user.txt 文件,該文件中包含有若干用戶信息
14、編寫批量修改擴展名腳本,如批量將 txt 文件修改為doc文件執行腳本時,需要給腳本添加位置參數腳本名 txt doc (可以將 txt 的擴展名修改為doc)腳本名 doc jpg(可以將doc 的擴展名修改為jpg)
15、查看有多少遠程的 IP 在連接本機(不管是通過 ssh 還是 web 還是 ftp 都統計)使用 netstat -atn 可以查看本機所有連接狀態,-a 查看所有,-t 僅顯示tcp連接信息, -n數字格式顯示local address(第四列是本機的IP和端口信息)Foreign address(第五烈是遠程主機的IP和端口信息)使用awk命令僅顯示第5列數據,再顯示第1列IP地址的信息sort 可以按數字的大小排序,最后使用 Uniq 將多余重復的刪除,並統計重復次數
16、對100 以內的所有正整數相加求和(1+2+3.。。+100)eq 100 可以快速自動生成100個整數