내 네트워크를 검색하는 스크립트

내 네트워크를 검색하는 스크립트

내 네트워크를 검색하고 내 네트워크에 장치가 있는지 확인할 수 있는 스크립트를 실행하고 싶은 질문이 있습니다. 스크립트에도 몇 가지 인수를 붙여넣고 싶습니다.

스크립트를 실행할 때:

 ./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

하지만 내 문제는 --up en -mac 스크립트를 실행할 때 원하는 인수입니다. ./ping.sh --up , 거기에 있는 컴퓨터만 표시됩니다. 그리고 인수 - mac은 스크립트를 실행할 때도 문제가 됩니다. 컴퓨터가 핑을 한 후 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**
내가 의미하는 바를 올바르게 이해했다면 모든 항목의 목록을 어떻게든 표시하고 싶을 것입니다.위로해당 서브넷의 호스트입니다. 따라서 다음을 지정할 필요가 없습니다.에 대한 변수IP하지만 모든 서브넷을 스캔해야 합니다 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 주소에 대한 참조

관련 정보