1、寫一個腳本,判斷當前系統上所有用戶shell是否為可登陸shell(即用戶shell不是/sbin/nologin),分別這兩類用戶的個數,通過字符串比較來實現
#!/bin/bash # login=0 nologin=0 cat /etc/passwd|while read myline do if [ ${myline##*/} = "nologin" ];then let nologin+=1 else let login+=1 fi echo "login:$login,nologin:$nologin" >tmp1 done cat tmp1 [root@llww3317 tmp]# bash 1.sh login:15,nologin:30
2、寫一個腳本,
(1)獲取當前主機名,保存于hostname變量中
(2)判斷此變量的值是否為localhost,如果是,則將當前主機名修改為www.magedu.com
(3)否則,則顯示當前主機名
#!/bin/bash # hostname=`hostname` if [ $hostname = "localhost" ];then hostname www.magedu.com else hostname fi [root@llww3317 tmp]# bash 2.sh llww3317 [root@llww3317 tmp]# hostname localhost [root@llww3317 tmp]# hostname localhost [root@llww3317 tmp]# bash 2.sh [root@llww3317 tmp]# hostname www.magedu.com
3、寫一個腳本,完成如下功能
(1)傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在
(2)如果存在,則顯示此設備上所有分區信息
#!/bin/bash # if ls /dev/$1 &>/dev/null ;then fdisk -l /dev/$1 fi [root@llww3317 tmp]# bash 3.sh sdb Disk /dev/sdb: 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: 0x0004d60b Device Boot Start End Blocks Id System /dev/sdb1 1 1306 10490413+ 8e Linux LVM
4、寫一個腳本,完成如下功能
腳本能夠接受一個參數
(1)如果參數1為quit,則顯示退出腳本,并執行正常退出
(2)如果參數1為yes,則顯示繼續執行腳本
(3)否則,參數1為其它任意值,均執行非正常退出
#!/bin/bash # case $1 in quit) exit 0 ;; yes) echo "continue" ;; *) exit 1 ;; esac [root@llww3317 tmp]# bash 4.sh 1 [root@llww3317 tmp]# echo $? 1 [root@llww3317 tmp]# bash 4.sh quit [root@llww3317 tmp]# echo $? 0 [root@llww3317 tmp]# bash 4.sh yes continue
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 # case $1 in gzip) tar -czvf /backups/etc-20160613.tar.gz /etc ;; bzip2) tar -cjvf /backups/etc-20160613.tar.bz2 /etc ;; xz) tar -cjvf /backups/etc-20160613.tar.xz /etc ;; *) echo "error tar tools" exit 1 ;; esac [root@llww3317 tmp]# bash 5.sh gzip >/dev/null [root@llww3317 tmp]# bash 5.sh bzip2 >/dev/null [root@llww3317 tmp]# bash 5.sh xz >/dev/null [root@llww3317 tmp]# ls /backups etc-20160613.tar.bz2 etc-20160613.tar.gz etc-20160613.tar.xz
6、寫一個腳本,接受一個路徑參數
(1)如果為普通文件,則說明其可被正常訪問
(2)如果是目錄文件,則說明可對其使用cd命令
(3)如果為符號鏈接文件,則說明是個訪問路徑
(4)其它為無法判斷
#!/bin/bash # if [ -f $1 ];then echo "Can be accessed normally" elif [ -L $1 ];then echo "access route" elif [ -d $1 ];then echo "Can be cd command" else echo "unable" fi
8、寫一個腳本,接受一個用戶名為參數
(1)如果用戶的ID號為0,則顯示其為管理員
(2)如果用戶的ID號大于0且小于500,則顯示 其為系統用戶
(3)否則,則顯示其為普通用戶
#!/bin/bash # user=`cat /etc/passwd|grep "^$1\>"|cut -d: -f3` if [ $user -eq 0 ];then echo "$1:admin" elif [ $user -gt 0 -a $user -lt 500 ];then echo "$1:system" else echo "$1:normal" fi [root@llww3317 tmp]# bash 8.sh root root:admin [root@llww3317 tmp]# bash 8.sh named named:system [root@llww3317 tmp]# bash 8.sh magedu magedu:normal
10、寫一個腳本,傳遞一個用戶名參數給腳本
(1)如果用戶的ID號大于等于500,且其默認shell為sh結尾的字符串,則顯示”a user can log system “類的字符串
(2)否則,則顯示無法登錄系統
#!/bin/bash # passwd=`cat /etc/passwd|grep "^$1\>"` userid=`echo $passwd|cut -d: -f3` shell=${passwd: -2} if [ $userid -ge 500 -a $shell = "sh" ];then echo "a user can log system" else echo "can't log system" fi [root@llww3317 tmp]# bash 10.sh root can't log system [root@llww3317 tmp]# bash 10.sh magedu a user can log system
11、寫一個腳本,完成如下任務
(1)按順序分別復制/var/log目錄下的每個直接文件或子目錄至/tmp/test1-testn目錄中
(2)復制目錄時,才使用cp -r命令
(3)復制文件時使用cp 命令
(4)復制鏈接文件時使用cp -d 命令
(5)余下的所有類型,使用 cp -a命令
#!/bin/bash # dir="/var/log/" for i in `ls $dir`;do if [ -L $dir$i ];then cp -d $dir$i /tmp/test1-testn elif [ -d $dir$i ];then cp -r $dir$i /tmp/test1-testn elif [ -f $dir$i ];then cp $dir$i /tmp/test1-testn else cp -a $dir$i /tmp/test1-testn fi echo $i done [root@llww3317 tmp]# ls /tmp/test1-testn/ anaconda.ifcfg.log ConsoleKit messages sssd anaconda.log cron ntpstats tallylog anaconda.program.log cups pm-powersave.log wpa_supplicant.log anaconda.storage.log dmesg ppp wtmp anaconda.syslog dmesg.old prelink Xorg.0.log anaconda.xlog dracut.log sa Xorg.0.log.old anaconda.yum.log gdm samba Xorg.9.log audit httpd secure yum.log boot.log lastlog spice-vdagent.log btmp maillog spooler
原創文章,作者:laiwen2007,如若轉載,請注明出處:http://www.www58058.com/27279
寫的很好,排版也很棒,加油