38 lines
1021 B
Bash
38 lines
1021 B
Bash
|
#!/bin/bash
|
||
|
|
||
|
#
|
||
|
# Simple script converting nmap's greppable output into a
|
||
|
# printable per-host table with protocol, port, state and service
|
||
|
# columns in it.
|
||
|
#
|
||
|
|
||
|
#
|
||
|
# WARNING:
|
||
|
# This script looks for gnmap (-oG) files within
|
||
|
# current working directory (cwd)
|
||
|
#
|
||
|
|
||
|
for host in $(find -name "*.gnmap" | sort -t'.' -n -k5)
|
||
|
do
|
||
|
if cat $host | grep -q "Status: Up" && cat $host | grep -q "Ports:"; then
|
||
|
hostip=$(grep Ports $host | cut -d' ' -f2)
|
||
|
ports=$(cat ${hostip}*.gnmap | grep Ports | cut -d: -f3 | sed 's:/, :\n:g' | awk '{$1=$1}1')
|
||
|
|
||
|
IFS=$'\n'
|
||
|
|
||
|
echo -e "\n\nHost: $hostip\n"
|
||
|
echo -e "Proto\t| Port\t| State\t\t| Service"
|
||
|
echo -e "----------------------------------------------------"
|
||
|
|
||
|
for port in $ports
|
||
|
do
|
||
|
proto=$(echo $port | cut -d/ -f3)
|
||
|
portnum=$(echo $port | cut -d/ -f1)
|
||
|
state=$(echo $port | cut -d/ -f2)
|
||
|
service=$(echo $port | cut -d/ -f5)
|
||
|
|
||
|
printf "%s\t| %-5s\t| %-13s\t| %s\n" $proto $portnum $state $service
|
||
|
done | sort -u -k3,3 -n
|
||
|
fi
|
||
|
done
|