Wiem, że jest jeden wiersz polecenia i jego argumenty, które mogą pomóc wyświetlić wszystkie adresy IP komputera (te, które są używane) w sieci LAN, a mój komputer jest również klientem, jak jeden z wyświetlanych, ale zapomniałem. Co to jest?
Wiem, że jest jeden wiersz polecenia i jego argumenty, które mogą pomóc wyświetlić wszystkie adresy IP komputera (te, które są używane) w sieci LAN, a mój komputer jest również klientem, jak jeden z wyświetlanych, ale zapomniałem. Co to jest?
Odpowiedzi:
Możesz wykonać arp -a
polecenie, aby wyświetlić wszystkie wpisy ARP w tabeli dotyczące komputerów w sieci.
Nie wszystko z adresem IP to komputer - nie znalazłem żadnej z tych sugestii, która zwróciła wszystkie aktywne adresy IP - w rzeczywistości większość zwróciła bardzo niewiele. Moja domowa sieć ma połączenie urządzeń przewodowych i bezprzewodowych oraz dwóch routerów, telefonów komórkowych, telewizji, PVR, Apple AirPort i prawdopodobnie kilku rzeczy, o których zapomniałem. Użyłem następujących do skanowania wszystkich adresów w podsieci 192.168.1.xxx:
for /L %i in (0,1,255) do ping -n 1 -w 250 192.168.1.%i>>ipaddress.txt
Wynikowy plik ipaddress.txt zawiera wyniki ping dla wszystkich adresów i szukałem tych z „ Received = 1
” - obecnie 16 adresów zwróciło wynik - mam tylko 4 komputery w domu - i nie wszystkie były włączone.
for /L %i in (0,1,255) do ping -n 1 192.168.1.%i -4 | findstr -m "bytes=32" >> ipaddress.txt
ma zasługi, ale nie jest podstawą do odpowiedzi, nie są zgodne z resztą odpowiedzi, które wykorzystywane Received = 1
zamiast bytes=32
, i niekoniecznie jest sposobem bym zrobił. Dodam ten komentarz, jeśli ktokolwiek uzna sugestię za przydatną.
for /L %i in (1,1,254)
może być bardziej odpowiednie, ponieważ xxxxxx.0
jest to adres całej sieci i xxxxxx.255
adres rozgłoszeniowy.
Istnieje net view /all
polecenie, które wyświetli listę wszystkich nazw komputerów podłączonych do tej samej sieci LAN.
Następnie możesz pobrać poszczególne adresy IP za pomocą nslookup <computer name>
polecenia lub napisać skrypt wsadowy, aby to zrobić za Ciebie.
Oto przykładowa partia, którą zrzuciłam dla zilustrowania.
@echo off
setlocal EnableDelayedExpansion
set "xNext="
set "xComputer="
for /f %%A in ('net view /all') do (
set "xComputer=%%~A"
if "!xComputer:~0,2!"=="\\" for /f "tokens=2,* delims=. " %%X in ('nslookup %%A') do (
if "!xNext!"=="1" (
echo.!xComputer! = %%X.%%Y
set "xNext=0"
)
if "!xComputer:~2!"=="%%~X" set "xNext=1"
)
)
endlocal
pause
Oprócz arp -a
, net view /all
lub napisanie skryptu wsadowego nie ma natywny / wbudowany w wierszu polecenia, aby to zrobić (przynajmniej nie o tym nie wiem).
Jeśli chcesz użyć komendy innej niż natywna, sugeruję użycie Nmapa . Możesz uruchomić nmap -sn 192.168.0.0/24
(zastępując podsieć odpowiednią do swojej sieci LAN), aby osiągnąć to, czego szukasz, bardziej niezawodnie niż net view /all
lub arp -a
moim zdaniem.
ipconfig /all
(użyj ukośnika do przodu, a nie do tyłu)
Jak wskazał ktoś inny, możesz arp -a
jednak użyć najpierw pingowania adresu rozgłoszeniowego, aby ARP zgłosił wszystkie urządzenia. Na przykład,ping 192.168.0.255
otrzymasz listę wszystkich urządzeń podłączonych do sieci według ich adresów IP i MAC. możesz wyszukać adresy MAC na stronie takiej jak https://aruljohn.com/mac.pl, aby dowiedzieć się, kto jest sprzedawcą karty sieciowej. Powinno to pomóc ci zawęzić zakres większości urządzeń. tj. komputery, drukarki, telewizor, telefon komórkowy itp.
echo ls %USERDNSDOMAIN%|nslookup
wyświetl wszystkie adresy IP komputerów (te, które są używane)
Myślę, że możesz powiedzieć, że netstat -a
daje to ci aktywną listę. Jeśli chcesz poznać program za pomocą adresu IP, użyj netstat -b
(otwórz jako administrator).
netstat -a
zrzuca listę bieżących połączeń sieciowych. Lewa kolumna adresu IP zawiera interfejs lokalny.