N22-冥界之王-第9周作業

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

 declare -a shell
    declare sum_login=0
    declare sum_nologin=0
    shell=($(cat /etc/passwd | cut -d: -f7))
    for((i=0;i<${#shell[*]};i++));do
       if [  "${shell[i]}" = "/sbin/nologin" ];then
             sum_login=$[$sum_login+1]
          else
             sum_nologin=$[$sum_nologin+1]
       fi
   
    done
    echo "nologin users is $sum_nologin."
    echo "login users is $sum_login."

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

#!/bin/bash
     hostname=$(cat /etc/sysconfig/network | grep HOSTNAME | cut -d= -f2)
     if [ "$hostname" = "localhost" ];then
       sed -i "s/localhost/www.magedu.com/g"  /etc/sysconfig/network
     else
       echo $(hostname)
     fi

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

    

#!/bin/bash
      fdisk -l $1 &> /dev/null;
      if [ $? -eq 0 ];then
         fdisk -l $1
       else
          echo "fisk is not found!"
      fi

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

 

case "$1" in
    "yes")
            echo "running...." 
            ;;
    "quit") echo "quit"
            exit 0
            ;;
    "*")
            echo "break"
            exit 1
            ;;
 esac

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 [ $# -eq 1 ];then
        case $1 in 
            "gzip")
                tar -zcf /backup/etc-`date +%F`.tar.gz /etc/* ;;
            "bzip2")
                tar -jcf /backup/etc-`date +%F`.tar.gz /etc/* ;;
            "xz")
                tar -Jcf /backup/etc-`date +%F`.tar.gz /etc/* ;;
            *)
                echo -e "Error Pack Tool \nUsage: $0 gzip|bzip2|xz "
                exit 1 ;;
        esac
      else
        echo -e "Parameters Error \nUsage: $0 gzip|bzip2|xz"
    fi

6、寫一個腳本,接受一個路徑參數:
   (1) 如果為普通文件,則說明其可被正常訪問;
   (2) 如果是目錄文件,則說明可對其使用cd命令;
   (3) 如果為符號鏈接文件,則說明是個訪問路徑;
   (4) 其它為無法判斷;
    #!/bin/bash
  
 
    

if [ $# -eq 1 ];then
        if [ -f $1 ];then
            echo "$1 is file"
        elif [ -d $1 ];then
            echo "$1 is directory "
        elif [ -L $1 ];then
            echo "$1 is  symlink file"
        else
            echo "Can't file $1 type"
        fi
      else
        echo -e "Parameter Error!"
      fi

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

 

#!/bin/bash
     hostname=$(cat /etc/sysconfig/network | grep HOSTNAME | cut -d= -f2)
     if [ "$hostname" = "none" -o "$hostname" = "" ];then
       sed -i "s/localhost/www.magedu.com/g"  /etc/sysconfig/network
     else
       echo $(hostname)
     fi

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

id $1 &> /dev/null
result=$(id -u $1)
if [ $result -eq 0 ];then
    echo "system admin"
 elif [ $result -ge 1  -a $result -le 500 ];then
    echo "system user"
 else
     echo "common user"
fi

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

#!/bin/bash
result=$(id -u $1)
if [ $result -ge 500 ];then
    shell=$(cat /etc/passwd | grep "$result" | cut -d: -f7)
    echo "$shell" | grep "sh$"
    shell_result=$?
    if [ $shell_result -eq 0 ];then
        echo "a user can log system."
       else
        echo "user $1 nologin system."
    fi
  else
   echo "user id less than 500."
         
fi

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

  

#!/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

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

(0)
lihuisjsqlihuisjsq
上一篇 2016-11-01
下一篇 2016-11-01

相關推薦

  • 馬哥教育網絡班21期第3周課程練習

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

    Linux干貨 2016-07-29
  • CentOS7內核編譯

    一.centos7內核編譯(支持ntfs文件系統) 1.下載內核源代碼內核文件(https://www.kernel.org/) 2.解壓縮源代碼文件到指定目錄 tar xvf linux-4.8.10.tar.xz -C /usr/src 3.創建軟鏈接解壓后的文件 cd /usr/src ln -s linux-4.8.10/ linux 4.復制當前系…

    Linux干貨 2016-11-28
  • 初識

    CPU:運算器、控制器、寄存器、緩存 分區不能直接被訪問,需要接口 磁盤0 第一分區  掛載mount      C 磁盤0 第一分區  掛載mount      C:\var 如果一個目錄沒有被分區單獨掛載,那么其數據存儲在父目錄所對應的…

    2017-07-11
  • Linux基礎之創建私有CA過程詳解

    創建私有CA過程詳解 頒發CA自簽證書 創建序列號文件,序列號從01開始 echo 01 > /etc/pki/CA/serial 基于rsa算法生成非對稱加密的密鑰對 umask 077; openssl genrsa -out/etc/pki/CA/private/cakey.pem 2048 頒自簽證書 openssl req -new -x50…

    2017-09-16
  • 馬哥教育網絡班22期+第01周課程練習

    一、描述計算機的組成及其功能:     根據馮·諾依曼體系結構,把計算機劃分為五大部件:運算器、控制器、存儲器、輸入設備、輸出設備。 運算器(加法器):cpu的核心部件,也是計算機存在的價值之一,其采用二進制方式進行計算(因為電阻的存在,使得十進制無法精準處理);控制器:控制CPU讀指令[立即數和間接數],指令含有運算器需要的數…

    Linux干貨 2016-08-12
  • grep和正則表達式

    grep       作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文件逐行進行匹配檢查;打印匹配到的行;       模式:由正則表達式的元字符及文本所編寫出的過濾條件    語法:【選項】【文件】  &…

    2017-08-04
欧美性久久久久