터미널을 통해 연결된 네트워크의 모든 IP를 선호하는 방법은 무엇입니까?


219

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

예를 들어 홈 네트워크에 연결된 모든 컴퓨터를 나열하기 위해 이것을 사용합니다. 이상적으로는 C ++에서 실행할 때 명령 줄이어야합니다.

어떤 아이디어?




답변:


243

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

고마워요 필요한 형식을 정확하게 반환합니다.
Christopher Gwilliams

1
OSX에서도 완벽하게 작동합니다! Brew와 함께 설치되었으며 인터페이스는 eth0이 아닌 en0이지만 훌륭하게 작동합니다.
nthonygreen

6
Wi-Fi를 사용하여 네트워크에 연결된 경우 wlan0대신을 사용하십시오 eth0.

3
IP 주소뿐만 아니라 호스트 이름을 나열 할 수 있습니까?
user1527227

2
이것이 ARP 캐시를 사용하지 않는다는 점은 주목할 가치가 있습니다. 실제 스캔을 수행합니다. 대부분의 nmap 스캔과 달리 이것은 레이어 3 경계를 넘을 수 없으며, 일반적으로이 시나리오에서 원하는 것입니다. (즉, 서브넷으로 제한됩니다.)
Zenexer

112

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


2
지정된 IP는 10.10.10.0입니까? 이 경우 24는 무엇입니까? 감사.
kolonel

4
@kolonel 이것은 단지 예일뿐입니다. 네트워크로 대체해야합니다. 24는 서브넷 마스크의 "슬래시 표기법"입니다. 왼쪽에서 24 비트를 사용한다는 의미입니다. 255.255.255.0과 같습니다.
Keith

2
@Keith 내 네트워크 주소를 어떻게 사용하는지 알고 있습니까? 아니면 마지막에 0/24의 IP입니까?
TMH


20

Windows에서 이것은 arp -a" arp -e"일 것입니다. "Linux에서와 같은 것이" "라고 생각합니다 .

이 정보는 arp 매뉴얼 페이지에서 찾을 수 있습니다.

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

작동하는 것처럼 보입니다 (공용 네트워크에있을 때 게임을해야하므로 네트워크에있는 모든 서버 만 나열하는 것 같습니다.
Christopher Gwilliams

홈 네트워크에있는 경우 라우터에 연결된 장치 만 표시됩니까? 감사!
Christopher Gwilliams

1
이 명령은 호스트의 현재 arp 캐시에있는 장치 만 나열하며 호스트가 최근에 접속 한 장치 만 표시합니다.
링커 3000

둘 다 Linux에서 작동하지만 arp -a대체 (BSD) 스타일로 모든 호스트를 표시합니다. Simpy 실행 arparp -e기본 설정 이므로 실행과 동일 합니다.
simplegamer

15

네트워크가 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

안녕하세요 Anders ... 사용자의 네트워크가 192.168.0.0/24가 아닐 수 있습니다. 메모를했습니다. 이 사이트의 서식은 #!가 마음에 들지 않았으므로 코드 스 니펫의 서식을 어지럽 혔습니다. 코드를 입력 할 때 블록 인용 부호 또는 미리 서식이 지정된 텍스트 단추를 사용하고 제출 전에 캐리지 리턴, 탭, 공백이 제거되었을 수 있습니다.
Nevin Williams

또한 단순히 잘라내어 붙여 넣기 대신 파일에 넣고 실행 가능하게 만들어야하는 스크립트를 제공 할 때이를 지정하는 것이 가장 좋습니다. 솔루션을 구현하는 데 필요한 모든 것이 명확하지 않을 수 있습니다.
Nevin Williams

12
기술적으로 이것은 ping에 응답하는 호스트 만 반환합니다. 연결되었지만 ICMP 에코 요청에 응답하지 않는 호스트가있을 수 있습니다. 또한 IP 네트워크의 마지막 주소 인 브로드 캐스트 주소를 지정하여 하나의 패킷을 전체 네트워크에 브로드 캐스트 할 수 있습니다. ping -c 1 -W 1 192.168.0.255는 for 루프와 동일하게 수행됩니다.
Nevin Williams

@NevinWilliams (필수 -b, 제거 -W 더 기다림) ping -b -c 1 192.168.0.255결과 "1 패킷 전송, 0 수신, 100 % 패킷 손실, 시간 0ms"
Aquarius Power

13

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

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


실제로 어떤 대답도 항상 올바르게 작동하지는 않습니다. IP는이 요구 사항을 염두에두고 설계되지 않았으며 사설 VLAN과 같은 것이 있기 때문에 동일한 LAN에서 다른 호스트를 찾을 수 없습니다.
Ron Maupin

2

repo에는 없지만 사전 설치되어 있는 tmux그대로 사용하여 넥서스에서 다음과 같이 IP 주소 만 표시합니다.arp-scannmap

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

1

보다 간단한 연결된 장치 목록 :

nmap -sL 192.168.0.* | grep \(1

설명.

nmap -sL 192.168.0.* 하위 네트워크의 모든 IP를 나열하고 이름이있는 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 으로 라우터에 연결된 장치 만 표시합니다.


두 질문에 대해 똑같은 대답이 있다면 중복 답변을 게시하는 대신 질문을 중복으로 표시하는 것이 좋습니다. 그렇게하면 비슷한 질문들이 서로 연결될 때 지식을 공유 할 수 있습니다.
Mokubai

1
@Mokubai 당신 말이 맞아요, OP에 의견을 추가했습니다. 이것은 흥미로운 문제를 보여줍니다. 빠른 검색 (우분투, SF, 유닉스를 물어 SU) 6 개 중복 (이 Q 5 개 링크) 4 개 네트워크 사이트에서 발견했다. 훨씬 더 있습니다! 이것을 어떻게 처리합니까? 이상적으로이 6 개의 게시물 각각은 5 개의 다른 게시물에 연결되어야합니다. 이러한 링크를 모두 수동으로 추가해도 규모가 커지지 않습니다. 그래서 지금은이 게시물에 링크했습니다 (가장 많이 찬성했습니다). 또 다른 문제는 AskUbuntu의 Q를 SU의 Q의 복제본으로 표시 할 수 없다는 것입니다. 흠 ... 아마도 이것은 이미 메타에 대해 논의 되었습니까?
Alexander Malakhov

Centos 7에서는 작동하지 않습니다. 네트워크에 가능한 모든 IP 주소를 이름없이 나열하십시오. arp-scan이 나를 위해 일했습니다.
Jeff

0

Anders Larrson의 답변에 대한 설명-

#!/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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.