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

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

#!/bin/bash
#
declare -i nologuser=0
declare -i loguser=0
while read line;do
        result1=`echo $line | cut -d: -f7`
        result2=`echo $line | cut -d: -f1`
        if [ $result1 == "/sbin/nologin" ];then
                echo "$result2 is nologinuser"
                let nologuser++
        else
                echo "$result2 is loguser"
                let loguser++
        fi
done < /etc/passwd
echo "nologuer total $nologuser"
echo "loguser total $loguser"                                
[root@localhost ~]# bash userlog.sh 
root is loguser
bin is nologinuser
...
user3 is loguser
user4 is loguser
user5 is loguser
nologuer total 31
loguser total 24

2、寫一個腳本

(1) 獲取當前主機的主機名,保存于hostname變量中;
(2) 判斷此變量的值是否為localhost,如果是,則將當前主機名修改為www.magedu.com;
(3) 否則,則顯示當前主機名;
#!/bin/bash
#
hostname=`hostname`
if [ $hostname == 'localhost' ];then
	hostname www.magedu.com
else
	echo $hostname
fi
[root@mylab ~]# bash -x hn.sh 
++ hostname
+ hostname=localhost
+ '[' localhost == localhost ']'
+ hostname www.magedu.com

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

(1) 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;
(2) 如果存在,則顯示此設備上的所有分區信息;
#!/bin/bash
#
if [ $# -lt 1 ];then
	echo "Usage:bash.sh /dev/sda|..."
	exit 1
else
	diskinfo=`fdisk -l $1 | grep $1`
	result=$?
	if [ $result -eq 0 ];then
		fdisk -l $1 | grep $1
	else
		echo "$1 Unknow dev"
	fi
fi

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

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

#!/bin/bash
#
if [ $# -lt 1 ];then
	echo "Usage:bash quit | yes "
	exit 1
fi
case $1 in
quit )
	echo "quiting"
	exit 0
;;
yes ) 
	echo "continue bash $0"
;;
*)
	echo "Unknow command."
;;
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
#
if [ $# -lt 1 ];then
     echo "Usage:bash:gzip|bzip|xz"
     exit 1
fi
if [ -d /backups ];then
case $1 in
gzip )
	tar -p -P -zcf /backups/etc-`date +%Y%m%d`.tar.gz /etc
;;
bzip2 )
	tar -p -P -jcf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
;;
xz )
	tar -P -p -Jcf /backups/etc-`date +%Y%m%d`.tar.xz /etc
;;
* )
	echo "tar erro"
	exit 2
esac
else
	mkdir -p /backups
case $1 in
gzip )
	tar -p -P -zcf /backups/etc-`date +%Y%m%d`.tar.gz /etc
;;
bzip2 )
	tar -P -p -jcf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
;;
xz )
	tar -p -P -Jcf /backups/etc-`date +%Y%m%d`.tar.xz /etc
;;
* )
	echo "tar erro"
	exit 2
esac
fi

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

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

#!/bin/bash
#
if [ $# -lt 1 ];then
	echo "Usage:bash /filepath/filename."
	exit 1
fi
if [ -f $1 ];then
	echo "This file can access!"
elif [ -d $1 ];then
	echo "use command cd this file"
else
	echo "Unknow this file"
fi

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

(1) 如果主機名為空或為localhost,或為"(none)",則將其命名為mail.magedu.com;
  (2) 否則,顯示現有的主機名即可;

#!/bin/bash
# 
HostName=`hostname`
if [ -z "$HostName" -o "$HostName" == "$HostName" -o "$HostName" == "(none)" ];then
	hostname mail.magedu.com
else
	echo "$HostName"
fi

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

(1) 如果用戶的id號為0,則顯示其為管理員;
  (2) 如果用戶的id號大于0且小于500, 則顯示其為系統用戶;
  (3) 否則,則顯示其為普通用戶;

#!/bin/bash
#
if [ $# -lt 1 ];then
	echo "Usage:bash username"
	exit 1
fi
if id $1 &> /dev/null;then
	userid=`grep ^$1 /etc/passwd | cut -d: -f3`
	if [ $userid -eq 0 ];then
		echo "$1 is Administrator."
	elif
	   [ $userid -gt 0 -a $userid -lt 500 ];then
		echo "$1 is System User."
	else
	    echo "$1 is Common User."
	fi
fi

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

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

#!/bin/bash
#
if [ $# -lt 1 ];then
	echo "Usage:bash user."
	exit 1
fi
if id $1 &>/dev/null;then
	uid=`grep $1 /etc/passwd | cut -d: -f3`
	sh=`grep $1 /etc/passwd | grep "sh$"`	
        result=$?
		if [ $result -eq 0 -a $uid -gt 500 ];then
			echo "$1 a user can log system."
		else
			echo "$1 nologin system."
		fi
fi

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

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

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

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

(0)
Net21_LionNet21_Lion
上一篇 2016-09-05
下一篇 2016-09-05

相關推薦

  • 11文件查找find和locate

    有些時候我們是想要在系統中查找某個具體的文件,卻不知道路徑在哪里,只是知道其中的某些特性,比如大小或者名字什么的。這時候就要用到查找工具啦。 在文件系統上查找符合條件的文件命令有兩個,locate和find,其中locate是非實時查找即數據庫查找。而find是實時查找 locate: 用法:locate [OPTION]… [PATTERN]&…

    Linux干貨 2016-11-27
  • iptables之froward

    先克隆一臺centos服務器添加虛擬網卡 同時兩個服務器配上host only的網卡 echo 1 > /proc/sys/net/ipv4/ip_forward打開網卡間轉發 有回包 但是沒有10.0.0.3還是沒有ping通原因是192.168.68.134 的網關指向了192.168.68.2 而不是192.168.68.144添加一條指向192…

    2017-11-12
  • 第二周作業

    第一、文件管理類命令     cp、mv、rm                  cp命令:copy 源文件;目標文件;     &nbsp…

    Linux干貨 2016-12-12
  • 進程的簡單概念

    什么是進程?進程是載入內存的一個指令集合。 PID代表進程號, centos7之前的第一個進程都為inet。centos7的第一個位systemd 進程優先級分為系統優先級和實時優先級,系統優先級0到139表示,值越大優先級越低。centos6用0到98表示值越大優先級越低 實時優先級用99到0表示,值越大優先級越高。 進程類型:守護進程和前臺進程。(倆者可…

    Linux干貨 2017-05-08
  • 文件相關操作練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限: 2、編輯/etc/group文件,添加組hadoop: 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop: 4、復制/etc/sk…

    2017-11-17
  • Linux中/etc目錄下常用的配置文件及其含義總結

         在linux中有一個很重要的思想就是一切皆文件,也就是說所有的系統參數的配置都是保存在各種各樣的配置文件當中的,這點Linux和Windows有很大的差別。      因為Linux中有眾多配置文件,學習起來難免會不容易記憶,所以在此把一些常用的配置文件記錄下來,做一個歸納總結。根據FHS…

    Linux干貨 2017-03-26

評論列表(1條)

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

    腳本寫得非常的漂亮,思路清晰,還給出了調試的過程,32贊,加油!

欧美性久久久久