腳本練習

1、腳本node

一、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操做系統版本,內核版本,CPU型號,內存大小,硬盤大小。centos

#!/bin/bash
echo '顯示當前系統信息'
echo "主機名:"
hostname
echo "ip地址:"
ifconfig |sed -n "2p" |tr -s " " |cut -d " " -f3
echo "操做系統版本:"
cat /etc/centos-release
echo "內核版本:"
cat /proc/version |cut -d"(" -f1
echo "CPU型號:"
lscpu |sed -n "13p" |tr -s " "|cut -d : -f2
echo "內存大小:"
 free -h |sed -n '2p' |tr -s " " |cut -d " " -f2
echo "硬盤大小:"
fdisk -l |sed -n "2p" |cut -d "," -f1 |cut -d: -f2

二、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中bash

#!/bin/bash
#每日將/etc/目錄備份到/root/etcYYY-mm-dd中
cp -rp /etc/. /root/etc`date +%F`

三、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值less

#!/bin/bash
#author:zhang
echo "顯示硬盤分區中空間利用率最大的值"
df |grep "/dev/sd" |cut -c46-48 |sort -rn |head -1

四、編寫腳本/root/bin/links.sh,顯示正鏈接本主機的每一個遠程主機的IPv4地址和鏈接數,並按鏈接數從大到小排序ide

#!/bin/bash
echo "the links are:"
netstat -nt |tr -s ' '  |cut -d ' ' -f5 |cut -d: -f1 |grep [0-9]|sort -rn |uniq -c

         

五、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和測試

#!/bin/bash
id1=$(sed -n "10p" /etc/passwd |cut -d: -f3)
id2=$(sed -n "20p" /etc/passwd  |cut -d: -f3)
idsum=$((id1+id2))
echo idsum=$idsum

            

六、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑做爲參數給腳本,計算這兩個文件中全部空白行之和spa

#!/bin/bash操作系統

#author:zhangx
#version:1.0
sp1=$(egrep "^[[:space:]]+$" $1 |wc -l)
sp2=$(egrep "^[[:space:]]+$" $2 |wc -l)
sumspace=$[sp1+sp2]
echo "the line of space is $sumspace"

七、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件排序

#!/bin/bash
file1=$(ls -d /etc/* |wc -l)
file2=$(ls -d /etc/* |wc -l)
file3=$(ls -d /etc/* |wc -l)
sumfile=$[file1+file2+file3]
echo "the total is $sumfile"

八、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑做爲參數;若是參數個數小於1,則提示用戶「至少應該給一個參數」,並當即退出;若是參數個數不小於1,則顯示第一個參數所指向的文件中的空白行數ip

#!/bin/bash
[ $# -lt 1 ] && echo "argnum less than 1" || egrep -c '^[[:space:]]+$' $1

九、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址作爲參數,測試是否可連通。若是能ping通,則提示用戶「該IP地址可訪問」;若是不可ping通,則提示用戶「該IP地址不可訪問」

#!/bin/bash
ping -c1 -W1 $1 &> /dev/null && echo "ip能夠訪問" || echo "ip不能夠訪問"

十、判斷硬盤的每一個分區空間和inode的利用率是否大於80,若是是,發郵件通知root磁盤滿

#!/bin/bash
disk=`df |grep "/dev/sda" |cut -c44-46 |sort -rn |head -1`
inode=`df -i |grep "/dev/sda" |cut -c43-44 |sort -rn |head -1`
[ "$disk" -gt 80 -o "$inode" -gt 80 ] &&echo "磁盤已滿" | mail -s "磁盤報警" root &&exit

十一、指定文件作爲參數,判斷文件是否爲.sh後綴,若是是,添加x權限

#!/bin/bash
read -p "please input filename:" file
[ ! -f $file ] &&echo "該文件不存在" && exit 0
[[ $file =~ .*.sh$ ]] &&chmod +x $file &&echo "執行權限添加成功" ||echo "該文件不匹配"

十二、判斷輸入的IP是否爲合法IP

#!/bin/bash
read -p "請輸入IP地址:" ip 
echo $ip |egrep "\b(([0-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])\b" &>/dev/null &&echo "地址合法" ||echo "地址不合法"
1三、計算1+2+3+...+100
#!/bin/bash
echo "計算1+2+3+...+100的值:$(echo {1..100} |tr " " "+" |bc)"

1四、輸入起始值A和最後值B,計算從A+(A+1)...+(B-1)+B的總和

#!/bin/bash
read -p "the first number:" a
read -p "the secnod number:" b
[ $a -lt $b ] &&echo "the addnumber is :$(seq -s + $a $b |bc)"&&exit 0 || [ $a -gt $b ] &&echo "the addnumb is :$(seq -s + $b $a |bc)"
相關文章
相關標籤/搜索