馬哥教育網絡第21期-第九周課程練習

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

#!/bin/bash
nologin=$( cut -d: -f7 /etc/passwd | grep 'nologin$' | wc -l)
login=$( cut -d: -f7 /etc/passwd | grep 'bash$' | wc -l)
echo "nologin:$nologin"
echo "login:$login"

2、寫一個腳本
    (1) 獲取當前主機的主機名,保存于hostname變量中;
    (2) 判斷此變量的值是否為localhost,如果是,則將當前主機名修改為www.magedu.com;
    (3) 否則,則顯示當前主機名;
    
#!/bin/bash
hostname=$(hostname)
if [ $hostname == "localhost" ];then
	hostname www.magedu.com
	echo "$hostname"
else
  	echo "$hostname"
fi 

3、寫一個腳本,完成如下功能
    (1) 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;
    (2) 如果存在,則顯示此設備上的所有分區信息;
    
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input arg"
	exit 1
else
	if [ -e $1 ];then
	 fdisk -l $1
	else
	echo "null"
	fi
fi

4、寫一個腳本,完成如下功能
   腳本能夠接受一個參數;
   (1) 如果參數1為quit,則顯示退出腳本,并執行正常退出;
   (2) 如果參數1為yes,則顯示繼續執行腳本;
   (3) 否則,參數1為其它任意值,均執行非正常退出;
   
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
case $i in
	quit)
		exit
		echo "exit";;
	yes)
		echo "continue";;
	*)
		exit 2
		echo "exit";;
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 [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
case $1 in
	gzip)
	tar -zcvf /backups/etc-'date +%Y%m%d'.tar.gz /etc;;
	bzup2)
	tar -jvf /backups/etc-'date + %Y%m%d'.tar.bz2 /etc;;
	xz)
	tar -Jvf /backups/etc/-'date + %Y%m%d'.tar.xz /etc;;
	*)
	exit 1
esac
   
6、寫一個腳本,接受一個路徑參數:
   (1) 如果為普通文件,則說明其可被正常訪問;
   (2) 如果是目錄文件,則說明可對其使用cd命令;
   (3) 如果為符號鏈接文件,則說明是個訪問路徑;
   (4) 其它為無法判斷;
   
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
		if [ -f $1 ];then
		echo "file"
		elif [ -d $1 ];then
		echo "directory"
		elif [ -L $1 ];then
		echo "path"
		else
		echo "unknow"
		fi
   
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
else
	echo "$hostname"
fi

8、寫一腳本,接受一個用戶名為參數;
   (1) 如果用戶的id號為0,則顯示其為管理員;
   (2) 如果用戶的id號大于0且小于500, 則顯示其為系統用戶;
   (3) 否則,則顯示其為普通用戶;
   
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
	userid=$(id -u)
if [ $userid -eq 0 ];then
	echo "admin"
elif [ $userid -gt 0 -a $userid -lt 500 ];then
	echo "system"
else
	echo "user"
fi

10、寫一個腳本,傳遞一個用戶名參數給腳本;
   (1) 如果用戶的id號大于等于500,且其默認shell為以sh結尾的字符串,則顯示“a user can log system.”類的字符串;
   (2) 否則,則顯示無法登錄系統;
   
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
	userid=grep ^$1 /etc/passwd | grep sh$ | cut -d: -f3
if [ $userid -ge 500 ];then
	echo " a user can log system"
else
	echo "nologin"
fi
   
11、寫一個腳本,完成如下任務 :
   (1) 按順序分別復制/var/log目錄下的每個直接文件或子目錄至/tmp/test1-testn目錄中;
   (2) 復制目錄時,才使用cp -r命令;
   (3) 復制文件時使用cp命令;
   (4) 復制鏈接文件時使用cp -d命令;
   (5) 余下的所有類型,使用cp -a命令;
   
#!/bin/bash
for i in 'ls /var/log';do
	if [ -d $i ];then
		cp -r /var/log/$i /tmp/test/test1-testn/$i
	elif [ -f $i ];then
		cp /var/log/$i /tmp/test/test1-testn/$i
	elif [ -L $i ];then
		cp -d /var/log/$i /tmp/test/test1-testn/$i
	else
		cp -a /var/log/$i /tpm/test/test1-testn/$i
	fi
done

以上

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

(0)
N21_619463772N21_619463772
上一篇 2016-11-14
下一篇 2016-11-14

相關推薦

  • 磁盤管理進階

    1、/etc/fstab文件     設備名 掛載點 文件系統 掛載選項 轉儲頻率 自檢次序     UUID=e79e4c9d-8d0f-4675-8945-9ec23ea77c67 /             &nb…

    Linux干貨 2016-09-02
  • shell腳本之until循環

    一、用until實現下列腳本 1、每隔3秒鐘到系統上獲取已經登錄的用戶的信息;如果發現用戶hacker登錄,則將登錄時間和主機記錄于日志/var/log/login.log中,并提示該用戶退出系統。 #!/bin/bash #author:jackCui #description:Find out if the sys…

    Linux干貨 2016-08-18
  • 第八周作業

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。    集線器(HUB)主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。集線器是一種共享設備,HUB本身不能識別目的地址,當同一局域網內的A主機給B主機傳輸數據時,數據包在以HUB為架構…

    Linux干貨 2017-02-27
  • SSH會話劫持實現端口轉發

    在進行滲透測試時,我們有時候會碰到搭建的測試環境、產品服務器、DMZ或者其他類似的機器群的情況,這時我們完全可以把它們看作跳板。這些系統被設計成對外交互的接口,這時候我們考慮對其他域里的用戶進行SSH會話劫持是個不錯的選擇。 那么如果你擁有了某一個跳板的控制權限,想要通過另一個域的用戶對遠程域進行訪問會怎么辦呢?當然,這時候你是沒有密碼、密鑰的,你不能拋棄二…

    系統運維 2015-03-23
  • 程序包管理之制作yum本地源

    Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。 使用本地yum源有兩種方式:第一直接使用光盤鏡像,不過此方…

    Linux干貨 2016-08-24
  • linux程序包管理

         首先linux軟件程序包和windows中的程序包是不兼容的,所以要在linux上使用windows上的程序,需要使用虛擬化工具。 庫級別的虛擬化:     linux : WinE     windows: Cywin 而程序開發語言有多…

    Linux干貨 2016-08-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-16 15:55

    寫的很好,期待你的佳作

欧美性久久久久