N26-第九周作業-邢巖

馬哥門徒-N26-邢巖


相信自己、勤奮努力、不斷總結!shell腳本練習需要重復、重復、再重復!那么,我就繼續來寫、寫、寫。N26-第九周作業-邢巖N26-第九周作業-邢巖N26-第九周作業-邢巖

1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;


#****************************************************

# Author: jeque
# Last modified: 2017-04-02 23:04
# Filename: user10.sh
# Description: 
# Version: 1.1 
#****************************************************
declare user_login=0
declare user_nologin=0
for i in $(cat /etc/passwd | cut -d: -f7); do
    if [ $i == “/sbin/nologin” ];then
        let user_nologin++
    else
        let user_login++
    fi
done
echo “login user number:$user_login”
echo “nologin user number:$user_nologin”

N26-第九周作業-邢巖


2、寫一個腳本

    (1) 獲取當前主機的主機名,保存于hostname變量中;

    (2) 判斷此變量的值是否為localhost,如果是,則將當前主機名修改為www.magedu.com;

    (3) 否則,則顯示當前主機名;


#!/bin/bash

#****************************************************
# Email: 2372911967@qq.com
# Author: jeque
# Time: 2017-04-02 23:31
# Filename: localhost1.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
HostName=$(/bin/hostname)
if [ $UID -eq 0 ];then
    if [ $HostName == “localhost.localdomain” ];then
        hostname www.magedu.com
        echo “hostname changed”
    else
        hostname
    fi
else
    echo”You must be root to change the hostname.”
    exit 1
fi

N26-第九周作業-邢巖

3、寫一個腳本,完成如下功能

    (1) 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;

    (2) 如果存在,則顯示此設備上的所有分區信息;


#!/bin/bash

#****************************************************
# Email: 2372911967@qq.com
# Author: jeque
# Time: 2017-04-03 18:03
# Filename: fdev.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
if [ $# -ge 1 ];then
    for dev in $*;do
        if [ -b $dev ];then
            fdisk -l $dev
        else
            nodev=$nodev” “$dev
        fi
    done
    [[ $(echo $nodev | wc -c) -gt 1 ]] && echo -e “\nThe device is not exist,plesae try again.\n$nodev”
else
    echo “please put in an exist device.”
fi

N26-第九周作業-邢巖N26-第九周作業-邢巖


4、寫一個腳本,完成如下功能

   腳本能夠接受一個參數;

   (1) 如果參數1為quit,則顯示退出腳本,并執行正常退出;

   (2) 如果參數1為yes,則顯示繼續執行腳本;

   (3) 否則,參數1為其它任意值,均執行非正常退出;


#!/bin/bash
#****************************************************
# Email: 2372911967@qq.com
# Author: jeque
# Time: 2017-04-03 18:39
# Filename: parameter.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
menu () {
cat <<END
    1.quit
    2.yes
    3.other
    please input the parameter you want:
END
}
menu
read -p “Your choice: ” option

case $option in
quit)
    echo “Exit the script.”
    exit
    ;;
yes) 
    echo “Script continue.”
    ;;
*)
    exit 2
esac

N26-第九周作業-邢巖N26-第九周作業-邢巖


5、寫一個腳本,完成如下功能

   傳遞一個參數給腳本,此參數為gzip、bzip2或者xz三者之一;

   (1) 如果參數1的值為gzip,則使用tar和gzip歸檔壓縮/etc目錄至/backups目錄中,并命名為/backups/etc-20160613.tar.gz;

   (2) 如果參數1的值為bzip2,則使用tar和bzip2歸檔壓縮/etc目錄至/backups目錄中,并命名為/backups/etc-20160613.tar.bz2;

   (3) 如果參數1的值為xz,則使用tar和xz歸檔壓縮/etc目錄至/backups目錄中,并命名為/backups/etc-20160613.tar.xz;

   (4) 其它任意值,則顯示錯誤壓縮工具,并執行非正常退出;


#!/bin/bash

#****************************************************
# Email: 2372911967@qq.com
# Author: jeque
# Time: 2017-04-03 21:08
# Filename: parameter2.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
menu () {
cat <<END
    1.gzip
    2.bzip2
    3.xz
    please input the parameter listed above:
END
}

myPath=”/backups”
if [ ! -x “$myPath” ];then 
    mkdir -p “$myPath” &> /dev/null
fi

menu
read -p “Your choice:” option
case $option in
gzip) 
    tar -zcf /backups/etc-$(date +%Y%m%d).tar.gz /etc &> /dev/null
    echo “The new filename is etc-$(date +%Y%m%d).tar.gz”
    ;;
bzip2)
    tar -jcf /backups/etc-$(date +%Y%m%d).tar.bz2 /etci &> /dev/null
    echo “The new filename is etc-$(date +%Y%m%d).tar.bz2”
    ;;
xz)
    tar -Jcf /backups/etc-$(date +%Y%m%d).tar.xz /etc &> /dev/null
    echo “The new filename is etc-$(date +%Y%m%d).tar.xz”
    ;;
*)
    echo “Error compression tools.”
    exit 2
esac

N26-第九周作業-邢巖N26-第九周作業-邢巖N26-第九周作業-邢巖


