shell腳本作業

1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,
IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。
腳本代碼
#!/bin/bash
#author:wzc
        echo Hostname: `hostname`
       
        echo IP address:`ifconfig |head -n2 |tail -n1|cut -d. -f1-4
        |cut -dt -f2|cut -dn -f1`
       
        echo System version: `cat /etc/system-release`
     
        echo kernel version: `uname -r`
    
        echo CPU Type:`lscpu | grep "Model name"
        |cut -d: -f2|tr -s " "`
     
        echo Disk size :`fdisk -l|grep "sda:"|sed 's/.*:'//|sed 's/,.*'//
        |sed 's/^[[:space:]]\+'//`
        
        echo Memory size : `free -m|grep "Mem"|tr -s [[:space:]]
        |cut -d" " -f 2` MB
腳本測試結果:
Hostname: wzc.localdomain
IP address: 10.1.253.22
System version: CentOS Linux release 7.2.1511 (Core)
kernel version: 3.10.0-327.el7.x86_64
CPU Type: Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz
Disk size :128.8 GB
Memory size : 1824 MB
2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到
/root/etcYYYY-mm-dd中
腳本代碼
#!/bin/bash
#author:wzc
    cp -a /etc /root/etc`date +%F`
腳本測試結果:
[root@wzc date]# ./backup.sh 
[root@wzc date]# ls /root/etc2016-08-15/
3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值
腳本代碼:
#!/bin/bash
#author:wzc
    echo "The max using rate is:`df |grep "/dev/sd"| cut -c 44-46 
    | sort -nr | head -1`%"
腳本測試結果
[root@wzc date]# ./disk.sh 
The max using rate is: 51%
4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的
IPv4地址和連接數,并按連接數從大到小排序
腳本代碼
#!/bin/bash
#author:wzc
    echo the links number is:`netstat -nt |tr -s ' '  |cut -d ' ' -f5 
    |cut -d: -f1 |grep [0-9]|sort |uniq -c|sort -nr`
腳本測試結果
[root@wzc date]# ./link.sh 
the links number is: 1 10.1.250.38
5、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶
和第20用戶的ID之和
腳本代碼:  
#!/bin/bash
#author:wzc
        number1=`cat /etc/passwd|sed -n "10p" |cut -d: -f3`
        number2=`cat /etc/passwd|sed -n "20p" |cut -d: -f3`
        let number=$number1+$number2    
        echo $number
腳本測試結果
[root@wzc date]# ./sumid.sh 
70
6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,
計算這兩個文件中所有空白行之和
腳本代碼
#!/bin/bash
#author:wzc
        file1=`grep "^$" $1 | wc -l`            
        file2=`grep "^$" $2 | wc -l`
        file3=$[ $file1+$file2 ]
        echo "space is $file3個"
腳本測試結果
[root@wzc date]# ./sumspace.sh  /etc/issue /etc/passwd
space is 1個
7、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少
個一級子目錄和文件
腳本代碼
[root@wzc date]# vim sumfile.sh
#!/bin/bash
#author:wzc
        etcnum=`ls  /etc/|wc -l`
        varnum=`ls  /var/|wc -l`
        usrnum=`ls  /usr/|wc -l`
        echo the totalfile is "$[$etcnum+$varnum+$usrnum]"

腳本測試結果
[root@wzc date]# ./sumfile.sh 
the totalfile is 293
8、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作為參數;
如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;
如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數
腳本代碼
#!/bin/bash
#author:wzc
  [[ $# -lt 1 ]] && echo "argnum less than 1" || grep -c  '^[[:space:]]*$' $1
腳本測試結果
[root@wzc date]# ./argsnum.sh 
argnum less than 1
9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,
測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;
如果不可ping通,則提示用戶“該IP地址不可訪問”
腳本代碼
#!/bin/bash
#author:wzc
  ping -c1 -W1 $1 &> /dev/null && echo ping successfull || echo  ping failture
腳本測試結果
[root@wzc date]# ./hostping.sh 
ping failture
10、判斷硬盤的每個分區空間和inode的利用率是否大于80,如果是,
發郵件通知root磁盤滿
腳本代碼
#!/bin/bash
#author:wzc
    dl=`df -hT|tr -s " "|cut -d" " -f6|grep -o "[[:digit:]]\+"|sort -nr 
| df -hT|tr -s " "|cut -d" " -f6|grep -o "[[:digit:]]\+"|sort -nr|sed -n '1p'`
[ $dl -ge 80 ] && echo "Disk load is high, please timely manner!"|mail -s 
"Disk load warning" root
腳本測試結果
    這里會發一封郵件給root,告知磁盤使用率過高,這是因為掛載光盤的原因

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

(0)
RecallWzcRecallWzc
上一篇 2016-08-15 11:54
下一篇 2016-08-15 11:58

相關推薦

  • 馬哥教育網絡班20期+第5周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep "^[[:space:]]\+.*" /boot/grub/grub.conf   2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep&nb…

    Linux干貨 2016-07-12
  • 再不自動化就晚啦!優云教你4步打造基于CentOS的產品鏡像

    隨著Linux程序的增多,軟件的安裝過程中經常出現如下問題: 1、硬件配置類似或者相同時,批量安裝系統和軟件,希望實現自動化安裝,減少安裝時間和人為出錯。 2、工程實施人員在不同客戶現場進行系統和軟件安裝(硬件配置不同),由于硬件有差別,不容易實現自動化。 筆者針對以上場景,從提高生產效率,減少誤操作的立場,提出如下解決方案,希望能達到拋磚引玉的目的,并能與…

    系統運維 2016-07-16
  • Linux文件查看和管理類命令

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

    2018-03-17
  • Http實踐

    練習:搭建虛擬主機     (1)基于主機名實現三個虛擬主機     (2) 每虛擬主機使用獨立的訪問日志和錯誤日志     (3) 第三個虛擬主機的/admin要進行用戶訪問認證     (4) 在…

    Linux干貨 2016-09-30
  • BASH編程基礎之變量、條件判斷

    一、前言 在linux中,通常我們所指的腳本編程,指的是bash的腳本編程。 bash作為一種過程式的編程語言來說,它應該具備編程語言所應該具備的基本元素,即:變量,流程,函數,數組。今天我們介紹變量以及流程之一的條件判斷。 二、變量 1、初識變量 在編程語言中,編程語言有兩大種,強類型語言和弱類型語言。強類型語言中,要求變量的使用要嚴格符合定義,所有變量都…

    Linux干貨 2015-07-06
  • 博客

       這是我的第一篇博客!   平時學習中,總會遇到或大或小的問題,以及一些新的感悟,在當時能夠十分清晰記得,但過一些時日,便發現又忘記了。以前十分明白的東西,又變得有些模糊,甚至完全忘記。因此特別需要記錄下來,方便日后的查閱或分享給其他遇到類似問題的朋友。    如果以后忘記的某些知識,這時候,翻開以往博客…

    Linux干貨 2017-07-11
欧美性久久久久