91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統shell腳本編程的示例分析

發布時間:2021-11-08 10:18:49 來源:億速云 閱讀:179 作者:小新 欄目:云計算

小編給大家分享一下Linux系統shell腳本編程的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!



1、開發腳本前準備


一般大家都知道,測試主機是否在線,常用的命令無非就是ping、nmap,因此,首先找一個地址來測試下ping命令的效果


[root@centos6 scripts]# ping 172.16.1.1

PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.

64 bytes from 172.16.1.1: icmp_seq=1 ttl=255 time=3.43 ms

64 bytes from 172.16.1.1: icmp_seq=2 ttl=255 time=0.699 ms

^C

--- 172.16.1.1 ping statistics ---

9 packets transmitted, 9 received, 0% packet loss, time 8448ms

rtt min/avg/max/mdev = 0.525/1.053/3.436/0.884 ms


好像單純的這種命令是無法來做批量檢查的,必須要帶一些參數,否則它們一直ping下去


[root@centos6 scripts]# ping -W 2 -c 2 172.16.1.1

PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.

64 bytes from 172.16.1.1: icmp_seq=1 ttl=255 time=0.704 ms

64 bytes from 172.16.1.1: icmp_seq=2 ttl=255 time=0.481 ms

--- 172.16.1.1 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1000ms

rtt min/avg/max/mdev = 0.481/0.592/0.704/0.114 ms


這種方法可以實現,測試發送2個數據包,然后加上超時時間,自動停止,可以達到效果


[root@centos6 scripts]# echo $?

0

[root@centos6 scripts]# ping -W 2 -c 2 172.16.1.100

PING 172.16.1.100 (172.16.1.100) 56(84) bytes of data.

^C

--- 172.16.1.100 ping statistics ---

2 packets transmitted, 0 received, 100% packet loss, time 2836ms

[root@centos6 scripts]# echo $?

1

因此,我們可以通過返回值來判斷是否在線



2、開發簡單腳本

既然有實現的方法了,那么接下來就開始開發腳本了

[root@centos6 scripts]# vi checkip.sh

#!/bin/sh

. /etc/init.d/functions      

        #加載系統函數庫

CMD="ping -W 2 -c 2"  

        #定義命令變量

IP="172.16.1.2 172.16.1.3 172.16.1.100"  

        #定義IP變量

for n in $IP  

         #for循環語句

do

 $CMD $IP$n >/dev/null 2>&1

        #將命令結果不輸出

if [ $? -eq 0 ];then  

        #如果返回值為0就表明在線

 action  "$IP$n is online" /bin/true  

        #在線就打印此信息

else                                              

         #否則就表示不在線

  action "$IP$n is not online" /bin/false

         #不在線就打印此信息

fi

done

執行下腳本看看結果如何

[root@centos6 scripts]# sh checkip.sh

172.16.1.2 is online                  [  OK  ]

172.16.1.3 is online                  [  OK  ]

172.16.1.100 is not online        [FAILED]


此時肯定有小伙伴問了,你這個腳本測試的只有三個IP,如果內網整個網段IP都手工寫上去,豈不是更費時費力,因此,如果是整個網段,那么定義IP變量時可以定義成這樣IP="172.16.1." ,因為前三位是相同的,寫for 循環時可以修改成如下

for n in `seq 254`

do

   $CMD $IP$n(將兩段數字拼接成IP地地址)

done

具體這里就不再測試了,有興趣的可以自行測試下




3、開發nmap腳本檢查在線IP與在線IP的開放端口情況


   首先得了解下nmap的一些參數,它也是非常實用的命令之一,在日常實際生產環境中,經常用來檢查IP、端口、URL地址信息,具體其中的參數這里就不做詳細介紹了,后續有時間會分享它的相關參數用法


[root@centos6 scripts]# nmap -sP 172.16.1.1

