shell腳本快速檢查192.168.1網(wǎng)段ip是否在用的方法
檢查 192.168.1
網(wǎng)段中哪些 IP 地址正在使用,可以使用 Shell 腳本結(jié)合 ping
命令來并發(fā)掃描整個網(wǎng)段。以下是實現(xiàn)這一功能的完整腳本:
腳本:檢查 192.168.1 網(wǎng)段 IP 是否在用
#!/bin/bash # 定義網(wǎng)段 NETWORK="192.168.1" # 定義超時時間(秒) TIMEOUT=1 # 定義并行掃描的 IP 數(shù)量 PARALLEL=20 # 日志函數(shù) function log_info() { echo -e "[INFO] $1" } function log_success() { echo -e "\033[32m[SUCCESS] $1\033[0m" } function log_error() { echo -e "\033[31m[ERROR] $1\033[0m" } # 檢查單個 IP 是否在線 function check_ip() { local ip=$1 if ping -c 1 -W "$TIMEOUT" "$ip" &> /dev/null; then log_success "IP $ip is online" else log_error "IP $ip is offline" fi } # 主函數(shù) function main() { log_info "Scanning network $NETWORK.0/24..." # 使用循環(huán)遍歷 1-254 的 IP 地址 for i in {1..254}; do ip="$NETWORK.$i" check_ip "$ip" & # 控制并行數(shù)量 if [[ $(jobs -r -p | wc -l) -ge $PARALLEL ]]; then wait -n fi done # 等待所有后臺任務(wù)完成 wait } # 執(zhí)行主函數(shù) main
腳本說明
網(wǎng)段定義
NETWORK="192.168.1"
:定義要掃描的網(wǎng)段。
超時時間
TIMEOUT=1
:設(shè)置ping
命令的超時時間為 1 秒。
并行掃描
PARALLEL=20
:設(shè)置同時掃描的 IP 數(shù)量為 20 個,以提高掃描效率。
日志輸出
- 使用不同顏色的日志區(qū)分在線和離線的 IP 地址:
- 綠色:IP 在線。
- 紅色:IP 離線。
- 使用不同顏色的日志區(qū)分在線和離線的 IP 地址:
check_ip
函數(shù)- 使用
ping
命令檢查單個 IP 是否在線。 - 如果
ping
成功,則 IP 在線;否則,IP 離線。
- 使用
主函數(shù)
main
- 遍歷
192.168.1.1
到192.168.1.254
的所有 IP 地址。 - 使用
&
將check_ip
放入后臺執(zhí)行,實現(xiàn)并行掃描。 - 使用
jobs
和wait
控制并行任務(wù)數(shù)量。
- 遍歷
使用方法
- 將腳本保存為
scan_network.sh
。
賦予執(zhí)行權(quán)限:
chmod +x scan_network.sh
運行腳本:
./scan_network.sh
示例輸出
[INFO] Scanning network 192.168.1.0/24... [SUCCESS] IP 192.168.1.1 is online [ERROR] IP 192.168.1.2 is offline [SUCCESS] IP 192.168.1.3 is online [ERROR] IP 192.168.1.4 is offline ...
優(yōu)化建議
增加 IP 范圍參數(shù)可以通過命令行參數(shù)指定掃描的 IP 范圍,例如:
./scan_network.sh 192.168.1.10 192.168.1.20
修改腳本:
START_IP=${1:-1} END_IP=${2:-254} for i in $(seq "$START_IP" "$END_IP"); do ip="$NETWORK.$i" check_ip "$ip" & done
保存結(jié)果到文件可以將掃描結(jié)果保存到文件中,便于后續(xù)分析:
LOG_FILE="scan_results.txt" function log_success() { echo -e "\033[32m[SUCCESS] $1\033[0m" echo "[SUCCESS] $1" >> "$LOG_FILE" } function log_error() { echo -e "\033[31m[ERROR] $1\033[0m" echo "[ERROR] $1" >> "$LOG_FILE" }
使用 fping
替代 pingfping
是一個更高效的網(wǎng)絡(luò)掃描工具,支持批量掃描。如果系統(tǒng)安裝了 fping
,可以替換 ping
命令:
fping -c 1 -t "$TIMEOUT" "$ip" &> /dev/null
總結(jié)
該腳本通過并行 ping
掃描 192.168.1
網(wǎng)段,快速檢測哪些 IP 地址在線。通過調(diào)整并行數(shù)量和超時時間,可以平衡掃描速度和準(zhǔn)確性。如果需要更高效的掃描,可以考慮使用 nmap
或 fping
等專業(yè)工具。
到此這篇關(guān)于shell腳本快速檢查192.168.1網(wǎng)段ip是否在用的文章就介紹到這了,更多相關(guān)shell檢查192.168.1網(wǎng)段ip是否在用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CCKiller:Linux輕量級CC攻擊防御工具,秒級檢查、自動拉黑和釋放
這篇文章主要介紹了CCKiller:Linux輕量級CC攻擊防御工具,秒級檢查、自動拉黑和釋放,需要的朋友可以參考下2016-02-02一鍵配置CentOS iptables防火墻的Shell腳本分享
這篇文章主要介紹了一鍵配置CentOS iptables防火墻Shell腳本分享,可保存到一個腳本文件中,在新安裝的CentOS系統(tǒng)時一條命令搞定iptables配置,需要的朋友可以參考下2014-07-07