N25-第九周作業

第九周

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

#!/bin/bash
#

sum_login=0
sum_nologin=0

for i in $(awk -F: '{print $7}' /etc/passwd);do
        if [ "$i" == "/sbin/nologin" ];then
                echo "user nologin."
                let sum1++
        else let sum2++
        fi
done
        echo "可登錄用戶數為:$sum_login,不可登錄用戶數為:$sum_nologin."

[root@zf scripts]# bash user_shell.sh 
user nologin.
user nologin.
....
user nologin.
user nologin.
可登錄用戶數為:33,不可登錄用戶數為:25.

2、寫一個腳本 

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

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

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

#!/bin/bash
#

Hostname=$(hostname)

if [ "$Hostname" == "localhost" ];then
        hostname www.magedu.com
        echo "主機名已修改."
else hostname        
fi

[root@zf scripts]# hostname 
zf.localdomain
[root@zf scripts]# bash hostname.sh 
zf.localdomain
[root@zf scripts]# hostname localhost
[root@zf scripts]# bash hostname.sh  
主機名已修改.

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

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

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

#!/bin/bash
#
if [ $# -lt 1 ];then
    echo "請輸入一磁盤路徑"
    exit 1
fi    

if [ -b $1 ];then
        fdisk -l $1
        else echo "disk is not existed."
                exit 2
fi

[root@zf ~]# bash disk.sh /dev/sda

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00026079

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        1344    10485760   83  Linux
/dev/sda3            1344        1605     2097152   82  Linux swap / Solaris
/dev/sda4            1605        2610     8073689    5  Extended
/dev/sda5            1605        2610     8073657+  83  Linux

4、寫一個腳本,完成如下功能 腳本能夠接受一個參數;

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

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

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

#!/bin/bash
#

if [ $# -lt 1 ];then
        echo "請輸入一個參數"
        exit 1
fi

if [ "$1" == "quit" ];then
        echo "退出腳本“"
        exit 0
elif [ "$1" == "yes" ];then
        echo "繼續執行腳本"
else echo "輸入錯誤"
        exit 2
fi

[root@zf ~]# bash quit.sh quit
退出腳本“
[root@zf ~]# bash quit.sh yes
繼續執行腳本
[root@zf ~]# bash quit.sh y
輸入錯誤

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 [ ! -d /backups ];then
    mkdir /backups
fi

if [ $# -lt 1 ];then
        echo "請輸入一個參數"
        exit 1
fi

if [ "$1" == "gzip" ];then
        tar -zcf  /backups/etc-$(date +%Y%m%d).tar.gz  /etc
elif [ "$1" == "bzip2" ];then
        tar -jcf  /backups/etc-$(date +%Y%m%d).tar.bz2  /etc
elif [ "$1" == "xz" ];then
        tar -Jcf  /backups/etc-$(date +%Y%m%d).tar.xz  /etc
else echo "Input error."
         exit 2
fi

或
#!/bin/bash
#

if [ ! -d /backups ];then
        mkdir /backups
fi

if [ $# -lt 1 ];then
        echo "請輸入一個參數"
        exit 1
fi

case $1 in
gzip)
        tar -zcf  /backups/etc-$(date +%Y%m%d).tar.gz  /etc
        ;;
bzip2)
        tar -jcf  /backups/etc-$(date +%Y%m%d).tar.bz2  /etc
        ;;
xz)
        tar -Jcf  /backups/etc-$(date +%Y%m%d).tar.xz  /etc
        ;;
*)
        echo "Input error."
        exit 2
        ;;
esac

[root@zf ~]# bash yasuo.sh gzip 
tar: 從成員名中刪除開頭的“/”
[root@zf ~]# bash yasuo.sh bzip2
tar: 從成員名中刪除開頭的“/”
[root@zf ~]# bash yasuo.sh xz   
tar: 從成員名中刪除開頭的“/”
[root@zf ~]# bash yasuo.sh jj
Input error.
[root@zf ~]# ls /backups
etc-20170307.tar.bz2  etc-20170307.tar.gz  etc-20170307.tar.xz

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

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

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

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

 (4) 其它為無法判斷;

#!/bin/bash
#

if [ $# -lt 1 ];then
        echo "請傳遞一個路徑參數."
fi

if [ -f $1 ];then
        echo "$1 可被正常訪問."
elif [ -d $1 ];then
        echo "可對$1使用cd命令."
elif [ -L $1 ];then
        echo "$1 是訪問路徑."
else echo "無法判斷."
fi

[root@zf ~]# bash  jiaoben.sh /etc/fstab   
/etc/fstab 可被正常訪問.
[root@zf ~]# bash  jiaoben.sh /dev/dvd
/dev/dvd 是訪問路徑.
[root@zf ~]# bash  jiaoben.sh /dev/
可對/dev/使用cd命令.
[root@zf ~]# bash  jiaoben.sh /dev/sda
無法判斷.

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

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

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

#!/bin/bash
#

Hostname=$(hostname)

if [ -z "$Hostname" -o "$Hostname" == "localhost" -o "$Hostname" == "(none)" ];then
        hostname mail.magedu.com
        echo "主機名已修改."
else  hostname
fi

[root@zf ~]# hostname 
zf.localdomain
[root@zf ~]# bash  hostname.sh      
zf.localdomain
[root@zf ~]# hostname localhost
[root@zf ~]# bash  hostname.sh         
主機名已修改.
[root@zf ~]# hostname "(none)"         
[root@zf ~]# bash  hostname.sh 
主機名已修改.

原創文章,作者:N25-深圳-尋覓,如若轉載,請注明出處:http://www.www58058.com/70912

(0)
N25-深圳-尋覓N25-深圳-尋覓
上一篇 2017-03-10
下一篇 2017-03-10

相關推薦

  • Centos7下的systemd管理

    systemd簡介 Systemd是由紅帽公司的一名叫做Lennart Poettering的員工開發,systemd是Linux系統中最新的初始化系統(init),它主要的設計目的是克服Sys V 固有的缺點,提高系統的啟動速度,systemd和upstart是競爭對手,ubantu上使用的是upstart的啟動方式,centos7上使用systemd替換…

    Linux干貨 2016-09-23
  • Linux GNU AWK使用

                                    Linux GNU AWK使用 本章內容: awk介紹 awk基本用法 awk變量 awk格式化 awk操作符 awk條件判斷…

    系統運維 2016-10-01
  • 【知識點】NO.1—-關于刪除文件后未及時釋放磁盤空間問題

    刪除了某些占用大存儲的文件,發現占用的磁盤空間并沒有的到釋放。怎么解決呢?
    在工作中經常遇到服務器某個存放日志或者某些數據的磁盤(或者目錄),因為檢查不及時磁盤存儲滿了的狀況。釋放空間真的只是刪除文件這么簡單嗎?nonono…

    2017-11-18
  • 進程的基本動作機制

    進程 我們知道硬件到用戶使用分為:硬件,內核(系統),軟件。 硬件也就是我們常見到的計算機等等,就相當于我們的身體,內核就相當于是我們的大腦,軟件就相當于我們的動作。而進程就相當于我們怎么去實現這些動作。 進程是程序的一個具體實現,同一個程序可以執行多次,每次都可以在內存中開辟獨立的空間來裝載,從而產生多個進程。不同的進程還可以擁有各自獨立的IO接口。 進程…

    Linux干貨 2016-06-01
  • shell腳本語言中的選擇執行

    shell腳本語言中的選擇執行 概述 程序執行過程分為順序執行、選擇執行和循環執行。順序執行是指程序按照步驟一步一步地運行。選擇執行是指程序根據特定條件選擇兩項或者多項中的一項運行。循環執行是指程序根據特定條件重復執行直到某個節點結束,繼續運行其他步驟。本篇文章從判斷條件和條件判斷式簡要說明shell腳本語言中程序選擇執行的用法。 shell腳本中的判斷條件…

    Linux干貨 2017-04-17
  • N25-第四周作業

    1、復制/etc/skel目錄為/home/tuse1,要求/home/tuse1及其內部文件的屬組和其它用戶均沒有任何訪問權限。   cp -r /etc/skel /home/tuser1;chmod go= /home/tuse1 2、編輯/etc/group文件,添加組hadoop    vi /et…

    Linux干貨 2016-12-27

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-15 00:39

    贊,幾個腳本的功能完成的不錯~~給閱讀者一種很舒服的感覺~~繼續加油~

欧美性久久久久