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 08:36
下一篇 2016-10-17 08:37

相關推薦

  • systemd和systemctl

    systemd:      POTS–>boot Sequence(BIOS)–>Bootloader(MBR)–>kernel(ramdisk)–>rootfs(swithroot)–>/sbin/init    &n…

    Linux干貨 2016-09-22
  • grep命令

    alias命令 直接輸入 alias 命令會列出當前系統中所有已經定義的命令別名。 例一:列出當前系統中所有已經定義的命令別名。 [root@localhost ~]# alias alias cp=’cp -i’ alias egrep=’egrep –color=auto’ alias fgrep=’fgrep –color=auto’ alias …

    Linux干貨 2016-01-09
  • Linux自動備份腳本

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1541163        今天網上一個朋友問了我一個shell的題目,讓我幫他做下。下面是題目以及解題思路。 題目:…

    Linux干貨 2016-08-15
  • python高階函數與裝飾器

    ##**高階函數**– 函數是python中的一等公民– 函數也是對象,可調用對象– 函數可以作為普通變量、參數、返回值等等– 數學概念y = g(f(x))– 高階函數滿足以下至少一個條件:1.接收一個或多個函數作為參數 2.輸出一個函數 ##**舉例(計數器)**def counter(base…

    Linux干貨 2017-10-23
  • Homework Week-2 Linux文件管理

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理工具:cp, mv, rm         cp命令:copy  源文件  目標文件                單源復制:cp [O…

    Linux干貨 2016-08-22
  • 使用NFS共享網頁文件

    上圖為我們要搭建的網絡拓撲圖 本次實驗目的:使用NFS文件服務來實現wordpress共享 實驗環境: 需要三臺虛擬機:         分別是:192.168.26.188(服務器端)          &n…

    2017-05-01

評論列表(1條)

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

    作業寫的很好

欧美性久久久久