shell腳本練習題

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

#!/bin/bash
##編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信 息,包括主機名,IPv4地址,操作系統版本,內>核版本, CPU型號,內存大小,硬盤大小。
echo "主機名;`hostname`"
echo "ip地址:`ifconfig | tr -s " " ":" | cut -d : -f4 | head -n 2 | tail -n 1`"
echo "內核版本:`uname -r`"
echo "CPU信息:`lscpu | grep -i "model name"`"
echo "操作系統版本:`cat /etc/redhat-release`"
echo "內存剩余量: `free -m | grep Mem | tr -s " " ":" | cut -d : -f4`"
echo "磁盤使用量:`df -h | grep "/dev/sd" | tr -s " " ":" | cut -d : -f5 | tr -d "%"`"

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

#!/bin/bash
##編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄 備份到/root/etcYYYY-mm-dd中
echo "正在備份..."
cp -a /etc /root/etc$(date +%F) && echo "備份完成"
~

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

#!/bin/bash
##編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利 用率最大的值
maxdisk=`df | grep "/dev/sd" | tr -s " " ":" | cut -d : -f5 | sort -nr | head -n1`
maxuse=`df | grep "/dev/sd" | tr -s " " ":" | cut -d : -f1 | sort -nr | head -n1`
echo "磁盤"$maxuse"使用量為:"$maxdisk

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

#!/bin/bash
##編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠 程主機的IPv4地址和連接數,并按連接數從大到小排序
echo -e "遠程主機連接統計為:\n\t連接數\t遠程主機IP"
netstat -nt | tr -s " " | cut -d " " -f5 | cut -d : -f1 | sort -n | uniq -c |tr -s " " "\t"| egrep '([0-9]+.){3}[0-9]+'

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

#!/bin/bash
##寫一個腳本/root/bin/sumid.sh,計算/etc/passwd 文件中的第10個用戶和第20用戶的ID之和
user10=`cat /etc/passwd | cut -d : -f3 | sed -n "10p"`
user20=`cat /etc/passwd | cut -d : -f3 | sed -n "20p"`
let Num=$user10+$user20
echo $Num

6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件 路徑作為參數給腳本,計算這兩個文件中所有空白行之和

#!/bin/bash
##寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件 路徑作為參數給腳本,計算這兩個文件中所有空白行之和
File1=$(grep "^$" $1 | wc -l)
File2=$(grep "^$" $2 | wc -l)
let Sumlink=$File1+$File2
echo "the sum of $1 and $2 spacelines is $Sumlink"

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

#!/bin/bash
##寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件
num1=$(ls -l /etc | wc -l)
num2=$(ls -l /var | wc -l)
num3=$(ls -l /usr | wc -l)
let Num=$num1+$num2+$num3
echo $Num

8、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作 為參數;如果參數個數小于1,則提示用戶“至少應該給一個 參數”,并立即退出;如果參數個數不小于1,則顯示第一個 參數所指向的文件中的空白行數

#!/bin/bash
##寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作 為參數;如果參數個數小于1,則提示用戶“至少應該給一
個 參數”,并立即退出;如果參數個數不小于1,則顯示第一個 參數所指向的文件中的空白行數
[[ $1 == "" ]] && echo "please enter a parameter" || echo $(grep "^$" $1 | wc -l)

9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問

#!/bin/bash
#
ipaddr='(\<([0-9]|[1-9][0-9]|1[0-9]{2}|2([0-4][0-9]|5[0-5]))\>\.){3}\<([0-9]|[1-9][0-9]|1[0-5][1-9]|2([0-4][0-9]|25[0-5]))\>'
    read -p "please input a IPV4 addr: " ipv4
    if [[ $ipv4 =~ $ipaddr ]];then
        echo "a legal IP."
        ping $ipv4 -c 4
        echo "這個IP可以正常訪問"
    else
        echo "unlegal IP"
        echo "請輸入正確的網址"
        exit
    fi

10、chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判 斷當前用戶對/tmp/fiile1文件 是否不可讀且不可寫 ?

#!/bin/bash
##chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判 斷當前用戶對/tmp/fiile1>文件 是否不可讀且不可寫 ?
flie1=/home/soft/zuoye/file
[ -r $file1 ]
arg1=$(echo $?)
echo $arg1
[[ $arg1 -eq 0 ]] && echo "該用戶對此文件有讀的權限" || echo "該用戶對此文件沒有
讀的權限"
[ -w $file1 ]
arg2=$(echo $?)
echo $arg2
[[ $arg2 -eq 0 ]] && echo "該用戶對此文件有寫的權限" || echo "該用戶對此文件沒有
寫的權限"

11、編寫腳本/root/bin/nologin.sh和login.sh,實現禁止和允許普通用戶登錄系統。

#!/bin/bash
touch /etc/nologin

12、計算1+2+3+…+100的值

#!/bin/bash
for (( i = 0; i < 100; i++ ))
do
        result=$[ ${result} + ${i} ]
done
echo $result

原創文章,作者:forest,如若轉載,請注明出處:http://www.www58058.com/35391

(22)
forestforest
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • 第二章 操作系統發展史

    Linux主流版本:   Debian(英語發音:/?d?bi?n/)是由GPL和其他自由軟件許可協議授權的自由軟件組成的操作系統,由Debian項目(Debian Project)組織維護。   歷史: Debian于1993年8月16日由一名美國普渡大學學生伊恩·默多克(Ian Murdock)首次發表。伊恩·默多克最初把他的系統稱為…

    Linux干貨 2016-06-03
  • 馬哥教育網絡班第21期+第三周課程作業

    1. 列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | awk  '{print $1}'|uniq 2.列出最后登錄到當前系統的用戶的相關信息 last | head -1   3. 讀取當前系統上被用戶當做其默認shell最多的那個shell cat /etc/pa…

    Linux干貨 2016-07-26
  • 第8天:腳本基礎,btrf,raid,

    http://note.youdao.com/yws/public/redirect/share?id=61b38adef24ced4dc646a5ef8e68df18&type=false

    Linux干貨 2016-08-16
  • CentOS系統啟動流程

       開機不是只要單擊電源鈕,而關機只要關掉電源鈕就可以了嗎?話是這樣沒錯啦,但是由于 Linux 是一套多人多任務的操作系統,你難保你在關機時沒有人在在線,如果你關機的時候碰巧一大群人在在線工作, 那會讓當時在在線工作的人馬上斷線的!那不是害死人了!一些數據可是無價之寶。    另外 Linux 在執行的時候,雖然你…

    Linux干貨 2016-09-19
  • LVM邏輯卷管理器(Logical Volume Manager)

    邏輯卷管理器(Logical Volume Manager) 簡介      LVM的做法是將幾個物理的分區通過軟件組合成為一塊看起來是獨立的大磁盤(VG),然后將這塊大磁盤再分成可以使用的分區(LV),最終就能夠掛載使用了。內部通過PE來進行擴展或縮小。 PV(PhysicalVolume)物理卷 用fdisk命令調整系統標識…

    Linux干貨 2016-09-01
  • 編譯安裝httpd2.4-centos6

    centos6編譯安裝httpd2.4 默認是不支持,需自己動手進行編譯 apr-1.4+ apr-util-1.4+ :需提前進行編譯安裝這兩個軟件 編輯安裝httpd2.4實例 1、#安裝開發包 [root@www ~]# yum groupinstall “Development Tools” “Server Pla…

    Linux干貨 2017-05-17
欧美性久久久久