第九周-Shell腳本編程

 

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

#!/bin/bash
nologin=0
login=0
for i in  `cut -d : -f 7 /etc/passwd`;do
     if [ $i = /sbin/nologin ];then
        let nologin++
     else
        let login++
     fi
done
echo Login is $login,Nologin is $nologin

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

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

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

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

#!/bin/bash

if [ -b $1 ];then
 fdisk -l $1
else
 echo "Not is Block device file"
fi

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

腳本能夠接受一個參數;

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

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

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

#!/bin/bash

while true;do
read -p "please input yes|quit|other str: " word
case $word in
  quit)
  exit 0
  ;;
  yes)
  continue
  ;;
  *)
  echo "Wrong"
  exit 2
 ;;
esac
done

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
mkdir /backups 2>/dev/null
case $1 in
  gzip)
  tar -zcPf /backups/etc-`date +%Y%m%d`.tar.gz /etc
  ;;
  bzip2)
  tar -jcPf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
  ;;
  xz)
  tar -JcPf /backups/etc-`date +%Y%m%d`.tar.xz /etc
  ;;
  *)
  echo "Error compression tool"
  exit 2
  ;;
esac

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

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

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

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

(4) 其它為無法判斷;

#!/bin/bash

if [ -f $1 ];then
  echo "Normal access the file"
elif [ -d $1 ];then
  echo "Can use cd command"
elif [ -h $1 ];then
  echo "this is a access path"
else
  echo "Cannot judge"
fi

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

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

#!/bin/bash

if [ -z $HOSTNAME -o "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "(none)" ];then
hostname mail.magedu.com
fi

 

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

(0)
N27_whatN27_what
上一篇 2017-08-23 17:20
下一篇 2017-08-24 16:27

相關推薦

  • haproxy實現discuz論壇的動靜分離和負載均衡

    一、在cs2、cs3、cs4上安裝httpd [root@cs2 ~]# yum install httpd [root@cs3 ~]# yum install httpd [root@cs4 ~]# yum install httpd 二…

    Linux干貨 2016-06-05
  • Apache通過mod_proxy模塊連接Tomcat并使用Memcached+MSM做Tomcat會話保持

    一 實驗目的 本實驗使用Apache的mod_proxy模塊連接Tomcat, Nginx在前端做負載均衡,并使用Memcahced+MSM的方式保持Tomcat的會話,實現會話共享。 二 實驗拓撲 說明:為測試方便,Memcached與Tomcat安裝在同一機器中,正式環境應該安裝在不同機器中。 三 實驗環境 主機 IP 安裝組件 node1 192.16…

    Linux干貨 2017-01-17
  • bash編程尾聲

    數組 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。 數組名和索引     索引:編號從0開始,屬于數值索引     注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引, bash4.0版本之后開始支持。  &nb…

    Linux干貨 2016-08-25
  • Hadoop hdfs 分布式文件系統

    Hadoop簡介:一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件…

    Linux干貨 2017-04-19
  • 早安,Linux

    希望能通過不斷的努力,變成一個不一樣的我。

    Linux干貨 2017-07-11
  • shell腳本編程之變量

    一、創建shell腳本文件   創建shell腳本時,必須在第一行指定要使用的shell。格式為:   #!/bin/bash   通常在shell腳本中,#代表注釋行,即不被執行的行,而第一行“#!”則是表示用哪個shell來執行腳本。   實例:   讓我們來執行一下這個腳本:   上面的結果顯…

    Linux干貨 2016-02-14
欧美性久久久久