扫描我的网络的脚本

扫描我的网络的脚本

我有一个问题,我想运行一个脚本来扫描我的网络,这样我就能查看网络中的设备。我还想在脚本中粘贴一些参数

当我运行脚本时:

 ./ping.sh --xx-YY 20 50

输出:

192.168.0.20 is down 

192.168.0.21 is up 
..................................

192.168.0.50 is up
the argument -t , counts 200 by the last digit for ex. ./ping.sh -t 20 output: 192.168.0.220 is up

但是我的问题是,当我运行脚本 ./ping.sh --up 时,我想要的参数 --up en -mac 只显示已启动的计算机,而参数 - mac 也是一个问题,当我运行脚本时,我想在计算机 ping 通后显示 ip 地址和 mac 地址**

有人能帮我解决这两个论点吗?

这是我的脚本。

#!/bin/bash

while [[ -n "$@" ]]
do
    case "$1" in

    -h|--help)
    Extension=1
    shift
    ;;

    -XX-YY)
    Extension=2
    shift
    min=$1
    shift
    max=$1
    shift

    ;;

    --up)
    Extension=3
    shift
    end=$1
    shift
    ;;

    -t)
    Extension=4
    shift
    count=$(($1+200))
    shift
    ;;
    esac
done

if [ "$Extension" -eq 1 ] ; then

    echo "dit is de help"

fi


if [ "$Extension" -eq 2 ] ; then

for ((n=$min ; n<=$max ; n+=1))
do
ip=192.168.0.$n
if ping -c 1 -w 1 ${ip} > /dev/null 2> /dev/null >> logping.txt; then
echo "${ip} is up"
else
echo "${ip} is down"
fi
done


fi

if [ "$Extension" -eq 3 ] ; then


                ip=192.168.0.$end
                if ping -c 1 -w 1 ${ip} > /dev/null 2> /dev/null >> /logping.txt; then
                        echo "${ip} is up"

                fi

fi

if [ "$Extension" -eq 4 ] ; then

ip=192.168.0.$count
if ping -c 1 -t 1 ${ip} > /dev/null 2> /dev/null >> logping.txt; then
echo "${ip} is up"
else
echo "${ip} is down"
fi
fi

答案1

我们来做一些订购吧。

案例 #5:-mac或者,更好的是,--ip
您的案例 #5 的“案例陈述”行没有问题。
不过,我强烈建议您将选项的名称从-mac--ip。Mac 地址和 Ip 地址是不同的概念,在这种情况下我认为ip是合适的。

风格问题:即使没有严格的规定,-如果以下选项仅由一个字母组成,则 通常使用单数--,如果由多个字母组成,则使用双数。例如,在您的同一个例子中,您有-h--help。(甚至更正--xx-YY)。脚本往往会持续一段时间,之后看到只有一个会很奇怪-

回到#5的代码,你可以使用类似的代码:

if [ "$Extension" -eq 5 ] ; then
  ip=192.168.1.$mac
   if nmap -sP -n -r $ip | grep "is up" >/dev/null ; then
      echo "${ip} is up"
   fi
fi

该尝试中的错误:
ip=192.168.0.$mac定义于192.168.0.xxx并且下一行不使用变量$ip,而是使用子网192.168.1.0/24. 嵌套if... then fi块未以 结束fi


**案例 #3:--up**
如果我正确理解你的意思,你想以某种方式显示所有向上子网中的主机。因此您无需指定结尾变量为知识产权,但你应该扫描所有子网192.168.1.xxx

您可以使用以下命令

if [ "$Extension" -eq 3 ] ; then
  sudo nmap -sP -n -r 192.168.1.0/24 | grep -E "Nmap scan|MAC Address:"
fi

更新:有关 MAC 地址的参考

相关内容