bash腳本編程實例

bash腳本編程實例

  • 1.寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態

    • 在線的主機使用綠色顯示
    • 不在線的主機使用紅色顯示

      #!/bin/bash
      for i in {1..254};do
       if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/null;then
           echo -e "\033[32m 172.16.250.${i} \033[0m"
       else
           echo -e "\033[31m 172.16.250.${i} \033[0m"
       fi
      done
  • 2.如何給網絡端口配置多個地址,有哪些方式?

    • ifconfig IFACE_LABEL IPADDR netmask NETMASK
    • ip addr add IFADDR dev IFNAME label LABEL
    • cp /etc/sysconfig/network-scripts/ifcfg-IFACE /etc/sysconfig/network-scripts/ifcfg-IFACE_LABEL,然后修改該配置文件

      BOOTPROTO=none(必須設置為靜態)
      DEVICE=IFACE_LABEL
      IPADDR=ip
      NETMASK=netmask
      GATEWAY=dateway
  • 3.寫一個腳本,完成一下功能

    • 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭和S開頭的文件若干
    • 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串
    • 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串

      #!/bin/bash
      for i in $(ls /tmp/njy/files/|grep "^s")
      do
       echo "${i} start"
      done
      
      for i in $(ls /tmp/njy/files/|grep "^k")
      do
       echo "${i} stop"
      done
  • 4.寫一個腳本,完成以下功能

    • 腳本能接受用戶名作為參數
    • 計算此些用戶的ID之和

      #!/bin/bash
      echo -n "please input some usernames:"
      read -a usernames
      
      while true;do
      if [ ${#usernames[*]} -eq 0 ];then
      echo -n  "please input some usernames again:"
      read -a usernames
      else
      break
      fi
      done
      declare -i sum=0
      declare -i count=0
      for i in ${usernames[*]};do
       if !id $i &>> /dev/null;then
           echo "$i is not existing."
           continue
       else
          sum+=$(id -u $i)
          count+=1
       fi
      done
      echo "$count users id count is: $sum"
  • 5.寫一個腳本

    • 傳遞一些目錄給此腳本
    • 逐個顯示每個目錄的所有一級文件或者子目錄的內容類型
    • 統計一個有多少個目錄,并且一共顯示了多少個文件的內容類型

      #!/bin/bash
      #
      read -p "please input some paths:" paths
      
      while true;do
       if [[ -z $paths ]];then
           read -p "please input some paths again:" paths
       else
           break
       fi
      done
      
      for i in $paths;do
        if [[ ! -e $i ]];then
            continue
        else
            pathfiles=$(ls -l $i|grep -v "^d"|awk -F' ' '{print $9}'|sed "/^$/d;s#^#$i/#")
            pathdirs=$(ls -l $i|grep "^d"|awk -F' ' '{print $9}|sed "/^$/d;s#^#$i/#"')
            if [ ${#pathfiles} -ge 1 ];then
                echo "file types and count below $i are:"
                file $pathfiles|cut -d: -f2|sed 's/^[[:space:]]*//g'|tr '\n' ';'|awk -F';' '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}'
            else
                echo "there is no file belowing $i."
            fi
      
            if [ ${#pathdirs} -ge 1 ];then
                echo "dir types and count below $i are:"
                file $pathdirs|cut -d: -f2|sed 's/^[[:space:]]*//g'|tr '\n' ';'|awk -F';' '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}'
            else
                echo "there is no dir belowing $i."
            fi
        fi
      done
  • 6.寫一個腳本

    • 通過命令行傳遞一個參數給腳本,參數為用戶名
    • 如果用戶的id號大于等于500,則顯示此用戶為普通用戶

      #!/bin/bash
      if [ $# -eq 0 ];then
       echo "need a user."
       exit 1
      fi
      
      id1=$(id -u $1)
      
      if [ $id1 -ge 500 ];then
        echo "this is a common user."
      else
        echo "this is system user or root user."
      fi
  • 7.寫一個腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來

    #!/bin/bash
      for i in {20..100};do
          if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/null;then
              echo  "172.16.250.${i}"
          else
              continue
          fi
      done
  • 8.打印九九乘法表

    #!/bin/bash
      for i in {1..9};do
          for ((j=1;j<=i;j++));do
               echo -e -n "${i}x${j}=$[$i*$j]\t"
          done
          echo
      done

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

(0)
N27_xiaoniN27_xiaoni
上一篇 2017-08-20 21:28
下一篇 2017-08-20 22:17

相關推薦

  • Linux Bash Shell練習

    Linux Bash Shell練習 1、寫一個腳本,完成以下功能: 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串 分別統計S開頭和K開頭的文件各有多少 #!/bin/bash # for&…

    Linux干貨 2016-12-17
  • linux命令格式,獲取幫助及其目錄結構簡要理解

    我們都知道,一臺計算機要是沒通電,和一堆廢鐵沒什么區別。那么,通電開機進入系統后,會進入交互界面,等待用戶操作,人與計算機交互界面有兩種: GUI:圖形用戶接口。如我們平時使用的Windows ?,linux的X window,有KDE和GOME.   CLI:命令行接口,使用的SHELL類型有bash ,csh,tcshell,zshell等。 …

    2017-09-14
  • 關于man的幾個重要命令

    接觸Linux有很多年了,以前對于linux我覺得自己懂得的還算一般吧,可是聽了馬哥的關于linux的視頻課程,發現自己就是一個還沒入門的菜鳥,所以果斷的狠心的報了馬哥的網絡班,拜在馬哥旗下,以后就打著馬哥的旗號到外面混,哈哈最初的這幾天學習,因為工作和時間的等等等的關系,所以才到現在還在趕著寫我的博客作業,現在就最有感觸的幾個命令串聯一下。學習linux肯…

    Linux干貨 2016-10-31
  • MAN 手冊各章節功能介紹及快捷鍵鍵位整理

    MAN 手冊各章節功能介紹及快捷鍵鍵位整理 前言  Man 手冊頁(Manua pages ,縮寫man page) 是在linux操作系統在線軟件文檔的一種普遍形式。內容包括計算機程序庫和系統調用等命令的幫助手冊。  手冊頁是用troff排版軟件包排版的,是一組man宏。當時手冊頁系統帶來的聯機文檔可用性被認為是一項偉大的進步。時至今日…

    Linux干貨 2016-10-17
  • 位置變量$1,$2,$@,$*,$#詳解

    位置變量: 位置變量實際是屬于系統預定義變量的一種,不能修改變量名,同時作用也是固定的,也不能新增的變量,只能修改變量的值。     常用的位置參數變量        $0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數需要用大括號括起來,比如${11}.     該變…

    Linux干貨 2016-08-18
  • Linux網絡相關概念及bash腳本編程練習

    馬哥教育網絡班第23期+第八周課堂練習 Linux網絡相關概念及bash腳本編程練習 習題: 1.請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別 (1)網橋: 橋接器(英語:network bridge),又稱網橋,一種網路裝置,負責網路橋接(network bridging)之用。 橋接器將網絡的多個網段在數據鏈路層(O…

    Linux干貨 2016-11-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-09-02 20:49

    腳本是運維的必備技能 也是運維自動化的切入點。作業完成 的非常 不錯,再接再勵。

欧美性久久久久