馬哥教育網絡班22期+第9周課程練習

1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;
    
      [root@test ~]# vim userlgin.sh 
      #!/bin/bash

      declare -i i=0
      declare -i j=0 
      while read line;do
              usershell=$(echo $line |cut -d: -f7)
              if [ "$usershell" == "/sbin/nologin" ];then
                      let i++
              else
                      let j++
              fi
      done </etc/passwd

      echo "the nologin user total:$i"
      echo "the not nologin user total:$j"
      root@test ~]# bash userlgin.sh 

2、寫一個腳本
    (1) 獲取當前主機的主機名,保存于hostname變量中;
    (2) 判斷此變量的值是否為localhost,如果是,則將當前主機名修改為www.magedu.com;
    (3) 否則,則顯示當前主機名;

      [root@test tmp]# vim hostname2.sh
      #!/bin/bash

      hostname=`hostname`
      if [ "$hostname" == "localhost" ]; then
              hostname www.magedu.com
              hostname=`hostname`
              echo $hostname
      else
              echo $hostname
      fi
      [root@test tmp]# bash hostname2.sh

3、寫一個腳本,完成如下功能
    (1) 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;
    (2) 如果存在,則顯示此設備上的所有分區信息;

      [root@test tmp]# vim disk.sh 
      #!/bin/bash

      fdisk -s $1 &> /dev/null

      if [ $? -eq 0 ];then
              fdisk -l $1
      else
              echo "$1 is not exist"
      fi
      [root@test tmp]# bash disk.sh /dev/sdb1

4、寫一個腳本,完成如下功能
   腳本能夠接受一個參數;
   (1) 如果參數1為quit,則顯示退出腳本,并執行正常退出;
   (2) 如果參數1為yes,則顯示繼續執行腳本;
   (3) 否則,參數1為其它任意值,均執行非正常退出;

      [root@www tmp]# vim input2.sh   
      #!/bin/bash

      read -p "Please input yes or quit or other chars:" input
      case $input in
      quit)
              echo "safety exit"
              exit 0
              ;;
      yes)
              echo "continue"
              ;;
      *)
              echo "unsafety exit"
              ;;
      esac
      [root@www tmp]# bash input2.sh


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) 其它任意值,則顯示錯誤壓縮工具,并執行非正常退出;

      [root@www tmp]# vim input2.sh  
      #!/bin/bash

      arg=$1

      case $arg in
      gzip)
              tar -zcf /backups/etc-20160613.tar.gz /etc
              ;;
      bzip2)
              tar -jcf /backups/etc-20160613.tar.bz2  /etc
              ;;
      xz)
              tar -Jcf /backups/etc-20160613.tar.xz   /etc
              ;;
      *)
              echo "compress tool error,please input gzip,bzip2 or xz"
              exit 1
              ;;
      esac
      [root@www tmp]# vim input2.sh
  
