最近在工作中遇到了需要批量檢測特定埠連通性的情況。本來想用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連線不存在的埠,那會如下圖所...