sudo arp-scan --interface=eth0 --localnet
Я знаю, что вышеприведенная команда работает нормально, но выводит все как MAC-адрес и т. д. и т. д. Но мне нужно найти только IP-адреса. Возможно ли это?
Я бы сделал это, используя только 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]
Вот один лайнер для получения 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.]*