馬哥教育網絡班20期-第九周課程作業

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

#!/bin/bash
nologinsum=$(awk -F: '$NF~/\/sbin\/nologin$/{print $1}' /etc/passwd |wc -l)
loginsum=$(awk -F: '$NF!~/\/sbin\/nologin$/{print $1}' /etc/passwd |wc -l)
echo "login user:$loginsum"
echo "nologin user:$nologinsum"

2、寫一個腳本

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

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

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

#!/bin/bash
if [ "$HOSTNAME" == "localhost" ];then
        hostname www.magedu,com
        else
        echo "$HOSTNAME" 
fi

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

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

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

#!/bin/bash
if [ $# -ne 1 ];then
        echo "you input a unknow device!"
        exit 2
fi
fdisk -s $1 &> /dev/null
if [ $? -eq 0 ];then
        fdisk -l $1
else
        echo "The device is no exist!"
fi

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

腳本能夠接受一個參數;

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

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

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

#!/bin/bash
read -p "please input quit,yes,or others:" string
until [ "$string" ==  "quit" ];do
        if [ "$string" ==  "yes" ];then
                echo "try again"
                read -p "please input quit,yes,or others:" string
        else
                echo "error"
                exit 2
        fi
done
        echo "ok"

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
if [ ! -e /backups ];then
mkdir /backups
fi
read -p "please input gzip,bzip,xz:" option
case "$option" in
gzip)
         tar -zcf /backups/etc-20160613.tar.gz /etc
        ;;
bzip)
        tar -jcf /backups/etc-20160613.tar.bz2 /etc
        ;;
xz)
        tar -Jcf /backups/etc-20160613.tar.xz /etc
        ;;
*)
        echo "please input gzip,bzip,xz!"
        exit 0
        ;;
esac

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

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

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

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

   (4) 其它為無法判斷;

#!/bin/bash
read -p "please input a filepath:" path
if      [ -d $path ];then
        echo "It's a folder!"
elif    [ -f $path ];then
        echo "It.s a  regular file!"
elif    [ -h $path ];then
        echo "It's a  accessory path;"
else
        echo "unknow options!"
fi

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

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

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

#!/bin/bash
if [ -z "$HOSTNAME" -o "$HOSTNAME" == "localhost" -o "$HOSTNAME" == "none" ];then
        hostname mail.magedu.com
else
        echo "$HOSTNAME"
fi

8、寫一腳本,接受一個用戶名為參數;

   (1) 如果用戶的id號為0,則顯示其為管理員;

   (2) 如果用戶的id號大于0且小于500, 則顯示其為系統用戶;

   (3) 否則,則顯示其為普通用戶;

#!/bin/bash
read -p "please input a username:" username
id -u $username &> /dev/null
if [ $? -eq 0 ];then
        if      [ $(id -u $username) -eq 0 ];then
                echo "It's a Admin user!"
        elif    [ $(id -u $username) -lt 500 ];then
                echo "It's a system user!"
        else
                echo "It's a registered users!"
        fi
else
        echo "The user is no exist!"
fi

9、寫一個腳本,傳遞一個用戶名參數給腳本;

   (1) 如果用戶的id號大于等于500,且其默認shell為以sh結尾的字符串,則顯示“a user can log system.”類的字符串;

   (2) 否則,則顯示無法登錄系統;

#!/bin/bash
  read -p "please input a username:" username
  id -u $username &> /dev/null
  if [ $? -eq 0 ];then
  #       if [ $(id -u $username) -ge 500 ] && [ $(awk -f: '/^"$username"/{print $NF}') == "/bin/bash" ];then
          if [ $(id -u $username) -ge 500 ] && [ "$(cat /etc/passwd |grep "^root" |cut -d: -f7)" == "/bin/bash" ];then
                  echo "a user can log system!"
           else    
                   echo "a user can't log system"
          fi
  else    
          echo "the user is not exist!"
  fi

10、寫一個腳本,完成如下任務 :

   (1) 按順序分別復制/var/log目錄下的每個直接文件或子目錄至/tmp/test1-testn目錄中;

   (2) 復制目錄時,才使用cp -r命令;

   (3) 復制文件時使用cp命令;

   (4) 復制鏈接文件時使用cp -d命令;

   (5) 余下的所有類型,使用cp -a命令;