6、寫一個腳本,接受一個路徑參數:

   (1) 如果為普通文件,則說明其可被正常訪問;

   (2) 如果是目錄文件,則說明可對其使用cd命令;

   (3) 如果為符號鏈接文件,則說明是個訪問路徑;

   (4) 其它為無法判斷;


#!/bin/bash

#****************************************************
# Email: 2372911967@qq.com
# Author: jeque
# Time: 2017-04-03 22:17
# Filename: files11.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
if [ $# -lt 1 ]; then
    echo “At least one path.”
    exit 1
elif ! [ -e $1 ]; then
    echo “No such file!”
    exit 2
elif [ -f $1 ]; then
    echo “Common file.”
    echo ” It can be normal access.”
elif [ -d $1 ]; then
    echo “Directory file.”
    echo “You can use command ‘cd’ to the file.”
elif [ -L $1 ]; then
    echo “Symbolic link file.”
    echo “An access path! “
else
    echo “Unkown!” 
    echo “Can’t judge!”
fi

N26-第九周作業-邢巖N26-第九周作業-邢巖


7、寫一個腳本,取得當前主機的主機名,判斷

   (1) 如果主機名為空或為localhost,或為””(none)””,則將其命名為mail.magedu.com;

   (2) 否則,顯示現有的主機名即可;


#!/bin/bash

#****************************************************
# Email: 2372911967@qq.com
# Author: jeque
# Time: 2017-04-03 22:39
# Filename: localhost2.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
HostName=$(/bin/hostname)
if [ $UID -eq 0 ];then
    if [ $HostName == “localhost” ];then
        hostname mail.magedu.com
        echo “hostname changed”
    elif [ $HostName == ” ” ]; then
        hostname mail.magedu.com
    elif [ $HostName == “(none)” ];then
        hostname mail.magedu.com

    else
        hostname
    fi
else
    echo”You must be root to change the hostname.”
exit 1
fi

N26-第九周作業-邢巖


   OK!shell腳本暫時先練到這里,該休息了!Bye!N26-第九周作業-邢巖

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

(0)
jequejeque
上一篇 2017-04-03 22:35
下一篇 2017-04-04 10:12

相關推薦

  • 一個開發眼中的運維

    在云計算時代,開發和運維的結合變得越來越重要。在DIFF論壇第一期,前新浪SAE運維主管,鄭志勇,分享了《一個開發眼中的運維》根據自己從開發人員轉型運維之后的心得,談如何把在開發上的運用抽象思維方式運用到運維領域。 1. 運維不是什么? 運維不是打雜的,運維不是客服,運維也不是服務開發的,但要做好合作。 2. 運維是什么? 運維服務于整個產品,保證架構合理,…

    Linux干貨 2015-03-11
  • Linux 別名與二進制的使用。

    二進制 一般二進制這個名詞聽上去高深莫測,然而當你了解它之后其實并不復雜,在計算機里處理數據一般都是由二進制處理。 平時我們計數都是以10為進制,比如平時數數:1、2、3、4、5、6、7、8、9,數到10時就會導致個位變成0,十位變成了1,因為9+1要向十位進一,十進制意味著數字的每一位最小為0,最大為9。同理,二進制意味著數字的每一位最小為0,最大為1,十…

    Linux干貨 2017-05-20
  • Leetcode 編程訓練

    Leetcode這個網站上的題都是一些經典的公司用來面試應聘者的面試題,很多人通過刷這些題來應聘一些喜歡面試算法的公司,比如:Google、微軟、Facebook、Amazon之類的這些公司,基本上是應試教育的功利主義。 我做這些題目的不是為了要去應聘這些公司,而是為了鍛煉一下自己的算法和編程能力。因為我開始工作的時候基本沒有這樣的訓練算法和編程的網站,除了…

    Linux干貨 2016-08-15
  • 千萬不要把 bool 設計成函數參數

    我們有很多Coding Style 或 代碼規范。但這一條可能會經常被我們所遺忘,就是我們經常會在函數的參數里使用bool參數,這會大大地降低代碼的可讀性。不信?我們先來看看下面的代碼。 當你讀到下面的代碼,你會覺得這個代碼是什么意思? widget->repaint(false); 是不要repaint嗎?還是別的什么意思?看了文檔后,我們才知道這個…

    Linux干貨 2016-07-10
  • bash編程函數select語句的使用

    £select             select循環主要用于創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,并顯示PS3提示符,等待用戶的輸入,用戶輸入菜單列表中的某個數字,執行相應的命令,用戶輸入被保存在變量REPLY中。 select是個…

    Linux干貨 2016-08-24
  • 馬哥教育網絡第21期-第十二周課程練習

    1、請描述一次完整的http請求處理過程; (1) 建立或處理連接:接收請求或拒絕請求 (2) 接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程;并發訪問響應模型(Web I/O): //服務器接受客戶端的請求 單進程I/O結構:啟動一個進程處理用戶請求,而且一次只處理一個;多個請求被串行響應; //一個進程只有一個…

    Linux干貨 2016-12-26

評論列表(2條)

  • 馬哥教育
    馬哥教育 2017-04-10 16:21

    總結的很好,腳本的思路清晰,加油~~~~

  • Dotty
    Dotty 2017-04-24 10:27

    Cool! That’s a clever way of loonkig at it!

欧美性久久久久