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
# 等待所有后臺任務完成
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控制并行任務數(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ù)量和超時時間,可以平衡掃描速度和準確性。如果需要更高效的掃描,可以考慮使用 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)文章
Linux下使用nextcloud搭建個人網(wǎng)盤代碼實例
這篇文章主要介紹了Linux下使用nextcloud搭建個人網(wǎng)盤代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下2019-06-06

