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

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

#!/bin/bashnolo_user=0login_user=0while read user;do
   bash_type=$(echo $user | cut -d: -f7)   if [ "${bash_type##*/}" == nologin ];then
      let nolo_user+=1
   else
       let login_user+=1
   fidone</etc/passwdecho ${nolo_user}echo ${login_user}

2、寫一個腳本

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

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

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

#!/bin/bash#hostname=$(hostname)if [ "$hostname" == localhost ];then
    hostname www.magedu.com && echo `hostname`else
     echo `hostname`fi

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

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

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

#!/bin/bash#for i in $@ ;do
   if ! blkid | grep "$i";then
      echo "$i no exist" 
   fidone

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

腳本能夠接受一個參數;

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

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

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

#!/bin/bash#case $1 inyes|y)   echo "continue"
   ;;
quit|q)    echo "quit"
    exit 0
    ;;
*)    exit 12
    ;;esac
      I

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#case $1 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 "error"
   exit 1
   ;;
esac

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

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

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

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

(4) 其它為無法判斷;

#!/bin/bash#for i in $@;do
  if [ -f $i ];then
     echo "NORMAL"
  elif [ -d $i ];then
      echo "use cd command"
  elif [ -L $i ];then
      echo "file path"
  else
       echo "can not judge"
   fidone

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

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

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

   #!/bin/bash#if [ `hostname` == localhost ] || [ -z `hostname` ];then
   hostname mail.mageedu.comelse
  echo $(hostname)
fi

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

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

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

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

#!/bin/bash#for i in $@;do
  if ! id $i &>/dev/null;then
     echo "$i no exsit "
     continue
  elif  [ `id -u $i` -eq 0 ] ;then
     echo "$i is admin"
  elif [ `id -u $i` -gt 0 -a `id -u $i` -lt 500 ];then
     echo "$i is system user"
  else
     echo "$i is normal user"
  fidone

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

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

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

#!/bin/bash#for i in $@ ;do
   grep "^\<${i}\>.*sh$" /etc/passwd &>/dev/null
   value=$(echo $?)   if ! id $i;then
      echo "user no exsit"
   elif [ $(id -u $i) -ge 500 ] && [ ${value} -eq 0 ] ;then
      echo "a user can log system"
   else
      echo "cannot log system"
   fidone

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

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

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

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

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

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

#!/bin/bash # for i in `ls /var/log`;do 
   if ls -l /var/log/$i | grep "^d" &>/dev/null;then 
      cp -r /var/log/$i /tmp/test1-testn/ 
   elif ls -l /var/log/$i | grep "^[-]" &>/dev/null;then 
      cp  /var/log/$i /tmp/test1-testn/ 
   elif ls -l /var/log/$i | grep "^[l]" &>/dev/null;then 
      cp  -d /var/log/$i /tmp/test1-testn/ 
   else 
      cp  -a /var/log/$i /tmp/test1-testn/ 
   fi done

原創文章,作者:N22-武漢-enfp,如若轉載,請注明出處:http://www.www58058.com/53345

(0)
N22-武漢-enfpN22-武漢-enfp
上一篇 2016-10-20 23:04
下一篇 2016-10-21 19:55

相關推薦

  • 運行級別

    運行級別(Runlevel)指的是Unix或者Linux等類Unix操作系統下不同的運行模式。運行級別通常分為7等,分別是從0到6,但如果必要的話也可以更多。 例如在大多數Linux操作系統下一共有如下7個典型的運行級別: 0 停機,關機 1 單用戶,無網絡連接,不運行守護進程,不允許非超級用戶登錄 2 多用戶,無網絡連接,不運行守護進程 3 多用戶,正常啟…

    Linux干貨 2017-07-10
  • yum命令的用法

    1.列出所有可更新的軟件清單命令:yum check-update 2.安裝所有更新軟件命令:yum update 3.僅安裝指定的軟件命令:yum install <package_name> 4.僅更新指定的軟件命令:yum update <package_name> 5.列出所有可安裝的軟件清單命令:yum list 用YUM安…

    Linux干貨 2017-08-11
  • 壓縮及解壓工具

    通過算法壓縮數據,時間換空間。文本文件的壓縮比更大,二進制文件的壓縮比較小。 壓縮工具占用cpu時鐘。 compress/uncompress .Z gzip/gunzip .gz bzip2/bunzip2 .bz2 壓縮比比gz大但是也沒取代gz xz/unxz .xz 壓縮比大,現在較流行。 zip/unzip .zip 歸檔工具,既能歸檔又能壓縮 t…

    Linux干貨 2016-08-21
  • SHELL腳本基礎速覽

    變量的賦值: Shell變量賦值從右到左進進行賦值 格式:NAME=value 變量的聲明: export 變量名  export NAME=value declare –x 變量名 declare –x NAME=value   readonly 變量名  特定情況下需要使用到只讀變量 readonly NAME=v…

    2017-04-15
  • free命令的介紹及參數的詳細分析

           通過對free命令的深入學習,我覺得有必要整理一個文檔,供自己和小伙伴們今后的復習使用。   free 命令的詳細剖析      參數有:-b/k/m/g    分別以bytes/kilobytes/megabyte…

    2017-07-17
  • N25-第一周

    一:計算機主要組成及其功能 計算機的主要組成部分可以歸納為以下五個部分:控制器、運算器、存儲器、輸入設備、和輸出設備。  功能介紹:         1.控制器          …

    Linux干貨 2016-12-04
欧美性久久久久