#!/bin/bash
[ ! -d /tmp/test1-testn ] && mkdir /tmp/test1-testn
for file in $(ls /var/log);do
        if      [ -d $file ];then
                cp -r /var/log/$file /tmp/test1-testn
        elif    [ -f $file ];then
                cp  /var/log/$file /tmp/test1-testn
        elif    [ -h $file ];then
                cp -d /var/log/$file  /tmp/test1-testn
        else
                cp -a /var/log/$file /tmp/test1-testn
        fi
done

原創文章,作者:Net20_有馬,如若轉載,請注明出處:http://www.www58058.com/44393

(1)
Net20_有馬Net20_有馬
上一篇 2016-09-08 18:55
下一篇 2016-09-08 18:56

相關推薦

  • 鳥哥馬哥齊相聚,linux界最強音

    臺灣著名Linux網站——“鳥哥的Linux私房菜”的站長蔡德明,2015年3月28日受邀到51CTO進行交流,51cto學院還特此邀請大陸linux權威專家馬哥參與了本次活動,在輕松愉快的氛圍下,馬哥和鳥哥以及其他專家人員對于“容器虛擬化下運維調度層的設計”,“Linux在云計算的應用”,“可視化集成運維平臺最佳實踐”等三個議題展開思想的碰撞。本次馬哥和鳥…

    2015-03-30
  • 【福利貼-招聘】- 維護工程師

    地點:黃浦–人民廣場  職位:技術支持/維護 要求:招1人| 大專| 1-2年 薪資范圍: 8-12k 職位職能:技術支持/維護工程師 崗位職責: 1.熟悉Linux及其遠程維護; 2.熟練掌握Linux網絡安裝、日常管理、安全、備份、恢復、故障處理、日志分析等技能; 3.熟悉Web、mysql優化管理、apache等常見的問題及處理 …

    Linux職位 2015-05-14
  • 馬哥團隊帶你揭秘互聯網巨頭公司—騰訊

    馬哥團隊帶你揭秘互聯網巨頭公司—騰訊 前幾日,馬哥團隊成員受邀,到國內互聯網巨頭–騰訊參觀和交流,并用照片記錄下了一些精彩瞬間,這里分享給大家。(希望大家多多努力,早日進入頂級公司) 剛到騰訊大廈,上到公司門口,是騰訊的前臺,(沒想到前臺是個男同胞) 進來后,騰訊的照片墻,十分有質感 訪客必須先登記,會給發放一個騰訊的訪客門牌。 公司…

    學員作品 2015-04-14
  • 【驚爆】馬哥linux2016最新全套課程(內部泄密版)

    你知道么,馬哥linux2016最新全套課程(內部泄密版)被曝光了,小編剛剛得到消息,然后就給大家分享出來了,大家快來點評下,話說2016版課程如何?且聽小編慢慢為你道來 全新內容,全新陣容,引入ELK和Docker內容,更加貼合生產環境應用,全新的Centos7搭載完善的實戰實驗室,強大的不像實力派,特別需要說明的一點:0首付0利率,機會不容錯過?。?! 高…

    學員作品 2015-10-21
  • 腳本例子

    1、每隔3秒鐘到系統上獲取已經登錄的用戶的信息;如果發現用戶hacker登錄,則將登錄時間和主機記錄于日志/var/log/login.log中,并提示該用戶退出系統。 #!/bin/bash #author:Zhu Chaoming #date:20160816 #version:0.1 # while   true…

    學員作品 2016-08-22
  • 馬哥linux運維雄鷹社團第一屆博客大賽

    能登上金字塔塔頂的只有鷹和蝸牛 世界那么大,我想去看看!我帶著你,你帶著錢,想去哪去哪!來馬哥教育,奪博客大賽最佳,實現人生巔峰! 面對現狀你該如何抉擇 親愛的學員們,自己一個人學習是否缺乏動力呢? 是否不知道其他人的學習進度參考,而不能及時激勵自己奮進呢? 是否每每懊悔自己沒有利用好時間,而導致學習進度大幅落下呢? 馬哥linux為你點亮通向遠方的一盞燈 …

    2015-05-20
欧美性久久久久