6、寫一個腳本,接受一個路徑參數:
   (1) 如果為普通文件,則說明其可被正常訪問;
   (2) 如果是目錄文件,則說明可對其使用cd命令;
   (3) 如果為符號鏈接文件,則說明是個訪問路徑;
   (4) 其它為無法判斷;

      [root@www tmp]# vim filetype2.sh
      #!/bin/bash

      if [ $# -lt 1 ]; then
              echo "At least one word."
              exit 1
      fi

      if [ -f $1 ];then
              echo "You can access it."
      elif [ -L $1 ];then
              echo "it's a file path"
      elif [ -d $1 ];then
              echo "You can use command cd into the file."
      else
              echo "it's an unknow file"
      fi
      [root@www tmp]# bash filetype2.sh /etc

7、寫一個腳本,取得當前主機的主機名,判斷
   (1) 如果主機名為空或為localhost,或為"(none)",則將其命名為mail.magedu.com;
   (2) 否則,顯示現有的主機名即可;

      [root@www tmp]# vim hostname3.sh
      #!/bin/bash

      hostname=`hostname`
      if [ -z "$hostname" -o "$hostname" == "localhost" -o "$hostname" == "(none)" ];
       then        hostname mail.magedu.com
              hostname=`hostname`
              echo $hostname
      else
              echo $hostname
      fi
      [root@www tmp]# bash -x hostname3.sh


8、寫一腳本,接受一個用戶名為參數;
   (1) 如果用戶的id號為0,則顯示其為管理員;
   (2) 如果用戶的id號大于0且小于500, 則顯示其為系統用戶;
   (3) 否則,則顯示其為普通用戶;

      [root@www tmp]# vim userid.sh
      #!/bin/bash
      if [ $# -lt 1 ];then
              echo "Please input an username"
              exit 1
      fi
      id $1 &> /dev/null
      if [ $? -eq 0 ] ;then
              uid=`id -u $1`
              if [ $uid -eq 0 ];then
                      echo "This is an administrator user"
              elif [ $uid -gt 0 -a $uid -lt 500 ];then
                      echo "This is a system user"
              else
                      echo "This is a common user"
              fi
      else
              echo "$1 is not exist"
      fi
      [root@www tmp]# bash userid.sh


10、寫一個腳本,傳遞一個用戶名參數給腳本;
   (1) 如果用戶的id號大于等于500,且其默認shell為以sh結尾的字符串,則顯示“a user can log system.”類的字符串;
   (2) 否則,則顯示無法登錄系統;

      [root@mail tmp]# vim userlg.sh
      #!/bin/bash

      if [ $# -lt 1 ];then
              echo "Please input an username"
              exit 1
      fi
      id $1 &> /dev/null

      if [ $? -eq 0 ];then
              uid=`grep "^$1\>" /etc/passwd |cut -d: -f3`
              shell=`grep "^$1\>" /etc/passwd |cut -d: -f7|grep -o "sh$"`
              if [ $uid -eq 0 ];then
                      echo "the user is an administrator user"
              elif [  $uid -ge 500 -a "$shell" == "sh" ];then
                      echo "a user can log system"
              else
                      echo "the user can't log system"
              fi
      else
              echo "$1 is not exist"
      fi
      [root@mail tmp]# bash -x userlg.sh user1


11、寫一個腳本,完成如下任務 :
   (1) 按順序分別復制/var/log目錄下的每個直接文件或子目錄至/tmp/test1-testn目錄中;
   (2) 復制目錄時,才使用cp -r命令;
   (3) 復制文件時使用cp命令;
   (4) 復制鏈接文件時使用cp -d命令;
   (5) 余下的所有類型,使用cp -a命令;

      [root@mail tmp]# vim  cpfile.sh 
      #!/bin/bash

      file=/var/log/*
      for i in $file;do
              if [ -f $i ];then
                      echo "$i is common file"
                      cp $i /tmp/test1-testn/
              elif [ -L $i ];then
                      echo "$i is link file"
                      cp -d $i /tmp/test1-testn/
              elif [ -d $i ];then
                      echo "$i is directory"
                      cp -r $i /tmp/test1-testn
              else
                      echo "$i is other file"
                      cp -a $i /tmp/test1-testn
              fi
      done
      [root@mail tmp]# bash cpfile.sh

原創文章,作者:N22_上海_長清,如若轉載,請注明出處:http://www.www58058.com/53353

(0)
N22_上海_長清N22_上海_長清
上一篇 2016-10-24
下一篇 2016-10-24

相關推薦

  • 每日一練–8.8 sed,vim

     1 、刪除/etc/grub2.conf 文件中所有以空白開頭的行行首的空白字符     sed  's/^[[:space:]]//g' /etc grub2.conf ? 2 、刪除/etc/fstab 文件中所有以# 開頭,后面至少跟一個空白字符的行的行首的# 和空白字符   &n…

    Linux干貨 2016-08-12
  • httpd服務——CentOS7

    httpd-2.4 新特性:      (1)MPM支持運行為DSO機制;以模塊形式按需加載      (2)event MPM生產環境可用      (3)異步讀寫機制      (4)支持每個模塊…

    Linux干貨 2016-10-12
  • 【26期】Linux第九周學習小總結

    本周帶來的是慢慢的技術分享,有關于計劃任務的分享,涉及的知識點主要是at和cron,crontab的詳解,計劃任務可以將任何腳本、程序或文檔安排在某個最方便的時間運行,有利于我們的自動化運維,當某項任務多次重復,或者某個指定的時間點多次執行時,就可以使用計劃任務方便我們的工作。

    2017-09-09
  • Windows與linux分區的區別:

        對于我們普通人來講,分區就是我們看到的“我的電腦”下面的C盤、D盤、E盤······,每個分區都有自己的區域,無法使用別的分區的空間,這樣可以起到保護分區中文件的作用。其實,這樣很容易理解??墒牵瑢τ趌inux初學者來講,因為使用習慣了windows,到了linux下面,一下子很難轉換過來。  &nb…

    2017-07-16
  • N22-第一周(作業)

    馬哥教育網絡班22期-第一周課程練習:   一.描述計算機的組成及其功能       計算機組成:CPU :包含控制器,運算器,寄存器,緩存。通過時序復用的方式來處理加工來自輸入設備的指令或數據,協調各組件之間的工作       存儲器(內存):編址存儲單元陣列,用于暫時存放CP…

    Linux干貨 2016-08-13
  • N26第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。    who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。    last | head -1   3、取出當前系統上被用戶當作其默認s…

    Linux干貨 2017-02-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-02 14:41

    完成的非常好,給出了詳細操作步驟,腳本思路清晰,能把排版在完善一下就更完美了,加油!

欧美性久久久久