1、編寫腳本/root/bin/systeminfo.sh, 顯示當前主機系統信息,包括主機名,IPv4 地址,操作系統版本,內核版本,CPU 型號,內存大小,硬盤大小。
#!/bin/bash
echo "hostname is `hostname`"
echo "IPv4 is `ifconfig | sed -n '2p'| sed 's/^[[:space:]]\+inet[[:space:]]\+//' | sed 's/[[:space:]]\+net.*//'`"
echo "OS version is `cat /etc/centos-release`"
echo "OS kernel is `uname -r`"
echo "CPU NO is `uname -m`"
echo "`cat /proc/meminfo | sed -n '1p'`"
echo "sda size is `lsblk | sed -n '2p' | tr -s ' ' '%' | cut -d % -f 4`"
2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中
#!/bin/bash
cp -r /etc/ /root/etc`date +%F`
3、編寫腳本/root/bin/disk.sh, 顯示當前硬盤分區中空間利用率最大的值
#!/bin/bash
echo "disk used biggest is `df | grep '^\/dev\/sd.*' | tr -s ' ' ':' | cut -d : -f 5 | sort -nr | sed -n '1p'`"
4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的IPv4
#!/bin/bash
netstat -nt | grep '[0-9]\.' | tr -s ' ' ':' | cut -d: -f6 | sort | uniq -c | sort –nr
5、 寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID 之和
#!/bin/bash
uid_10="`sed -n '10p' /etc/passwd | cut -d: -f3`"
uid_20="`sed -n '20p' /etc/passwd | cut -d: -f3`"
echo "sum is $[uid_10+uid_20]"
6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和
#!/bin/bash
count1="`grep '^$' $1 | wc -l`"
count2="`grep '^$' $2 | wc -l`"
echo "sum count is $[count1+count2]"
7、 寫一個腳本/root/bin/sumfile.sh, 統計/etc, /var,/usr目錄中共有多少個一級子目錄和文件
#!/bin/bash
etc_count="`ls -d /etc/* | wc -l`"
var_count="`ls -d /var/* | wc -l`"
usr_count="`ls -d /usr/* | wc -l`"
echo "/etc count is $etc_count"
echo "/var count is $var_count"
echo "/etc count is $usr_count"
8、寫一個腳本/root/bin/argsnum.sh ,接受一個文件路徑作為參數;如果參數個數小于1 ,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1 ,則顯示第一個
參數所指向的文件中的空白行數
#!/bin/bash
[ $# -lt 1 ] && echo "one arg at least" || echo "`grep -c '^$' $1`"
9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4 地址做為參數,測試是否可連通。如果能ping 通,則提示用戶“該IP 地址可訪問”;如果不可ping 通,則提示用戶“
該IP地址不可訪問”
#!/bin/bash
read -p "please input IPv4:" ip
#echo "$ip"
ping -c1 -w1 $ip &> /dev/null && echo "$ip can access" || echo "$ip can not access"
10、判斷硬盤的每個分區空間和inode的利用率是否大于80,如果是,發郵件通知root磁盤滿
#!/bin/bash
for i in $(df | grep '\/dev\/sd.*' | tr -s ' ' ':' | cut -d: -f1,5 | sed 's/%//'); do
# echo "this is $i"
sd_name=`echo $i | cut -d: -f1`
sd_use=`echo $i | cut -d: -f2`
[ $sd_use -gt 70 ] && echo "$sd_name disk space used $sd_use%, mail to system admin" || echo "$sd_name disk space used $sd_use%,ok"
done
echo "#####################################################"
for i in $(df -i | grep '\/dev\/sd.*' | tr -s ' ' ':' | cut -d: -f1,5 | sed 's/%//'); do
# echo "this is $i"
sd_name=`echo $i | cut -d: -f1`
sd_use=`echo $i | cut -d: -f2`
[ $sd_use -gt 70 ] && echo "$sd_name disk inode used $sd_use%, mail to system admin" || echo "$sd_name disk inode used $sd_use%,ok"
done
11、指定文件做為參數,判斷文件是否為.sh后綴,如果是,添加x權限
#!/bin/bash
read -p "please input file name:" file_name
if [ ! -e $file_name ]; then
echo "$file_name is not exist"
exit
fi
if [[ $file_name =~ .sh ]]; then
echo "suffix is .sh"
if [ ! -x $file_name ]; then
echo "$file_name add x"
chmod +x $file_name
else
echo "$file_name have x already"
fi
else
echo "suffix is not .sh"
fi
12、判斷輸入的IP是否為合法IP
#!/bin/bash
read -p "please input ip:" ip
ip=`echo $ip | sed 's/^[[:space:]]\+//' | sed 's/[[:space:]]\+$//'`
#echo $ip
echo $ip | egrep -o "(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>)" &> /dev/null && echo "ip is ok" || echo "ip is not ok"
13、 計算1+2+3+…+100
[root@localhost bin]# seq -s '+' 1 100 | bc
5050
14、輸入起始值A和最后值B,計算從A+(A+1)…+(B-1)+B的總和
#!/bin/bash
read -p "please input A:" a
if [[ ! $a =~ [1-9][0-9]* ]]; then
echo "A please input Integer"
exit
fi
read -p "please input B:" b
if [[ ! $b =~ [1-9][0-9]* ]]; then
echo "B please input Integer"
exit
fi
if [[ $a < $b ]]; then
echo "`seq -s '+' $a $b | bc`"
else
echo "sorry, B bigger than A"
fi
原創文章,作者:songzizhe,如若轉載,請注明出處:http://www.www58058.com/35894