第九周 N21 總有刁民想害朕

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

#!/bin/bash
nologinuser=$(awk -F : '$NF~/\/nologin$/ {print $7}' /etc/passwd | wc -l)
#awk -F: '{if($NF=="/sbin/nologin")print $7}' /etc/passwd | wc -l這個效果同nologinuser
loginuser=$(awk -F : '$NF~/\^/nologin$/ {print $7}' /etc/passwd | wc -l)
#awk -F: '{if($NF!="/sbin/nologin")print $7}' /etc/passwd | wc -l 這個效果同loginuser
echo $nologin
echo $loginuser

2、寫一個腳本

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

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

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

#!/bin/bash
 hostname=`hostname`
 if [ "$hostname" != "localhost" -a "$hostname" != "" ];then
  hostname=`hostname www.magedu.com`
 fi
 echo `hostname`

 

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

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

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

  #!/bin/bash
  read -p "input a devname like /dev/sda" devname
  if [ -e $devname ];then 
  fdisk -l $devname
  else echo "not match"
  fi

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

   腳本能夠接受一個參數;

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

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

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

#!/bin/bash
      if [ $# -eq 0 ];then
      echo "give me a canshu"
      exit 19
      fi
      case $1 in 
      quit)
             echo "exit" && exit;;
       yes)
            echo "continue";;
       *)
       echo "exit 20" && exit 20  ;;
       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 0 ];then
      echo "give me a canshu"
      exit 19
      fi
   case $1 in
   gzip)
    tar -zcvf  /backups/etc-`date +%Y%m%d`.tar.gz /etc
    ;;
   bzip2)
    tar -jvf  /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
    ;;
   xz)
    tar -Jvf  /backups/etc-`date +%Y%m%d`.tar.xz /etc
    ;;
   *)
     echo "SB"
     ;;
   esac

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

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

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

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

   (4) 其它為無法判斷;

#!/bin/bash
      if [ $# -eq 0 ];then
      echo "give me a canshu"
      exit 19
      fi
   if [ -f $1 ];then echo "file"
   else if [ -d $1 ];then echo "dir"
   else if [ -L $1 ];then echo "lnk"
   else echo "not known"
   fi

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

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

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

   #!/bin/bash
 hostname=`hostname`
 if [ "$hostname" != "localhost" -a "$hostname" != "" ];then
  hostname=`hostname mail.magedu.com`
 fi
 echo `hostname`

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

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

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

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

#!/bin/bash
    id $1
    if [ $? -eq 0]
    then num=grep '$1' /etc/passwd | cut -d:f3 
    else
    echo "give me  current id"
    fi
    if [  $num -eq 0 ];then 
    echo "root"
    else if [  $num -gt 0 -a $num -lt 500 ];then
    echo "system user" 
    else 
    echo "normal"
    fi

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

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

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

 #!/bin/bash
read -p "name" uid
id ^$uid\>
if [ $? -eq 0 ];then
num = $(grep "^$uid\>" /etc/passwd | cut -d: -f3)
sh = $(grep "^$uid\>" /etc/passwd |cut -d: -f7 )
fi
if [ $num -gt 500 -a "$sh" == `grep "sh$" $sh`];then
echo " can login"
else
echo " 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 `ls /var/log`;do
   if [ -d $i ];then
    cp -d /var/log/$i /tmp/test1;
   elif [ -f $i ];then
    cp  /var/log/$i /tmp/test2;
   elif [ -d $i ];then   
    cp -d /var/log/$i /tmp/test3;
   else
    cp -a /var/log/$i /tmp/test4;
   fi
done

原創文章,作者:N21-總有刁民想害朕,如若轉載,請注明出處:http://www.www58058.com/47789

(0)
N21-總有刁民想害朕N21-總有刁民想害朕
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:44

相關推薦

  • N28_第二周

    linux文件管理命令

    Linux干貨 2017-12-10
  • raid5 陣列

    1 fdisk 分區sdb2,sdd1,sde1, 2  新建raid5 [root@localhost ~]# mdadm -C /dev/md5 -a yes  -l 5  -n 3 -x 1 /dev/sdd1 /dev/sde1  /dev/sdf  /dev/sdb2  3   …

    Linux干貨 2017-04-25
  • Linux系統grep正則表達式

    一、grep命令的使用 首先,我們來了解grep命令,grep (global search regular expression and printing),全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。Linux中的grep命令包括、grep, egrep和fgrep 。egrep是grep…

    Linux干貨 2017-04-23
  • 2018近期it運維大會合集,這五場值得關注!

    17年,我們不僅看到Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb等互聯網巨頭在與DevOps親密接觸,傳統軟件公司如Adobe、IBM、Microsoft、SAP等,亦或是網絡業務非核心的蘋果、沃爾瑪、索尼影視娛樂、星巴克等都在采用DevOps,更看到了國內一大片企業開始鐘情于此。

    2018-03-01
  • 對文件數據操作命令

    對文件數據操作命令   很多時候,我們都會去計算一次數據里頭的的相同類型的數據總數或者查看特性的一些信息,在這個時候我們就需要排序與計算之類的命令來輔助,下面就是幾個好用的操作文件數據命令。 文件查看命令:cat, tac cat [OPTION]… [FILE]…     -E: 顯…

    Linux干貨 2016-08-08
  • rsyslog將日志記錄于MySQL中,并用loganalyzer進行分析日志

    1、首先來安裝lamp環境的支持,與其相關的軟件包      # yum -y install rsyslog-mysql mariadb-server php php-mysql php-gd httpd       說明:rsyslog-mysql在數據庫中生成一個庫文件,但這個文件需…

    Linux干貨 2016-10-23

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-27 09:38

    2,7不對,你這樣做只是一個賦值的操作,并沒有改變主機名,還是少一些判斷條件

欧美性久久久久