shell腳本快速檢查192.168.1網(wǎng)段ip是否在用的方法
檢查 192.168.1 網(wǎng)段中哪些 IP 地址正在使用,可以使用 Shell 腳本結(jié)合 ping 命令來并發(fā)掃描整個(gè)網(wǎng)段。以下是實(shí)現(xiàn)這一功能的完整腳本:
腳本:檢查 192.168.1 網(wǎng)段 IP 是否在用
#!/bin/bash
# 定義網(wǎng)段
NETWORK="192.168.1"
# 定義超時(shí)時(shí)間(秒)
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"
}
# 檢查單個(gè) 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
# 等待所有后臺(tái)任務(wù)完成
wait
}
# 執(zhí)行主函數(shù)
main腳本說明
網(wǎng)段定義
NETWORK="192.168.1":定義要掃描的網(wǎng)段。
超時(shí)時(shí)間
TIMEOUT=1:設(shè)置ping命令的超時(shí)時(shí)間為 1 秒。
并行掃描
PARALLEL=20:設(shè)置同時(shí)掃描的 IP 數(shù)量為 20 個(gè),以提高掃描效率。
日志輸出
- 使用不同顏色的日志區(qū)分在線和離線的 IP 地址:
- 綠色:IP 在線。
- 紅色:IP 離線。
- 使用不同顏色的日志區(qū)分在線和離線的 IP 地址:
check_ip函數(shù)- 使用
ping命令檢查單個(gè) IP 是否在線。 - 如果
ping成功,則 IP 在線;否則,IP 離線。
- 使用
主函數(shù)
main- 遍歷
192.168.1.1到192.168.1.254的所有 IP 地址。 - 使用
&將check_ip放入后臺(tái)執(zhí)行,實(shí)現(xiàn)并行掃描。 - 使用
jobs和wait控制并行任務(wù)數(shù)量。
- 遍歷
使用方法
- 將腳本保存為
scan_network.sh。
賦予執(zhí)行權(quán)限:
chmod +x scan_network.sh
運(yùn)行腳本:
./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 是一個(gè)更高效的網(wǎng)絡(luò)掃描工具,支持批量掃描。如果系統(tǒng)安裝了 fping,可以替換 ping 命令:
fping -c 1 -t "$TIMEOUT" "$ip" &> /dev/null
總結(jié)
該腳本通過并行 ping 掃描 192.168.1 網(wǎng)段,快速檢測(cè)哪些 IP 地址在線。通過調(diào)整并行數(shù)量和超時(shí)時(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本注冊(cè)到Linux系統(tǒng)服務(wù)實(shí)例
這篇文章主要介紹了Shell腳本注冊(cè)到Linux系統(tǒng)服務(wù)實(shí)例,本文給出一個(gè)可以作為Linux服務(wù)的腳本實(shí)例,及加入服務(wù)的方法等步驟,需要的朋友可以參考下2015-05-05
linux?shell中Grep命令查找多個(gè)字符串(grep同時(shí)匹配多個(gè)關(guān)鍵字或任意關(guān)鍵字)
grep是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來,下面這篇文章主要給大家介紹了關(guān)于linux?shell中Grep命令查找多個(gè)字符串(grep同時(shí)匹配多個(gè)關(guān)鍵字或任意關(guān)鍵字)的相關(guān)資料,需要的朋友可以參考下2022-08-08
Shell中使用scp命令實(shí)現(xiàn)文件上傳代碼
這篇文章主要介紹了Shell中使用scp命令實(shí)現(xiàn)文件上傳代碼,本文講解使用scp命令實(shí)現(xiàn)名登錄上傳文件,需要的朋友可以參考下2015-04-04
shell批量設(shè)置key過期時(shí)間的兩種方法步驟
本文主要介紹了shell批量設(shè)置key過期時(shí)間的兩種方法步驟,包括設(shè)置?Redis?db1中所有key的過期時(shí)間,和設(shè)置未設(shè)置過期時(shí)間key的過期時(shí)間為1小時(shí),具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
檢查Linux系統(tǒng)中文件大小的方法總結(jié)
在Linux操作系統(tǒng)中,掌握如何高效檢查文件大小是每位開發(fā)者和系統(tǒng)管理員的必備技能,本文詳細(xì)介紹了四種檢查Linux文件大小的方法,感興趣的朋友可以參考下2024-03-03

