shell指令碼批量測試埠連通性

2021-10-24 07:12:02 字數 1318 閱讀 4122

最近在工作中遇到了需要批量檢測特定埠連通性的情況。本來想用nmap埠掃瞄檢測,但一般來說,在沒有經過同意的情況下執行埠掃瞄,是可以被視為網路攻擊行為的。為了避免不必要的麻煩,也懶得找領導,所以自己編寫了指令碼用telnet測試。

這裡可以準備兩個檔案:start.sh、script.exp

start.sh

#!/bin/bash

while

read ip //讀取下面列表中ip位址

do`./script.exp $ip`

//執行主要測試指令碼

done

<<

eof192.168.10.100 //這裡是需要測試連通性的ip位址

192.168.10.112 //這裡是需要測試連通性的ip位址

eof

script.exp

#!/usr/bin/expect

settimeout 3 //設定超時時間為3秒

set host [lindex $ar** 0] //host變數從start.sh中獲取值

log_file $host.log //自動建立檔案,記錄執行過程與結果

spawn telnet $host 3389 //模擬手動執行命令」telnet 位址 埠」

expect

"*escape character*" //檢測輸出中是否包含」 escape character」(連線成功會出現此訊息)

send "\1d\r quit\r" //若包含(即連線成功),則自動依次傳送ctrl+] 回車 quit 回車(退出telnet)

//等待3秒後,無輸出或輸出沒有包含關鍵字(即連線失敗),則結束該ip測試

yum install -y expect
然後修改檔案許可權:

chmod 755 start.sh script.exp
最後執行檔案等待結果:

./start.sh
執行完成後,使用命令檢視埠開放且可以連線的ip位址。

cat *.log|

grep connected

或者使用命令將這些ip位址儲存到檔案中

cat *.log|

grep connected|

cut -d " " -f 3 > ip.txt

shell指令碼測試某網段內主機連通性

1.測試192.168.4.0 24整個網段的連通性 while版本 bin bash author 丁丁歷險 jacob 定義變數i控制迴圈次數,i從1開始迴圈,每迴圈一次,i自加1,直到i等於254迴圈退出 在每次迴圈中對乙個ip進行ping測試,如果ping通,提示主機是up的 如果無法pin...

PowerShell埠連通性測試

在powershell中,使用 test connection 命令可以測試對端主機是否存活,相當於批處理中的ping命令,但是如果要測試對端主機的某個埠是否可以連通,批處理中可以使用telnet命令,那在powershell中還有類似的命令嗎?很遺憾,沒有。需要通過呼叫.net物件才可以實現。判斷...

Linux 測試埠連通性

linux系統有時候需要測試某個埠的連通性,使用者可以參考如下方法來測試。telnet為使用者提供了在本地計算機上完成遠端主機工作的能力,因此可以通過telnet來測試埠的連通性,具體用法格式 telnet ip port 說明 port 是埠,比如80 如果telnet連線不存在的埠,那會如下圖所...