- 论坛徽章:
- 0
|
没有贴得太多主要怕大家看得烦。其实是一个很简单的脚本,就是多线程运行nmap的命令,然后根据结果来区分是windows还是linux系统。我这个脚本出来的数据倒是正确的。
#!/bin/bash
## analyze the OS type
LOG=./3-nmap_result.txt
rm -rf $LOG
touch $LOG
function nmapallip()
{
#!/bin/bash
#check the hosts belong to win or linux
MAX_THREAD_NUM=50
tmp_fifo_file=/tmp/$$.fifo
mkfifo "$tmp_fifo_file"
exec 9<>"$tmp_fifo_file"
rm "$tmp_fifo_file"
for((i=0;i<$MAX_THREAD_NUM;i++));do
echo
done >&9
while read line2
do
{
read -u 9
{
hostname=`echo $(echo $line2 |awk -F"[;]" '{print $2}')`
okip=`echo $(echo $line2 |awk -F"[;]" '{print $1}'| sed 's/^[ \t]*//g')`
SYSTEM=`sudo nmap -O -T Insane $okip`
echo "system is $SYSTEM"
if (echo $SYSTEM |grep -Eq "linux_kernel"); then
echo "Linux"
echo -e "$hostname;$okip;linux" >> $LOG
elif (echo $SYSTEM |grep -Eq "windows"); then
echo "windows"
echo -e "$hostname;$okip;windows" >> $LOG
elif (echo $SYSTEM |grep -Eq "cisco"); then
echo "cisco"
echo -e "$hostname;$okip;cisco" >> $LOG
else
echo -e "$hostname;$okip;What?" >> $LOG
fi
echo >&9
}&
}
done <hostlist.txt
wait
exec 9>&-
}
nmapallip
|
|