nc 探測埠 nc檢測埠是否正常服務的乙個命令

2021-10-13 09:30:54 字數 3675 閱讀 6995

最近碰到乙個專案,前端用apache htttpd進行發布(80埠),通過雙機負載均衡**到後端的兩個tomcat進行處理(8081和8082埠),現在需要隨時監控這三個埠的情況,一旦down掉需要能夠立即告警處理。批量的系統監控比較好的是用nagios軟體來實現,這樣小專案專門裝乙個nagios軟體,有點繁瑣了。在網上查了一些資料,總結實驗了一下,可以用簡單的nc命令來實現。

一、nc命令檢測埠的用法

# nc  -v  -w 10 %ip%   -z  %port%

-v  顯示指令執行過程。

-w     設定等待連線的時間。

-u  表示使用udp協議

-z  使用0輸入/輸出模式,只在掃瞄通訊埠時使用。

例1:掃瞄指定的8080埠

例2:掃瞄20到25的埠範圍,並詳細輸出。

# nc -v -w 2 -z 192.168.0.100 20-25

nc: connect to 192.168.0.100 port 20 (tcp) failed: connection refused

nc: connect to 192.168.0.100 port 21 (tcp) failed: connection refused

connection to 192.168.0.100 22 port [tcp/ssh] succeeded!

nc: connect to 192.168.0.100 port 23 (tcp) failed: connection refused

nc: connect to 192.168.0.100  port 24 (tcp) failed: connection refused

nc: connect to 192.168.0.100 port 25 (tcp) failed: connection refused

例3:掃瞄1到65535的埠範圍,只輸出開啟的埠(去掉-v引數即可)

二、批量檢測伺服器指定埠開放情況:

1、假如我們要監控一堆指定的ip和埠,可新建乙個檔案(第1列伺服器ip,第2列要監控的埠)。

# vim /scripts/ip-ports.txt

192.168.0.100 80

192.168.0.100 8081

192.168.0.101 8082

192.168.1.100 21

2、我們可以寫這樣乙個指令碼來批量檢測埠是否開放:

# vim /scripts/ncports.sh

#!/bin/bash

#檢測伺服器端口是否開放,成功會返回0值顯示ok,失敗會返回1值顯示fail

cat /scripts/ip-ports.txt | while read line

donc -w 10 -z $line > /dev/null 2>&1

if [ $? -eq 0 ]

then

echo $line:ok

else

echo $line:fail

fidone

3、執行指令碼檢視執行結果如下:

# chmod a+x  /scripts/ncports.sh

# /scripts/ncports.sh

192.168.0.100 80:ok

192.168.0.100 8081:ok

192.168.0.101 8082:ok

192.168.1.100 21:fail

三、埠不通時設定告警:

1、 郵件告警:

(1) 先安裝linux下面的郵件傳送程式mutt(參見我另一篇文章《linux下面如何用mutt命令傳送郵件》

(2) 修改上面的ncports.sh檢測指令碼,在顯示失敗fail的時候增加一行:

echo $line :fail

echo "伺服器 $line 埠不通,請盡快處理!" | mutt -s "【機房監控】伺服器$line埠不通" [email protected]

(3) 如果上面的接收郵箱設定為移動139郵箱,並開啟接收郵件簡訊告知,即可實現「簡訊告警」的功能。

2、 windows訊息彈窗告警:

(1) 先開啟接收訊息彈窗windows客戶機的「messenger」服務,設定為「啟動」

# vim /scripts/net.sh

#!/bin/bash

#/scripts/net.sh

case "$1" in

send)

echo "$3"|smbclient -i "$2" -m `nmblookup -a "$2"|sed -e '1d' -e '3,/*/d'|cut -f2|cut -d' ' -f1`

echo "usage:net send  "

exit 1

esac

# chmod a+x /scripts/net.sh

(3) 傳送訊息彈窗命令測試:(傳送給192.168.1.83這台win xp機子,傳送內容不支援中文)

# /scripts/net.sh  send  192.168.1.83     "hello,nihao"

3、埠不通時傳送郵件並訊息彈窗告警的指令碼如下:

# vim /scripts/ncports.sh

#!/bin/bash

#檢測伺服器端口是否開放,成功會返回0值,打不開會返回1值

cat /scripts/ip-ports.txt | while read line

donc -w 10 -z $line > /dev/null 2>&1

if [ $? -eq 0 ]

then

echo $line:ok

else

echo $line:fail

echo "伺服器 $line 埠不通,請盡快處理!" | mutt -s "【機房監控】伺服器$line埠不通"  [email protected]

/scripts/net.sh send 192.168.1.83 "the $line fail"

fidone

4、加入任務計畫每2分鐘執行一次

# crontab -e

*/2 * * * *  /scripts/ncports.sh  > /dev/null 2>&1

# service crond restart

使用NC命令檢測TCP UDP埠是否可通

linux下 netstat工具 簡稱nc,號稱是網路工具中的 瑞士軍刀 我們都知道檢測tcp埠是否可通的命令是telnet,在windows和linux都可以用,但telnet不能檢測udp埠,今天給大家介紹的是linux下 nc命令用於檢測udp埠是否可通。root free telnet 12...

使用 nc 命令檢查遠端埠是否開啟

埠是與 linux 作業系統上的應用或程序的通訊端點的邏輯實體。在使用之前,了解目標機器上哪些埠是開啟並正在執行服務是非常有用的。我們可以使用 netstat 或其他幾個 linux 命令如 nmap 在本地機器上輕鬆地列出 linux 中的開啟埠。在本指南中,我們將向你展示如何使用簡單的netca...

使用nc命令檢查遠端埠是否開啟

首先,我們要知道,埠是與 linux 作業系統上的應用或程序的通訊端點的邏輯實體。在使用之前,了解目標機器上哪些埠是開啟並正在執行是很有用的。我們可以使用netstat或其他的 linux 命令如nmap在本地機器上輕鬆地列出 linux 中的開啟埠 在本文中,我們將向你展示如何使用簡單的netca...