Перечислить все IP-адреса в файлах на моем компьютере?

После нескольких лет рассмотрения установки старого ноутбука как сервер в домашней сети и мир в целом, который я предполагаю, я хотел бы узнать больше о IP-адресах.

Как я могу найти, какие IP-адреса хранятся на моем компьютере теперь? Таким образом, я могу посмотреть на интересные файлы теперь. Я могу возможно использовать их позже для установки IP-адресов для конфигурирования программ.

Хотя и теги появляются под этим вопросом, решение GUI совершенно приветствуется вместо . grep не имеет к используемому для выполнения тега и если двоичные файлы могут быть интерпретированы, который все хорошо и хороший также.

1
задан 9 April 2018 в 05:22

1 ответ

Использовать grep

Можно использовать grep найти все файлы, содержащие что-то, что похоже на IP-адрес IPv4. Знайте, что будут ложные положительные стороны. Например, файл:

/usr/src/linux-headers-4.14.30-041430/include/linux/oid_registry.h

в строке 48 будет содержать:

OID_smimeAuthenticatedAttrs,    /* 1.2.840.113549.1.9.16.2.11 */

Это вид похож на IP-адрес в комментариях, но это не.

Первоначально запустите с количества всех строк, содержащих IP-адрес в Вашей системе:

$ sudo time grep -rnwI --exclude-dir={boot,dev,media,mnt,lib,proc,root,run,sys,/tmp,tmpfs,var} -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" / | wc
27.76user 13.17system 1:31.06elapsed 44%CPU (0avgtext+0avgdata 10416maxresident)k
12451744inputs+0outputs (2major+2098minor)pagefaults 0swaps
  17164  122083 3138285

Давайте сломаем команды

  • sudo предотвращает "Разрешение, отклоненное" ошибки
  • time говорит нам, сколько времени это берет для выполнения, т.е. 1 минута 31 секунда
  • grep команда, которая ищет строки в файлах
  • -rnwI аргументы (иначе, параметры) передал grep. r означает, что рекурсивные подкаталоги значения обрабатываются. n аргумент печатает номер строки, строка поиска происходит в файле. I аргумент говорит этому игнорировать двоичные файлы. Если бы двоичные файлы были, включают количество файлов, увеличился бы от 17 164 до 22 253 в моей системе. Вы не можете открыть двоичные файлы и иметь любой смысл их все же.
  • -exclude-dir= каталоги должны исключить из поиска. Без этого списка grep может занять 53 часа для завершения: 'grep'ing все файлы для строки занимает много времени
  • -E аргумент grep это говорит этому, что строка поиска собирается следовать.
  • "([0-9]{1,3}[\.]){3}[0-9]{1,3}" строка поиска должна ожидать. Объясненный более подробно ниже.
  • / говорит grep запускаться в корневом каталоге. Однако исключенные каталоги будут пропущены.
  • | команда канала, отправляющая весь вывод в wc команда вместо экрана.
  • wc команда "для подсчета количества слов". Это считает числовые оси, количество слов и количество символов передали ему. В нашем случае это 17164 строки, 122,083 слова и 3,138,285 персонажи. Запятые добавляются для ясности.

Разрушение "([0-9]{1,3}[\.]){3}[0-9]{1,3}"

Как показано ранее строка поиска передала grep "([0-9]{1,3}[\.]){3}[0-9]{1,3}". Вот то, как это работает:

"([0-9]{1,3}[\.]){3}[0-9]{1,3}"
    ^    ^   ^    ^   ^    ^
    |    |   |    |   |    +---- count of digits must be 1 to 3 
    |    |   |    |   +--------- look for digits 0 through 9
    |    |   |    +------------- patterns 1 to 3 digits of 0-9 followed by . occurs 3 times
    |    |   +------------------ count of 1 to 3 digits must be followed by .
    |    +---------------------- count of digits is 1 to 3
    +--------------------------- look for digits 0 to 9

Наблюдение вывода вместо подсчета слов

Видеть, что эффективная выходная мощность вместо просто подсчета слов удаляет | wc от конца командной строки:

$ sudo time grep -rnwI --exclude-dir={boot,dev,media,mnt,lib,proc,root,run,sys,/tmp,tmpfs,var} -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /

    (... SNIP ...)
/usr/bin/printer-profile:176:   OUT="nc 192.168.1.12 9100 < xxx.prn"
/opt/google/chrome/default_apps/external_extensions.json:23:    "external_version": "0.0.0.6"
/opt/google/chrome/product_logo_32.xpm:330:"    [.}.}.|.1.2.3.4.5.6.7.8.9.0.a.b.8.c.d.e.f.g.h.h.i.j.k.l.    ",
28.52user 12.54system 1:31.78elapsed 44%CPU (0avgtext+0avgdata 9516maxresident)k
12793352inputs+0outputs (3major+1884minor)pagefaults 0swaps

Список является слишком длинным для вписываний в этот ответ. Обратите внимание, что последний найденный файл является положительной ложью:

/opt/google/chrome/product_logo_32.xpm

потому что это не содержит реальный IP-адрес:

[.}.}.|.1.2.3.4.5.6.7.8.9.0.a.b.8.c.d.e.f.g.h.h.i.j.k.l.

Ограничьте свой поиск /etc каталог сначала

Сужать поиск к большему количеству значимого использования шорт-листа:

$ sudo time grep -rnI -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/etc/hosts:1:127.0.0.1 localhost
/etc/hosts:2:127.0.1.1  alien
/etc/cron.daily/google-earth:47:Version: GnuPG v1.4.2.2 (GNU/Linux)
    (... SNIP ...)
/etc/cups/cups-browsed.conf:77:# BrowseDeny 192.168.1.13
/etc/cups/cups-browsed.conf:78:# BrowseDeny 192.168.3.0/24
/etc/cups/cups-browsed.conf:79:# BrowseDeny 192.168.3.0/255.255.255.0
0.04user 0.03system 0:00.19elapsed 40%CPU (0avgtext+0avgdata 2800maxresident)k
22384inputs+0outputs (1major+181minor)pagefaults 0swaps
2
ответ дан 7 December 2019 в 13:25

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

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