N22-第九周作業

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

#!/bin/bash
#
declare -i log_user
declare -i notlog_user
while read line;do
    usershell=$(echo $line | cut -d: -f7)
    if [[ "$usershell" == "/sbin/nologin" ]];then
        let notlog_user++
    else
        let log_user++
    fi
done < /etc/passwd    
echo "There are $log_user users can log on,$notlog_user users need not log on."

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

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

3、寫一個腳本,完成如下功能
    (1) 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;
    (2) 如果存在,則顯示此設備上的所有分區信息;

```
#!/bin/bash
#
if fdisk -l | grep "^Disk $1\>" &> /dev/null;then
    fdisk -l $1
else
    echo "This disk is not exists."
fi
```

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

```
#!/bin/bash
#
while true;do
    read -p "please enter a option:" opt
    if [[ $opt == "quit" ]];then
        echo "Exit normally." && exit 0
    elif [[ $opt == "yes" ]];then
        echo "di again."
    else
        exit 2
    fi
done
```

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 [[ $1 == "gzip" ]];then
    tar zcf /backups/etc-20160613.tar.gz /etc/* &> /dev/null
elif [[ $1 == "bzip2" ]];then
    tar jcf /backups/etc-20160613.tar.bz2 /etc/* &>/dev/null
elif [[ $1 == "xz" ]];then
    tar Jcf /backups/etc-20160613.tar.xz /etc/* &>/dev/null
else 
    echo "Wrong zip tools !" && exit 0
fi
```

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

```
#!/bin/bash
#
while true;do
    read -p "Give a dir:" opt
    if [[ -f $opt ]];then
        echo "It is a normal file."
    elif [[ -d $opt ]];then
        echo "It is a directory."
    elif [[ -h $opt ]];then
        echo "It is a sybo link."
    elif [[ $opt == "quit" ]];then
        exit 0
    else 
        echo "can not recognize."
    fi
done
```

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

```
#!/bin/bash
#
hos=$(hostname)
if [[ $hos == "(none)" ]] || [[ $hos == "loaclhost" ]] || [[ $hos == " " ]];then
    hostname mail.magedu.com
else
    hostname
fi
```

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

```
#!/bin/bash
#
if [ $(id -u $1) -eq 0 ];then
    echo "sys admin."
elif [ $(id -u $1) -gt 500 ];then
    echo "normal user."
else
    echo " sys user."
fi
```

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

```
#!/bin/bash
#
read -p "Enter a user:" opt
if [ $(id -u $opt) -ge 500 ] && awk -F: '/$opt/{print $7}' /etc/passwd | grep "sh$" &> /dev/null;then
    echo "User $opt can log system."
else
    echo "$opt can not log on."
fi
```

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

```
#!/bin/bash
#
declare -i i=1
for file in /var/log/*;do
    mkdir /tmp/test$i
    if [[ -d $file ]];then
        cp -r $file /tmp/test$i
        let i++
    elif [[ -f $file ]];then
        cp $file /tmp/test$i
        let i++
    elif [[ -h $file ]];then
        cp -d $file /tmp/test$i
        let i++
    else
        cp -a $file /tmp/test$i
        let i++
    fi
done
```

原創文章,作者:上海-brown,如若轉載,請注明出處:http://www.www58058.com/52854

(0)
上海-brown上海-brown
上一篇 2016-10-24
下一篇 2016-10-24

相關推薦

  • 打造自己小小的RPM包

    關于源碼RPM包的安裝于制作 什么是RPM與SRPM? 1     RPM: 1     SRPM: 2     SRPM的安裝 2 一 .利用rpmbuild默認安裝SRPM檔案 2 二.配置路徑與需要的軟件功能模塊 3  &n…

    Linux干貨 2016-08-24
  • 控制字體顏色的輸出echo[轉載]

    http://onlyzq.blog.51cto.com/1228/546459 echo顯示帶顏色,需要使用參數-e格式如下:echo -e "\033[字背景顏色;文字顏色m字符串\033[0m"例如: echo -e "\033[41;37m TonyZhang \033[0m"其中41的位置…

    Linux干貨 2017-02-01
  • linux作業管理和任務計劃

    一、作業管理 Linux 的作業控制     前臺作業:通過終端啟動,且啟動后一直占據終端;     后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端) 如何讓作業運行于后臺? (1)  運行中的作業: Ctrl+z (2)&nb…

    Linux干貨 2016-09-13
  • Tomcat 全系列發現嚴重安全漏洞

    據 Tomcat 安全組確認,Tomcat 全系列產品均被發現嚴重安全漏洞:CVE-2014-0227 請求夾帶漏洞。 級別:嚴重 受影響版本: Apache Tomcat 8.0.0-RC1 to 8.0.8 Apache Tomcat 7.0.0 to 7.0.54 Apache Tomcat 6.0.0 to 6.0.41 描述:可以通過構造一個截斷請…

    Linux干貨 2015-02-11
  • Linux 登錄趣事

    初入Linux運維,在虛擬機VMware12中裝載CentOS6和CentOS7,均帶有圖形化界面。簡單熟悉Linux,發現了一些關于登錄的趣事,在此與大家分享。 運行環境:CentOS6和CentOS7 工具:系統里的terminal 登錄趣事(以CentOS6為例): (1)自動登錄圖形化界面 每次啟動CentOS6,短暫等待之后便會進入登錄界面,然后選…

    2017-07-15
  • MySQL/MariaDB數據庫備份與恢復

    前言 數據庫一般存放著企業最為重要的數據,它關系到企業業務能否正常運轉,數據庫服務器總會遇到一些不可抗拒因素,導致數據丟失或損壞,而數據庫備份可以幫助我們避免由于各種原因造成的數據丟失或著數據庫的其他問題。本文將講解MySQL/MariaDB數據庫的幾種備份方法。 基礎知識 備份類型 完全備份:備份整個數據庫 部分備份:僅備份其中的一張表或多張表 增量備份:…

    系統運維 2015-05-23

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-02 14:43

    博客寫得非常的好,32個贊,腳本思路清晰,加油!

欧美性久久久久