掃描我的網路的腳本

掃描我的網路的腳本

我有一個問題,我想運行一個腳本來掃描我的網絡,我可以看到網路中的設備已啟動。我想在腳本中貼上一些參數

當我運行腳本時:

 ./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 位址和de 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是合適的概念。

風格問題:即使這不是嚴格的規則,如果以下選項僅由一個字母組成,則通常使用 single,如果由多個字母組成,則通常-使用 double 。--例如,在您的同一個範例中,您有-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 位址的參考

相關內容