У меня есть вопрос, я хочу запустить скрипт, который сканирует мою сеть, и который я вижу, когда устройства в моей сети. Я хочу вставить некоторые аргументы также в сценарии

Когда я запускаю скрипт:

 ./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-адреса и адрес de mac после того, как компьютеры пингуются **

Кто-нибудь может мне помочь с этими 2 аргументами?

Это мой сценарий.

#!/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 ответ1

0

Давайте сделаем некоторый заказ.

Дело № 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-адрес

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .