馬哥教育網絡班21期+第9周課程練習

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

#!/bin/bash
while read line; do
    if [[ $line =~ .*/sbin/nologin$ ]]; then
        let i++
    else
        let j++
    fi
done < /etc/passwd
echo "Number of log shell:$j."
echo "Number of nolog shell:$i."

2、寫一個腳本

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

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

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

#!/bin/bash
hostname=`hostname`
if [[ $hostname == "localhost" ]]; then
    hostname www.mageud.com && echo "The hostname changed for www.magedu.com"
else
    echo "The hostname is $hostname."
fi

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

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

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

#!/bin/bash
read -p "Please enter a path of device:" path
df $path &> /dev/null
if [ $? -eq 0 ]; then
    parted $path print
else
    echo "$path not exists."
fi

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

腳本能夠接受參數;

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

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

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

#!/bin/bash
[ $# -eq 0 ] && echo "Enter something!" && exit 1
case $1 in
quit)
    echo "Quit $0!" && exit 0
    ;;
yes)
    echo "Stay $0! " 
    while true; do
        read -p "Please enter again:" again
        [[ $pathagain == 'quit' ]] && echo "ByeBye!" && exit 0
        [[ $pathagain != 'quit''yes' ]] && echo "Goodbye!" && exit 2
        bash 5.sh $pathagain
    done
    ;;
*)
    echo "Quit!" && exit 2
esac

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

傳遞一個參數給腳本,此參數為gzip、bzip2或者xz三者之一;

(1) 如果參數1的值為gzip,則使用tar和gzip歸檔壓縮/etc目錄至/backups目錄中,并命名為/baskups/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
[ $# -eq 0 ] && echo "Enter something!" && exit 1
case $1 in
gzip)
    tar -czf /backups/etc-`date +%Y%m%d`.tar.gz /etc/ &> /dev/null
    echo "tar and gzip finished!"
    ;;
bzip2)
    tar -cjf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc/ &> /dev/null
    echo "tar and bzip2 finished!"
    ;;
xz)
    tar -cJf /backups/etc-`date +%Y%m%d`.tar.xz &> /etc/ /dev/null
    echo "tar and xz finished!"
    ;;
*)
    echo "Wrong tools!"
    exit 3
    ;;
esac

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

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

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

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

(4) 其他則為無法判斷;

#!/bin/bash
read -p "Please enter a path of file:" path
if [ -f $path ]; then
    echo "$path is common file.Can access!"
elif [ -d $path ]; then
    echo " $path is directory.Can use cd command!"
elif [ -s $path ]; then
    echo " $path is symbolic."
else 
    echo "Could't know about $path!"
fi

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

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

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

#!/bin/bash
hostname=`hostname`
if [[ -z $hostname || $hostname || "localhost" || $hostname == "(none)" ]]; then
    hostname mail.magedu.com && echo "Changed for mail.magedu.com"
else
    echo " hostname is $hostname."
fi

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

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

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

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

#!/bin/bash
read -p "Please enter one user:" user
uid=`id -u $user`
if [ $uid -eq 0 ]; then
    echo "$user is adm!"
elif [ $uid -gt 0 -a $uid -lt 500 ]; then
    echo "$user is system user!"
else
    echo "$user is common user!"
fi

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

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

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

#!/bin/bash
[ $# -eq 0 ] && echo "Please enter a user!" && exit 1
uid=`id -u $1`
grep "^$1.*sh$" /etc/passwd &> /dev/null
if [ $? -eq 0 -a $uid -le 500 ]; then
    echo "A user can log system."
else
    echo "$1 can't log system."
fi

11、寫一個腳本,完成如下任務:

(1) 按順序分別復制/var/log目錄下的每個直接文件或子目錄至/tmp/test1-testn目錄中;

(2) 復制目錄時才使用cp -r命令;

(3) 復制文件時使用cp命令;

(4) 復制鏈接時使用cp -d命令;

(5) 余下的所有類型,使用cp -a命令;

#!/bin/bash
dir="/var/log/"
des="/tmp/test1-testn"
mkdir $des
for i in `ls $dir`; do
    if [ -d $i ]; then 
        cp -r $dir$i $des/
    elif [ -f $i ]; then
        cp $dir$i $des/
    elif [ -s $i ]; then
        cp -d $dir$i $des/
    else
        cp -a $dir$i $des/
    fi
done

原創文章,作者:Jeason,如若轉載,請注明出處:http://www.www58058.com/42522

(0)
JeasonJeason
上一篇 2016-09-01
下一篇 2016-09-01

相關推薦

  • Linux系統性能工具

    linux中幾款常用的系統性能分析工具: 1.vmstat命令 解釋: 虛擬內存信息 用法: vmstat [options] [delay [count]] vmstat 2 5 //每2秒刷新一次,一共刷新5次 輸出屬性: procs: r:可運行(正運行或等待運行)進程的個數,和核心數有關 b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度) mem…

    Linux干貨 2017-12-19
  • 干貨 | 20 行 Python 代碼創建可視化地圖

    當我開始建造Vincent時, 我的一個目的就是使得地圖的建造盡可能合理化. 有一些很棒的python地圖庫-參見Basemap?和?Kartograph能讓地圖更有意思. 我強烈推薦這兩個工具, 因為他們都很好用而且很強大. 我想有更簡單一些的工具,能依靠Vega的力量并且允許簡單的語法點到geoJSON文件,詳細描述一個投影和大小/比列,最后輸出地圖. …

    2017-09-08
  • 8-5作業

    1、取本機ip地址 ifconfig |grep -E -o  '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])' 2、取各分區利…

    Linux干貨 2016-08-08
  • 內部命令與外部命令

    內部命令與外部命令 內部命令在系統啟動時就調入內存,是常駐內存的,所以執行效率高。 外部命令是系統的軟件功能,用戶需要時才從硬盤中讀入內存。 1.type type COMMAND 判斷一個命令的類型即判斷一個命令是否為內置命令。   2.enable(內部命令) enable既可以查看內部命令,同時也可以判斷是否為內部命令 enable 顯示所有…

    2017-07-15
  • 優云攜手網易云 助力企業“互聯網+”轉型

    12月16日,網易旗下“網易云”首屆“網易云聚,共創未來”合作伙伴大會在網易杭州園區舉行,優云(uyun.cn)成為首批授牌20家企業之一,并作為核心合作伙伴代表現場簽署了合作伙伴協議。 右二為優云軟件運營經理 柴勇 現場簽署合作伙伴協議 會上,網易杭州研究院執行院長汪源介紹了網易云的戰略生態全境,提出“產品體系+培訓體系+服務體系”的網易云三大核心競爭力,…

    Linux資訊 2017-03-15
  • configure –help 參數詳解

    configure –help 參數詳解及apache2.2靜態編譯和動態編譯參考

    Linux干貨 2016-05-25

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-07 18:28

    腳本寫得非常的漂亮,思路清晰,排版完美,32個贊!

欧美性久久久久