Zdaję sobie sprawę z metod, w których można uruchomić for
pętlę Bash i ping
wiele serwerów, czy istnieje narzędzie Linux CLI, którego mogę użyć, co pozwoli mi to zrobić bez konieczności pisania skryptu Bash na ping
liście serwerów pojedynczo?
Coś takiego:
$ ping host1 host2 host3
UWAGA: Szukam konkretnie CentOS / Fedory, ale jeśli działa na innych dystrybucjach, to też jest w porządku.
networking
ping
icmp
slm
źródło
źródło
Odpowiedzi:
Jeśli spojrzysz na projekt NMAP, zobaczysz, że zawiera on dodatkowe narzędzia
nmap
. Jednym z tych narzędzi jestnping
, która obejmuje następującą zdolność:nping
jest w standardowych repozytoriach EPEL do uruchomienia.Stosowanie
Aby wysłać ping do wielu serwerów, wystarczy podać
nping
nazwy / adresy IP i jakiego protokołu chcesz użyć. Ponieważ chcemy naśladować tradycyjnyping
interfejs CLI, użyjemy ICMP.Jedyną wadą, jaką znalazłem w tym narzędziu, jest użycie trybu ICMP wymagającego uprawnień roota.
źródło
nmap
obsługuje również ICMP bezpośrednio, określając opcję-sn
. Zobacz moją odpowiedź, aby poznać szczegóły.fping jest w pakiecie Fedory o tej samej nazwie i pozwala na wiele hostów lub zestaw adresów IP.
źródło
Opis:
źródło
Sugerowałbym użycie GNU Parallel
dane wyjściowe będą przeplatane
źródło
Wiem, że nie jest to dokładnie to, o co prosisz, ale skrypt bash, aby to osiągnąć:
Spowoduje to przyjęcie punktów końcowych jako argumentów wiersza poleceń i wysłanie każdemu z nich polecenia ping 5 zliczeń jako procesu w tle, a następnie poczekanie na zakończenie wszystkich przed wyjściem. Wydrukuje trzy ostatnie wiersze wyniku pingowania, który zawiera przydatne statystyki dotyczące wskaźnika powodzenia i opóźnienia.
źródło
wait
będzie czekał na wszystkie aktywne procesy potomne, dzięki czemu można uniknąć drugiej pętli. Myślę, że jednym z powodów, dla których poproszono go, aby nie wymagał pisania skryptu bash, jest posiadanie rozwiązania, które działa na dowolnej maszynie bez konieczności noszenia ze sobą lub pisania skryptu. Krótko mówiąc wydaje się bardziej sprzyjające, więc uważam, że lepiej unikać tego przypisywania argumentów i po prostu zrobić tofor host; do
w pierwszej pętli. Gdyby to było zsh, można uniknąćdo
, adone
i tak zrobić, interatively:for host in google.com; ping -c5 "$host" |& tail -3 & wait
command &
) w podpowłoce (tj zawijania z parens) iwait
połączyć dowolną liczbę poleceń w jedno polecenie sztucznego, na przykład:(for f in google.com yahoo.com microsoft.com; do ping $f & done; wait)
. Ich dane wyjściowe będą przeplatane, a kiedy ctrl + c to po tym poleceniu, wszystkie trzy procesy potomne zostaną zabite. Powłoka ma wiele potężnych konstrukcji kontroli zadań i jest to jedna z nich.Myślę, że to może ci pomóc?
Wykorzystuje on
printf
zdolność do „auto-iteracji” swoich argumentów, ponownie wykorzystując ciąg formatu dla każdego argumentu. Dlatego powyższeprintf
tworzy sekwencjęping <hostname> &
ciągów znaków dla każdego hosta podaną jako argument i przekazuje taką sekwencję poleceń poprzez zastąpienieeval
polecenia do polecenia, aby je natychmiast wykonać.printf
aeval
polecenia są standardem POSIX, a także zastępowanie poleceń.Zawarcie całej takiej komendy w podpowłoce zawierającej i-ed
wait
takie jak to:zapewnia możliwość przerwania wszystkiego w prosty sposób Ctrl+C.
W przeciwnym razie możesz kontrolować każde
ping
polecenie osobno poprzez zwykłą kontrolę zadań powłoki.Jeśli twoja powłoka obsługuje także zastępowania procesów, możesz także użyć następujących poleceń:
o kilka znaków mniej do wpisania.
Istota jest taka sama jak dla
eval
, ale przekazuje sekwencjęping
s do polecenia.
(akasource
) poprzez podstawienie procesu.źródło
Nmap obsługuje skanowanie pingów (ICMP) i wiele hostów:
nmap -sn -n 127.0.0.1 8.8.8.8
Możesz także utworzyć plik zawierający wszystkie docelowe adresy IP (oddzielone spacjami lub znakami nowej linii)
targets.txt
. Następnie uruchomić:nmap -sn -n -iL targets.txt
Opcje wyjaśnione:
-sn
Ping Scan.-n
Wyłącz rozpoznawanie DNS.-iL
Nazwa pliku wejściowego.Inne interesujące opcje na wypadek, gdybyś chciał pingować naprawdę dużą liczbę celów:
-T4
Zwiększ czas, aby skrócić czas skanowania.--min-parallelism 100
Zwiększ liczbę równoległych sond.-oG <file>
Zapisz wyniki skanowania do pliku w formacie Grepable.Bez tworzenia pliku
Pamiętaj, że możesz również zrezygnować z tworzenia pliku i użyć a,
-
aby pobrać dane wejściowe z potoku|
lub tradycyjnymi metodami przekierowywania danych wyjściowych za pomocą STDIN.Przykłady:
-lub-
-lub-
Referencje
źródło
Za pomocą wspólnej
xargs
komendy zbuduj wieleping
żądań:Gdzie
host1 host2 host3
może być zmienna liczba hostów (dowolna kombinacja adresu IP lub nazwy hosta).To zmienia
xargs
wartości domyślne, aby wymusić 1 argument wejściowy na wykonanie polecenia ping i pozwolić na nieograniczoną liczbę równoległych procesów potomnych (1 na hosta). Prawdopodobnie rozsądnie jest ustawić-P
(aka--max-procs
) na rozsądną wartość, jeśli zamierzasz pingować dużą liczbę hostów (wszystkie zostaną przetworzone; tylko kilka jednocześnie).Jest wystarczająco krótki, aby używać go bezpośrednio, może zostać dodany jako funkcja do profilu powłoki lub pliku rc lub przekształcony w mały skrypt w twoim
$PATH
. W poniższych przykładach-P
ustawiono wartość 10, aby uniknąć nadmiernego zużycia zasobów.Przykładowy skrypt:
/usr/bin/mping
Przykładowa funkcja w obrębie
~/.bashrc
I użyj jako:
źródło
--max-procs
/-P
. Jednak w przypadku mniejszej liczby hostów-P
wszystkie pingi są wykonywane równolegle - co oznacza, że zajmie to tyle czasu, ile pojedyncze wykonanie ping, a nie ich suma.Nie wiem dokładnie, czego chcesz, ale możesz zmienić ostatni zestaw 8 bitów na liczbę dziesiętną 255, więc twoje hosty otrzymają transmisję, w rzeczywistości wyśle pakiety ping do wszystkich urządzeń, które istnieją w sieci.
źródło
Wydajność
źródło
&&
operator zezwala na uruchomienie drugiego polecenia tylko wtedy, gdy pierwsze polecenie zakończy się powodzeniem, (tj. Kod wyjścia 0) I 2) pierwszy ping nigdy się nie skończy bez ^ C, aby go przerwać. Rozważ dodanie parametru -c i -w. Witamy na stronie!Tylko dla zabawy i zysku ...
Można to łatwo poprawić. Co sprawia, że jest całkiem przydatny. :)
Aby uzyskać dodatkowe opcje, zobacz strony podręcznika dla poleceń bsd ping i ping systemu Linux
HTH
EDYCJA: nieznacznie zaktualizowana, aby zakończyć zapytania ping po 6 pingów i dodać opcje strony podręcznika.
źródło
ping
połączenie nigdy nie powraca, chyba że napotka błąd krytyczny.Użyj poniższego prostego polecenia:
źródło