Implement CIDR support using nmap -sP
This commit is contained in:
parent
b30f1f1e5e
commit
1fd4d4c834
1 changed files with 49 additions and 3 deletions
52
test.sh
52
test.sh
|
|
@ -3,11 +3,11 @@ HOSTS_FILES="$HOME/.hosts_scanner"
|
|||
#HOSTS_FILES="/tmp/hosts"
|
||||
verbose=0
|
||||
res_file=$(mktemp -t hosts_scanner.XXXXXXXXXX)
|
||||
pids=""
|
||||
date_cmd="date --rfc-3339=s"
|
||||
|
||||
lock="${res_file}.lock"
|
||||
|
||||
pids=""
|
||||
clean_exit() {
|
||||
echo "Ctrl+C pressed, exiting..."
|
||||
for pid in $(echo $pids)
|
||||
|
|
@ -20,6 +20,17 @@ clean_exit() {
|
|||
exit 0
|
||||
}
|
||||
|
||||
cidr_pids=""
|
||||
clean_cidr() {
|
||||
echo "CIDR killed, cleaning..."
|
||||
for pid in $(echo $cidr_pids)
|
||||
do
|
||||
kill $pid
|
||||
echo $pid killed
|
||||
done
|
||||
exit 0
|
||||
}
|
||||
|
||||
semlock() {
|
||||
while [ 1 ]
|
||||
do
|
||||
|
|
@ -68,14 +79,48 @@ upd_ping() {
|
|||
done
|
||||
}
|
||||
|
||||
cidr_scan() {
|
||||
# cidr ping scan
|
||||
# $1 cidr
|
||||
# $2 result file
|
||||
# $3 lock
|
||||
|
||||
trap clean_cidr 15
|
||||
while [ 1 ]
|
||||
do
|
||||
for h in $(nmap -sP -oG - $1 | grep "Up$" | cut -d " " -f 2)
|
||||
do
|
||||
rehost=$(echo $h|sed 's/\./\\./g')
|
||||
if grep -v " $rehost " $2 > /dev/null
|
||||
then
|
||||
printf "%30s %8s %30s\n" $h "unknw" "unknwn" >> $res_file
|
||||
upd_ping $h $2 $3 &
|
||||
pid=$!
|
||||
cidr_pids="${cidr_pids}\n$pid"
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# prepopulate file
|
||||
for h in $(cat "$HOSTS_FILES")
|
||||
do
|
||||
printf "%30s %8s %30s\n" $h "unknw" "unknwn" >> $res_file
|
||||
if echo $h |grep -v '/' > /dev/null
|
||||
then
|
||||
printf "%30s %8s %30s\n" $h "unknw" "unknwn" >> $res_file
|
||||
fi
|
||||
done
|
||||
|
||||
# run scanners
|
||||
for h in $(cat "$HOSTS_FILES" )
|
||||
do
|
||||
upd_ping $h $res_file $lock &
|
||||
if echo $h |grep -v '/' > /dev/null
|
||||
then
|
||||
upd_ping $h $res_file $lock &
|
||||
else
|
||||
# cidr scan
|
||||
cidr_scan $h $res_file $lock &
|
||||
fi
|
||||
pid=$!
|
||||
pids="${pids}\n$pid"
|
||||
echo "$h updated by $pid" >&2
|
||||
|
|
@ -84,6 +129,7 @@ sleep 1
|
|||
|
||||
while [ 1 ]
|
||||
do
|
||||
|
||||
semlock $lock
|
||||
clear
|
||||
echo "Ping radar $($date_cmd)\n"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue