Как найти & ldquo; только & rdquo; IP-адреса в локальной сети

sudo arp-scan --interface=eth0 --localnet

Я знаю, что вышеприведенная команда работает нормально, но выводит все как MAC-адрес и т. д. и т. д. Но мне нужно найти только IP-адреса. Возможно ли это?

1
задан 18 March 2014 в 22:30

2 ответа

Я бы сделал это, используя только grep:

$ sudo arp-scan --interface=eth0 --localnet | grep -oP '^[\d.]+'
192.168.0.1 
192.168.0.2 
192.168.0.3 
192.168.0.10    
192.168.0.23    
192.168.0.72    
192.168.27.1    
192.168.27.14
192.168.27.30

Объяснение:

-P сообщает grep использовать Perl Compatible Regular Expressions, где соответствует любому числу. [F6] означает «распечатать только соответствующую часть линии». Используемое регулярное выражение соответствует самой длинной строке (это означает, что + означает) последовательных чисел (\d) или точек (.), которые находятся в начале строки (^). 3]

9
ответ дан 24 May 2018 в 10:39

Вот один лайнер для получения IP-адреса с помощью команды ifconfig:

~$ ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
192.168.1.10
Делает ли это то, что вы хотели? Или вам нужна команда arp-scan?

Я перечитываю и вижу, что я пропустил суть вопроса. arp-scan показывает локальные IP-адреса для сети, и я только показывал IP-адрес устройства с ifconfig. Ниже приведена версия вышеупомянутого решения terdon, не использующая библиотеку PCRE. У Ubuntu была проблема с pcre и grep, когда я попробовал это.

$ sudo arp-scan --interface=eth0 --localnet | grep -o ^[0-9.]*
2
ответ дан 24 May 2018 в 10:39
  • 1
    Ты прав. Я вижу, что он спрашивал сейчас. – Michael McGarrah 18 March 2014 в 23:48
  • 2
    Спасибо за редактирование! Имейте upvote. В чем проблема Ubuntu? Я протестировал мой на Debian, поэтому может быть разница. – terdon♦ 19 March 2014 в 00:46
  • 3
    Я попробовал -P и не получил поддержку pcre для меня. Я на Ubuntu 12.04.3 и 12.10. Пытался pcregrep, и он был недоволен. Я копаю еще немного в моей настройке, потому что мне нравится синтаксис Perl для grep. Перл был первым регулярным выражением, которое я использовал, чтобы у меня было мягкое пятно. – Michael McGarrah 19 March 2014 в 01:01
  • 4
    Я использую это для сканирования локальной сети и поиска некоторых интересных систем, которые я не документировал. Рад, что этот вопрос поднялся. – Michael McGarrah 19 March 2014 в 01:02
  • 5
    Я просто пробовал свою 13.10 VM, и он работал нормально: echo "1.2.3.44.5 ljasd asdlnasd " | grep -Po '[\d.]+'. Убедитесь, что вы указали шаблон: '[\d.]+'. И, конечно же, вам нравятся PCRE, они, безусловно, лучший аромат регулярных выражений! :) – terdon♦ 19 March 2014 в 01:03

Другие вопросы по тегам:

Похожие вопросы: