Linux | sprawdzenie całej podsieci

Problemy z pozostałymi technologiami (SDH, IronPort, WAAS itp.)
Wiadomość
Autor
natash
wannabe
wannabe
Posty: 315
Rejestracja: 07 gru 2005, 00:00

Linux | sprawdzenie całej podsieci

#1

#1 Post autor: natash »

Panowie, nigdy nie skryptowałem, ogólnie słabo znam linuxa i to moja bolączka, ale czas to zmienić i zacząć mocniej zrozumieć to środowisko, tylko nie bijcie za to banalne pytanie ;).

Jak stworzyć skrypt (poproszę o wskazówki od czego zacząć dla zielonego ufoludka który nigdy nic w tym nie robił) który zezwoli pingować np. podsieć lub wybrane ip z podsieci i da mi wynik tylko tych które są aktywne np.

bash-3.00$ ./bin/scan192.168.1.{1..10}
192.168.1.1 is alive
192.168.1.5 is alive

hetman
member
member
Posty: 37
Rejestracja: 11 wrz 2012, 12:10
Lokalizacja: PL

#2

#2 Post autor: hetman »

Kod: Zaznacz cały

subnet=$1
for addr in `seq 0 1 255 `; do
#   ( echo $subnet$addr)
( ping -c 3 -t 5 $subnet$addr > /dev/null && echo $subnet$addr is Alive ) &
done 

natash
wannabe
wannabe
Posty: 315
Rejestracja: 07 gru 2005, 00:00

#3

#3 Post autor: natash »

A teraz jak to zrozumieć, najlepiej jakiś sprawdzony blog lub miejsce gdzie byłyby wyjaśnione podstawy...

hetman
member
member
Posty: 37
Rejestracja: 11 wrz 2012, 12:10
Lokalizacja: PL

#4

#4 Post autor: hetman »

Jak od zera to może coś takiego link

To co Ci napisałem jest bardzo proste. $1 to argument który podajesz podczas wykonywania skryptu. Powiedzmy że zapisałes ten kod jako "skaner" i ustawiłeś chmod +x, więc wpisujesz "sh skaner 10.0.1." (jak dodasz na początku skryptu #!/bin/sh to możesz wpisać "skaner 10.0.1." bez wskazywania na powłoke)i skrypt sprawdzi adresy od 10.0.1.0 do 10.0.1.255. Dla każdego adresu tworzony jest osobny proces, więc nie musisz czekać na odpowiedź poprzednich adresów.

natash
wannabe
wannabe
Posty: 315
Rejestracja: 07 gru 2005, 00:00

#5

#5 Post autor: natash »

A jak zrobić żeby za każdym razem podać inne wartości skryptu (wybrane adresy) przy wywoływaniu skryptu z linii komend?

Keadwen
wannabe
wannabe
Posty: 192
Rejestracja: 03 paź 2011, 07:14

#6

#6 Post autor: Keadwen »

Nie wymyślaj na nowo, tylko użyj to co masz:

$ sudo apt-get install fping
$ fping -n -g 192.168.0.0/24

Radzik
member
member
Posty: 27
Rejestracja: 25 mar 2011, 13:48

#7

#7 Post autor: Radzik »

Po pierwsze napisz jaki to system. Może się okazać że to wcale nie Linux(uname -a). Dodatkowo jeśli to starszy system bez dostępnego repozytorium i opcji instalacji czegokolwiek to możliwości mogą być ograniczone. Bash w wersji 3.0 wyszedł już jakiś czas temu(~2004) stąd moje pytanie ;)

michalw
member
member
Posty: 23
Rejestracja: 27 gru 2013, 10:00

#8

#8 Post autor: michalw »

root@linux:~#nmap -sP 10.20.10.0/24

Starting Nmap 6.40 at 2014-08-28 13:35 CEST
Nmap scan report for 10.20.10.7
Host is up (0.00072s latency).
Nmap scan report for 10.20.10.10
Host is up (0.0012s latency).

Nmap done: 256 IP addresses (2 hosts up) scanned in 2.03 seconds


a pisanie skryptów zawsze możesz potrenować ;)

natash
wannabe
wannabe
Posty: 315
Rejestracja: 07 gru 2005, 00:00

#9

#9 Post autor: natash »

Kod: Zaznacz cały

SunOS defthwux 5.10 Generic_138888-08 sun4v sparc SUNW,SPARC-Enterprise-T5120
Instalować nie mogę, nie mam praw, przy próbie pyta o hasło.

natash
wannabe
wannabe
Posty: 315
Rejestracja: 07 gru 2005, 00:00

#10

#10 Post autor: natash »


Radzik
member
member
Posty: 27
Rejestracja: 25 mar 2011, 13:48

#11

#11 Post autor: Radzik »

natash pisze:A jak zrobić żeby za każdym razem podać inne wartości skryptu (wybrane adresy) przy wywoływaniu skryptu z linii komend?
To zależy co masz na myśli. Możesz użyć wbudowanych w system narzędzi. Jedno z tych co podałeś w linku:

Kod: Zaznacz cały

pawel@desktop ~ > echo 8.{1..9}.8.8
8.1.8.8 8.2.8.8 8.3.8.8 8.4.8.8 8.5.8.8 8.6.8.8 8.7.8.8 8.8.8.8 8.9.8.8
Jeśli masz jakąś określoną grupę adresów IP to możesz zrobić z niej listę. Lista to osobny plik w którym adresy są podane "jeden pod drugim".

Kod: Zaznacz cały

pawel@desktop ~ > cat lista
8.8.8.8
8.8.8.4
8.8.4.4
1.1.1.1
Póżniej tą listę wczytujesz do skryptu który pinguje każdy adres z listy.

Kod: Zaznacz cały

#!/bin/sh
while read line; do
ping $line 1 3 >> /dev/null;
if [ $? != 0 ]; then
echo "$line is not reachable"
else
echo "$line is reachable"
fi
done < sciezka_do_pliku_z_lista_ip
Wynik:

Kod: Zaznacz cały

pawel@desktop ~ > ./skrypt
8.8.8.8 is reachable
8.8.8.4 is not reachable
8.8.4.4 is reachable
1.1.1.1 is not reachable

ODPOWIEDZ