it-swarm-korea.com

터미널을 통해 연결된 네트워크에있는 모든 IP를 어떻게 나열 할 수 있습니까?

Ubuntu 10.10을 사용하여 네트워크에 연결된 장치의 모든 IP를 나열 할 수있는 명령 줄 명령이 있는지 궁금합니다.

예를 들어 홈 네트워크에 연결된 모든 컴퓨터를 나열하는 데 사용합니다. 이상적으로는 C++에서 실행하기 때문에 커맨드 라인이 필요합니다.

어떤 아이디어?

215

arp-scan 명령을 확인하십시오. 아마도 다음과 같이 설치해야합니다 :

Sudo apt-get install arp-scan

http://manpages.ubuntu.com/manpages/hardy/man1/arp-scan.1.html

그리고 세부 사항을 더주기 위하여 :

Sudo arp-scan --interface=eth0 --localnet

여기서 eth0은 사용자의 장치입니다. 다음을 사용하여 장치를 찾을 수 있습니다.

ifconfig
238
Linker3000

Nmap을 사용하십시오. 예 : nmap -sn 10.10.10.0/24 arp 캐시는 최근에 연락을 시도한 것만 알려줍니다.

110
Keith

창문에서 이것은 "arp -a"이 될 것입니다. 나는 리눅스에서 그것과 동등한 것이 "arp -e"라고 믿습니다.

이 정보는 arp의 man 페이지에서 찾을 수 있습니다.

arp with no mode specifier will print the current content of the table.
-e : Use default Linux style output format (with fixed columns).
20
David

네트워크가 192.168.0.0/24이면 다음 코드로 실행 파일을 만드십시오. 192.168.0를 실제 네트워크로 변경하십시오.

#!/bin/bash
for ip in 192.168.0.{1..254}; do
  ping -c 1 -W 1 $ip | grep "64 bytes" &
done
15
Anders Larsson

nmap (Sudo apt-get install nmap)을 설치하고 IP 주소의 처음 세 부분과 nmap 192.168.1.0/24를 대체하여 192.168.1를 입력하십시오 (ip addr를 사용하여 찾으십시오).

또한 ping 192.168.1.255 (다시 192.168.1 대체), ping 발급해야합니다 실행하여 네트워크의 약간 덜 정확한 (내 경험에)지도를 얻을 수 있습니다. 네트워크의 모든 컴퓨터가 있지만, 내 경험에 의하면, 항상 올바르게 작동하지는 않습니다.

12
Samadi

tmux을 사용하는 넥서스에서 다음과 같이 arp-scan가 repo에 없지만 nmap이 사전 설치되어 제공된 경우 ip 주소 만 표시됩니다.

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'
2
zentek

연결된 장치 목록이보다 소형 인 경우 :

nmap -sL 192.168.0.* | grep \(1

설명.

nmap -sL 192.168.0.*는 서브 네트워크에있는 모든 IP를 나열하고 이름이있는 것을 표시합니다.

Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for Android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255

흥미로운 모든 레코드는 괄호 (1로 시작하므로 | grep \(1를 사용하여 필터링합니다 (괄호를 이스케이프 처리하려면 백 슬래시가 필요합니다)

Quirk
두 장치가 같은 이름을 가지고 있다면, nmap은 라우터 에 마지막으로 연결된 라우터 만 표시합니다.

1
Alexander Malakhov

정교한 Anders Larsson 대답 -

#!/bin/bash
function scan ()
{
    for ip in $1.{1..254}; do
        ping -c 1 -W 1 $ip &
    done | sed -nE 's:^.* from ([0-9.]+).*time=(.*s)$:\1 (\2):p'
}

if [ $1 ]; then
    for baseip; do
        scan $baseip
    done
else
    scan 192.168.1
fi
0
Mathieu CAROFF