sudo arp-scan --interface=eth0 --localnet
Я знаю, что вышеупомянутая команда хорошо работает, но она производит все как MAC-адрес и т.д., и т.д. Но я должен найти только IP-адреса. Действительно ли это возможно?
Я просто использовал awk
, tail
и head
для достижения того, что Вы хотите:
sudo arp-scan --interface=eth0 --localnet| awk '{print $1}'|tail -n +3|head -n -2
это дает вывод как
192.168.1.1
192.168.1.3
, поскольку у меня есть только эти два в моем Lan.
Здесь awk '{print $1}'
печать IP-адрес, который расположен в первом столбце. tail
и head
удаляет ненужный материал как заголовок и просто показывает 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 Совместимые Регулярные выражения, где \d
соответствия любое число. Эти -o
означает "печать только часть соответствия строки". Регулярное выражение я использовал средства, соответствует самой длинной строке (это - то, что +
средства), последовательных чисел (\d
) или отмечает точкой (.
), которые являются в начале строки (^
).
<забастовка> Здесь является одним лайнером для получения IP-адреса с помощью команды ifconfig:
~$ ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
192.168.1.10
, который делает то, что Вы хотели? Или Вам была нужна команда arp-сканирования?
забастовка> я перечитал и вижу, что упустил суть вопроса. arp-scan
шоу локальные IP-адреса для сети и я только показал IP машины с ifconfig
. Ниже версия вышеупомянутого terdon решение только не пользование библиотекой PCRE. Ubuntu имел проблему с pcre и grep, когда я попробовал его.
$ sudo arp-scan --interface=eth0 --localnet | grep -o ^[0-9.]*
другая опция упростить ответ @Stormvirux состоит в том, чтобы использовать - тихий или-q и - плоскость или-x аргументы, которым предоставляют arp-сканирование вместо того, чтобы передать по каналу, чтобы возглавить и выследить команды, заключительная команда будет более простой, поскольку это передаст по каналу только к awk:
arp-scan -qx --localnet | awk '{print $1}'
и вот очень подробное объяснение от arp-сканирования - справка:
--quiet or -q Only display minimal output. No protocol decoding.
If this option is specified, then only the IP address
and MAC address are displayed for each responding host.
No protocol decoding is performed and the OUI mapping
files are not used.
--plain or -x Display plain output showing only responding hosts.
This option suppresses the printing of the header and
footer text, and only displays one line for each
responding host. Useful if the output will be
parsed by a script.