22期第九周課堂作業

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

#!/bin/bash
declare -i a=0
declare -i b=0
n=`cat /etc/passwd |cut -d: -f 7`
for i in $n;do
if [ $i == /sbin/nologin ];then
let a++
else
let b++
fi
done
echo "the nologin users number is": $a
echo "the login number users is": $b

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

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

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

    3、寫一個腳本,完成如下功能
        (1)   傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;

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

#!/bin/bash
if [ $# -lt 1 ];then
  echo "please input in least one device"
 exit 2
fi
if [ -e $1 ];then
 fdisk -l $1
else
  echo "no such device"
fi

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

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

#!/bin/bash
read -p "pelase input a common quit/yes": a
if [ $a == quit ];then
  echo "exit script"
  exit 0
elif [ $a == yes ];then
  echo "script continue"
else
   echo "error agrument"
   exit 2
fi

    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 [ $# -lt 1 ];then
 echo "please input in a common"
fi
if [ $1 == gzip ];then
 tar -zcf  /backups/etc-20160613.tar.gz /etc
elif [ $1 == bzip2 ];then
 tar -jcf /backups/etc-20160613.tar.bz2 /etc
elif [ $1 == xz ];then
 tar -Jcf /backups/etc-20160613.tar.xz /etc
else
  echo "argument error"
  exit 2
fi

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

       (4) 其它為無法判斷;

if [ $# -lt 1 ];then
  echo "please input a url"
fi
if [ -L $1 ];then
  echo "this is a access url"
elif [ -d $1 ];then
  echo "can use cd common"
elif [ -f $1 ];then
  echo "normal access"
else
 echo "unknow"
fi

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

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

#!/bin/bash
hostname=`hostname`
if [ $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
a=`id -u $1`
if ! grep "^$1\>" /etc/passwd &> /dev/null; then
 echo "no such user"
elif [ $a -eq 0 ];then
 echo "this is root"
elif [ $a -lt 500 ];then
echo "this system user"
else
  echo "this regular user"
fi

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

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

#!/bin/bash
if [ $# -lt 1 ];then
  echo "please input a agarument"
  exit 2
fi
if ! grep "^$1\>" /etc/passwd &> /dev/null;then
 echo "no such user"
 exit 3
fi
a=`id -u $1`
b=`grep -o "^user1\>.*sh$" /etc/passwd |grep -o sh`
if [ $a -ge 500 ] && [ $b == sh ];then
  echo "a user can log system"
else
   echo "can not login"
fi

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

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

#!/bin/bash
for i in /var/log/*;do
 if [ -d $i ];then
  cp -r $i /tmp/test1-testn
 elif [ -L $i ];then
  cp -d $i /tmp/test1-testn
 elif [ -f $i ];then
  cp  $i /tmp/test1-testn
 else
   cp -a $i /tmp/test1-testn
 fi
done

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

(0)
a295053193a295053193
上一篇 2016-10-17
下一篇 2016-10-17

相關推薦

  • 硬盤的讀寫原理

     硬盤的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬盤的生產都要一定的標準;隨著相應的標準的升級,硬盤生產技術也在升級;比如 SCSI標準已經經歷了SCSI-1 、SCSI-2、SCSI-3;其中目前咱們經常在服務器網站看到的 Ultral-160就是基于SCSI-3標準的;IDE 遵循的是ATA標準,而目前流行的SATA,…

    Linux干貨 2015-04-10
  • linux初步

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理命令 文件管理有哪些命令:ls, cd, pwd, mkdir, rmdir, cp, rm, mv, touch, cat, more, less, head, tail等,下面我們就來詳細的說一下(只說常用的,不是命令全部) (1). ls 命令 1 2 3 4 5 6…

    Linux干貨 2017-01-22
  • linux基礎之bash特性知識點

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     Linux 一切皆文件。個人理解 在linux下的命令操作都算是對文件操作     那么文件管理命令類命令可以分為下面幾類     目錄操作: &nbs…

    Linux干貨 2016-09-24
  • VimTutor(上)

    柚子翻譯,如有理解錯誤或翻譯錯誤,請指正! VimTutor Vim是一款強大的文本編輯器,擁有多命令的特性,tutor解釋了其中大多數命令。 tutor是為了描述足夠多的Vim命令幫助你輕松使用Vim而被制作的,使Vim能成為一個可完成你所有工作意圖的編輯器。 完成tutor的內容大概需要25-30分鐘,所完成時間取決于你通過時間積累的經驗。 注意: 1.…

    Linux干貨 2015-10-18
  • 第一周的作業

    1、描述計算機的組成及其功能。 主要分為五個部分: 控制器:計算機的中樞神經,控制總線使用權限、尋址、管理各類資源的分配。 運算器:對數據進行各種算數運算和邏輯運算。 存儲器:通常指內存RAM,CPU需要運行的程序以及數據都存放在存儲器中供CPU調用處理。 (以上三者為計算機核心的三大部件,依靠這三大部件即可完成核心工作。) 輸入設備:比如鼠標、鍵盤,使用戶…

    Linux干貨 2016-11-02
  • ansible日常入門指南

    ansible的一些基本用法

    2018-01-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-25 13:17

    作業寫的很好

欧美性久久久久