馬哥教育網絡班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 08:50
下一篇 2016-09-01 08:53

相關推薦

  • rsyslog+mariadb+loganalyzer實現日志采集分析

    一、總述   Linux的日志記錄了用戶在系統上一切操作,這些日志是使用者了解服務器的情況最好的資料。Rsyslog 是系統的一部分,能夠實時的寫日志,并且還可以將日志選擇性的發送到遠程日志服務器。   rsyslog日志服務器的優勢:     1、日志統一,集中式管理     &nbsp…

    Linux干貨 2017-01-10
  • 網絡班N22期第三周博客作業

    一、列出當前系統所有已經登錄的用戶名,且同一個用戶登錄多次只顯示一次 [root@bogon ~]# w  15:17:44 up 15:28,  2 users,  load average: 0.00, 0.00, …

    Linux干貨 2016-08-29
  • 有趣的bash腳本

    1、編寫腳本/root/bin/createuser.sh,實現如下功能:使 用一個用戶名做為參數,如果指定參數的用戶存在,就顯示 其存在,否則添加之;顯示添加的用戶的id號等信息 #!/bin/bash read -p “Please input username: ” n if id $n &> /dev/null;then echo “T…

    Linux干貨 2017-08-25
  • gitlab-ce官方文檔查看備錄

    gitlab文檔 關于gitlab-ce GitLab Community Edition (CE) is available freely under the MIT Expat license. 關于unicorn的workers For&nbs…

    Linux干貨 2015-09-06
  • 本地yum倉庫配置以及創建yum倉庫

    如何使用光盤當做本地yum倉庫?     1.掛載光盤至某目錄,例如/media/cdrom      [root@CentOS7 ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr…

    Linux干貨 2016-08-23
  • MYSQL高級運用-MHA(提供主從復制高可用,主節點故障時,進行故障轉移)

    MHA的介紹、重用工具;
    MHA的安裝;
    搭建MYSQL主從復制架構,運用MHA實現其高可用,主節點故障時,進行故障轉移;并恢復整個架構;

    2017-09-24

評論列表(1條)

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

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

欧美性久久久久