N26-第九周

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

#!/bin/bash
#
#
#
NUM1=0
NUM2=0
for i in `cut -d: -f7 /etc/passwd` ;do
        if [[ "$i" = '/bin/bash' ]];then
        let NUM1+=1
        else
        let NUM2+=1
        fi
done
echo " default shell is '/bin/bash' number is $NUM1"" default shell is not '/bin/bash' number is $NUM2" 

2、寫一個腳本

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

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

    

#!/bin/bash
#
#
#
hostname=$HOSTNAME
  [[ ! "$hostname" == 'localhost' ]] && echo $hostname || hostname www.magedu.com

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

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

#!/bin/bash
#
#
#
[[ $# -ne 1  ]] && echo "use $0 arg" && exit
[ -b $1 ]&& fdisk -l $1 || echo "$1 is not exist"
~ 

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

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

[[ $# -ne 1  ]] && echo "use $0 arg" && exit
case $1 in
        quit)
        exit 0
        ;;
        yes)
        echo "use $0 again"
        break
        ;;
        *)
        exit 2
        ;;
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
#
#
#
[[ $# -ne 1  ]] && echo "use $0 gzip or bzip2 or xz" && exit
case $1 in
        gzip)
        tar -Pczf /backups/etc-20160613.tar.gz /etc & >/dev/null
        ;;
        bzip2)
        tar -Pcjf /backups/etc-20160613.tar.bz2 /etc & >/dev/null
        ;;
        xz)
        tar -PcJf /backups/etc-20160613.tar.xz /etc & >/dev/null
        ;;
        *)
        echo "error" 
        exit 2
        ;;
esac

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

   (4) 其它為無法判斷;

#!/bin/bash
#
#
#

[[ $# -ne 1  ]] && echo "use $0 arg" && exit

if [ -d $1 ];then
        echo "$1 is a directory "
elif [ -f $1 ];then
        echo "$1 is a ordinary file"
elif [ -l $1 ];then
        echo "$1 is a link file"
else
        echo "unknown"

fi

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

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

#!/bin/bash
#
#
#

hostname1=${HOSTNAME:-"mail.magedu.com"}
[[ $hostname1 = "mail.magedu.com" ]]&& echo $hostname1 && exit
if [[ $hostname1 = "localhost" ]] ;then
        hostname "mail.magedulcom"
elif [[ $hostname1 = "(none)" ]];then
        hostname "mail.magedu.com"
else
        echo $hostname1
fi                      

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

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

#!/bin/bash
#
#
#
[[ $# -ne 1 ]]&& echo "use $0 username" && exit
if ! id  $1 &> /dev/null ;then
        echo "$1 is not a username"
fi
NUM=`id -u $1`
if [[ $NUM -eq 0 ]];then
        echo "$1 is a administrator"
elif [[ $NUM -gt 0 ]]&& [[  $NUM  -le 500 ]]; then
        echo "$1 is a system user"
else
        echo "$1 is a ordinary user"
fi

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

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

#!/bin/bash
#
#
#
[[ $# -ne 1 ]] && echo "use $1 username " && exit 2
if ! id $1 &> /dev/null ;then
echo "$1 is not a username"
fi
NUM=`id -u $1`
if [[ $NUM -ge 500 ]]&& grep "$1.*sh$" /etc/passwd ;then
        echo "$1 can log system"
else
        echo "$1 can not log system"
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 /var/log/$i ]];then        cp -r /var/log/$i /tmp/test1-testn        elif [[ -f /var/log/$i ]];then        cp /var/log/$i /tmp/test1-testn        elif [[ -L /var/log/$i ]] ;then        cp -d /var/log/$i /tmp/test1-testn        else        cp -a /var/log/$i /tmp/test1-testn        fidone

原創文章,作者:胡安慧,如若轉載,請注明出處:http://www.www58058.com/70808

(0)
胡安慧胡安慧
上一篇 2017-03-15 14:25
下一篇 2017-03-15 19:09

相關推薦

  • 磁盤管理

     磁盤管理  1 磁盤的結構  設備文件     I/O Ports: I/O設備地址 ? 一切皆文件: open(), read(), write(), close() ? 設備類型: 塊設備:block,存取單位“塊”,磁盤 字符設備:char,存取單位“字符”,鍵盤 ? 設備文件:關聯至一個設備驅動程序…

    Linux干貨 2016-08-26
  • N22-℡浮生.若夢 ╮第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ~]# cp -r /etc/skel/ /home/tuser1 ~]# chmod -R 700 /home/tuser1 ~]#&nbsp…

    Linux干貨 2016-09-19
  • 磁盤管理之LVM

    1、什么是LVM     LVM(Logical Volume Manager)邏輯卷管理,是linux環境下將一種將一個或多個硬盤的分區在邏輯上集合來呈現給上層應用,對磁盤實現動態管理的機制。相對于普通的磁盤分區有很大的靈活性,使用LVM在一定程度上就可以解決普通磁盤分區帶來的問題。 2、專業術語     &nbsp…

    Linux干貨 2016-09-02
  • 進程和優先級

    ???? 什么是進程?我們先來了解一下進程的概念:我們知道操作系統最核心的概念就是進程。進程簡單來說就是在操作系統中運行的程序,它是操作系統資源管理的最小單位。但是進程是一個動態的實體,它是程序的一次執行過程。進程和程序的區別在于:進程是動態的,程序是靜態的,進程是運行中的程序,而程序是一些保存在硬盤上的可執行代碼。 ?? 當多個任務要執行時怎么辦呢?先執行…

    2017-09-09
  • 網絡接口Bonding以及網絡組

    網絡接口Bonding就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 網絡組 :網絡組:是將多個網卡聚合在一起方法,從而實現冗錯和提高吞吐量。網絡組不同于舊版中bonding技術,提供更好的性能…

    Linux干貨 2016-11-23
  • 筆記整理:權限管理2-特殊權限(sst)和隱藏屬性

    特殊權限 進程訪問文件時的權限,取決于進程的發起者和其所在的屬組。還有其他權限,包括SST(Suid【可以更改進程發起者】,Sgid【可以更改進程發起者屬組】,Sticky) 查詢SUID/SGID文件   find / -perm +6000 SUID 使用特點 SUID只能作用在二進制文件上。 執行者需要對該文件具有可執行權限 只在程序運行過程…

    Linux干貨 2016-08-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-30 14:26

    可以看出腳本運用的已經比較熟練了, 再接再勵。

欧美性久久久久