Starting Nmap 5.51 ( http://nmap.org ) at 2016-12-03 21:09 CST

Nmap scan report for 172.16.1.1

Host is up (0.0091s latency).

MAC Address: 04:BD:70:FB:A9:B7 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

[root@centos6 scripts]# nmap -sP 172.16.1.100

Starting Nmap 5.51 ( http://nmap.org ) at 2016-12-03 21:09 CST

Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn

Nmap done: 1 IP address (0 hosts up) scanned in 0.41 seconds


從上面的結果來看,很容易發現在線與不在線返回的信息不同,但是我們需要取得在線的IP地址信息,那到就只能取 Nmap scan report for 172.16.1.1 ,因為所有在線的IP返回的信息中都會有這一行信息,所以取相同的信息。


[root@centos6 scripts]# nmap -sS 172.16.1.1|grep "Nmap scan report for"

Nmap scan report for 172.16.1.1

[root@centos6 scripts]#

nmap -sS 172.16.1.1|grep "Nmap scan report for"|awk '{print $5}'

172.16.1.1    

#取出IP信息


[root@centos6 scripts]# nmap -sS 172.16.1.1

Starting Nmap 5.51 ( http://nmap.org ) at 2016-12-03 20:56 CST

Nmap scan report for 172.16.1.1

Host is up (0.041s latency).

Not shown: 994 closed ports

PORT    STATE    SERVICE

21/tcp  open     ftp

22/tcp  filtered ssh

23/tcp  open     telnet

80/tcp  open     http

179/tcp filtered bgp

443/tcp open     https

MAC Address: 04:BD:70:FB:A9:B7 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 8.74 seconds


檢查開啟端口,我們可以通過過濾關鍵字 open 來實現,通過上面的信息很容易觀察出來


[root@centos6 scripts]# nmap -sS 172.16.1.1|grep "open"

21/tcp  open     ftp

23/tcp  open     telnet

80/tcp  open     http

443/tcp open     https

[root@centos6 scripts]# nmap -sS 172.16.1.1|grep "open"|awk '{print $1}'

21/tcp

23/tcp

80/tcp

443/tcp



4、編寫腳本并測試效果

[root@centos6 scripts]# vi checkip_namp01.sh

#!/bin/sh

. /etc/init.d/functions

      #加載系統函數庫

FCMD="nmap -sP "

    #定義第一個命令變量

IP="172.16.1.1 172.16.1.2 172.16.1.100"

    #定義IP變量

TCMD="nmap -sS"

   #定義第一個命令變量

UPIP=`$FCMD $IP|grep "Nmap scan report for"|awk '{print $5}'`

   #定義獲取在線IP的變量

for ip in ${UPIP}

   #for手環語句

do

  action "$ip is on line"  /bin/true

  #打印信息

     UPPORT=`$TCMD $ip|grep "open"|awk '{print $1}'`

       #定義獲取在線IP的開放端口變量

   for port in ${UPPORT}

       #二層循環檢查端口

   do

       action "$ip $port is open"  /bin/true

      #將上面在線IP開放的端口信息打印輸出

   done

done

注:UPPORT=`$TCMD $ip|grep "open"|awk '{print $1}'` 定義這個變量時,取的IP地址一定要是上一個循環取出的IP地址,否則會有問題


執行腳本,測試效果如何?


[root@centos6 scripts]# sh checkip_namp01.sh

172.16.1.1 is on line                   [  OK  ]

172.16.1.1 21/tcp is open           [  OK  ]

172.16.1.1 23/tcp is open           [  OK  ]

172.16.1.1 80/tcp is open           [  OK  ]

172.16.1.1 443/tcp is open         [  OK  ]

172.16.1.2 is on line                   [  OK  ]

172.16.1.2 23/tcp is open           [  OK  ]

172.16.1.100沒有出現的原因是它不在線


接下來測試下腳本檢查的端口是否正確


[root@centos6 scripts]# telnet 172.16.1.1 443

Trying 172.16.1.1...

Connected to 172.16.1.1.

Escape character is '^]'.

^]

telnet> quit

Connection closed.

[root@centos6 scripts]# telnet 172.16.1.1 21

Trying 172.16.1.1...

Connected to 172.16.1.1.

Escape character is '^]'.

220 FTP service ready.

^]

telnet> quit

Connection closed.

[root@centos6 scripts]# telnet 172.16.1.2 23

Trying 172.16.1.2...

Connected to 172.16.1.2.

Escape character is '^]'.

TL-AP301C login: 

telnet> quit

Connection closed.


從上面的結果來看,腳本檢查的結果是正確,如果需要檢查整個網段只需要將定義IP變量時定義成“IP="172.16.1.0/24"”即可


看完了這篇文章,相信你對“Linux系統shell腳本編程的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额尔古纳市| 望谟县| 西乌珠穆沁旗| 庆安县| 徐州市| 东方市| 阳原县| 辽源市| 抚远县| 旬邑县| 益阳市| 遵化市| 灵川县| 安平县| 青川县| 永济市| 石城县| 疏勒县| 乐安县| 合江县| 财经| 温州市| 黎川县| 郁南县| 张家川| 乌什县| 彰武县| 兴城市| 宜春市| 海盐县| 静乐县| 伽师县| 北流市| 华容县| 金坛市| 壶关县| 长武县| 大渡口区| 紫金县| 兰溪市| 西贡区|