Скрипт ip по домену linux

Скрипт BASH проверяющий доступность сайта/ip-адреса.

Сегодня в статье разберем пример написания скрипта для проверки доступности ресурса при помощи BASH в Linux. Может кому то будет полезен :).

Скрипт доступности ресурса

  1. Создадим текстовый файл ping_test.sh со следующим содержанием:

Скрипт будет проверять доступность ресурса при помощи команды ping до тех пор пока данный ресурс не выйдет на связь. Для автоматизации давайте запишем задание в crontab. Задание будет срабатывать при перезагрузке системы.

Также если вам необходимо чтобы еще отправлялось уведомление на почту, то скрипт примет такой вид:

  • IP=»10.5.5.1″ — IP-адрес для мониторинга. Через пробел можно указать несколько адресов.
  • ping -c 2 -W 1 — количество пакетов посылаемых на сервер
  • -f «кому@yandex.ru» — указываю свою почту
  • -t «от_кого@yandex.ru» — указываем почту от которой будем отправлять.
  • -u «Проблема с доступностью сервера» — тема сообщения
  • -m «Сообщение от $(hostname) . $ADDR недоступен с $(date)» — Содержание сообщения
  • -xu «логин» — Логин от вашей почты
  • -xp «пароль» — Пароль от вашей почты
  • -s «smtp.yandex.ru» — Адрес smtp сервера отправки почты, в моем случае это yandex
  • -o «message-charset=utf-8» — Кодировка сообщения, без нее будет крякозябры.
  1. Даем права на исполнение

Для того чтобы сработала отправка почты нужно установить пакет sendemail

  1. Радуемся, через заданный промежуток времени в событии будет высвечено сообщение о статусе.

Скрипт доступности ресурса каждые 10 секунд

Запускать задание через каждых 10 секунд:

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Источник

Скрипт ip по домену linux

«этхтоваще» — скрипт, собирающий разную информацию о домене/ip, как то: обратный резолв IP домена и его NS; домены на одном IP (о да :cool:); открытые популярные порты; заголовки веб-серверов и другое. Подробнее смотрите в исходном коде файла hto.sh

таким образом, с его помощью можно почти стопроцентно определить, какой хостинг у определенного сайта, какие у него соседи, не является ли хостинг реселлингом, и разные другие штуки (например, не заражён ли вендосервер sasser`ом)

Скрипт имеет воз зависимостей, если не хотите всё устанавливать, то удалите в hto.sh код от

#—> проверка введенных данных

, но тогда скрипт может (и будет) работать некорректно.

точно работает на centos, debian и opensuse, еще говорят, что работает в убунте, но я не проверял. на windows может будет работать, если установите cygwin и весь воз зависимостей (говорят, работает). на *BSD теоретически должен работать, не проверял.

скрипт постоянно правлю, так что иногда выполняйте -u для обновления.

автор — я, лицензия — CC BY-NC-SA, засим прошу распространять бесплатно.

(где hto.sh — главный скрипт, hto_func — функции, hto_ports — список портов для проверки)

Читайте также:  Постоянно выскакивает меню пуск windows 10

просьба воздержаться от комментариев типа «ололо говнокод» (знаю), также буду очень благодарен за примеры исправления кода (надо же учиться кодить), и прислушаюсь к пожеланиям 🙂

скрытого патча Бармина в скрипте нет. честно :smoke:

//прошу не переносить тему в другой раздел — тут, имхо, самое место.

Изучайте функцию getopts. Комментарии в коде не для пользователя существуют, а для программиста, который правит. Остальное через флаги выводится (или отсутствие флагов). Пользователю тяжело читать что-то в консоли. Как правило он не умеет.

Все тот же getopts. Вообще половину скрипта можно выкинуть и заменить на десяток строчек getopts. При этом скрипт будет более читабельным и очевидным. Потому что я с трудом смог понять, что в нем делается.

К тому же очень много копипаст по коду. Чтобы не было копипаст,нужно один раз написать функцию, а потом ее дергать.

Изучайте массивы. Не хранят такое в файлах.

Хардкод. Такие вещи выносятся в начало скрипта в отдельную переменную.

Вот такое неуважение к собственному коду (псевдокураж над собственным кодом) бывает исключительно в мире похапэшников. Вы не на PHP пишете, потому нет смысла выключать официоз.

P.S.: пример как использовать функции и массивы. Примеры. что были под рукой, не адаптированные под Вашу задачу. но показательные.

Кусочек apache2ctl, который проверяет ИСП на предмет уродования конфига, прежде чем рестартануть его). Весь код пишется один раз:

Пример как использовать массивы:

Пример использования getopts:

> Изучайте функцию getopts

> нужно один раз написать функцию, а потом ее дергать.

старался по-максимуму, см hto_func

> Изучайте массивы. Не хранят такое в файлах.

чем плохо использование файла?

> Такие вещи выносятся в начало скрипта в отдельную переменную.

спасибо за примеры, перепишу скрипт 🙂

jahost добавил 05.10.2010 в 04:55

bugsmoran, как в целом впечатление — хорошее дело делаю, или глупость затеял?

jahost:

> Изучайте массивы. Не хранят такое в файлах.

чем плохо использование файла?

Просто это другой культурный уровень. В данном случае малозначительно. Сейчас это по сути ничем не вредит. Но завтра напишите чуть более крупный скрипт по привычке через файл и сделаете нагрузку на диск и к тому же понизите надежность работы скрипта, потому что диск отваливается чаще памяти, да и очереди к нему выше, что задержит выполнение работы скрипта (а если там будет по крону, то еще и наложит друг на друга).

Короче привыкайте делать изначально качественно, даже если качество не требуется. Привычка — самое главное.

jahost:

спасибо за примеры, перепишу скрипт 🙂

Незачто. Я там дополнил немного.

Не знаю 🙂 Данные полчаете сомнительной ценности. Но может кому и пригодится. Вообще я бы быстрее руками посмотрел, что мне надо. На вкус и цвет.

наверное, стоит каждую функцию вынести как опцию.

> Вообще я бы быстрее руками посмотрел, что мне надо.

грабить sitedossier и bing руками неудобно 🙂

> Данные полчаете сомнительной ценности.

зато повышение навыка написания скриптов

jahost:
наверное, стоит каждую функцию вынести как опцию.

> Вообще я бы быстрее руками посмотрел, что мне надо.

грабить sitedossier и bing руками неудобно 🙂

А их и не надо грабить. Утилиты whois, telnet и dig способны вытащить помоему всю возможную информацию. И вообще одного telnet на все достаточно.

Читайте также:  Smart thru 4 samsung scx 4300 windows 10

Много лишней информации от скрипта, должен выдавать только при наличии информации и в конце список того, что не обнаружено, юзабилити нулевой конечно.

bugsmoran, приведите, пожалуйста, пример, как телнетом узнать список (почти)всех доменов на одном IP-адресе

ENELIS, в планах убрать вопросы и сразу выводить всю найденную информацию

А, это да, это не узнать телнетом. Но это совершенно ненужное знание ведь. А то что нужно можно узнать телнетом.

но это довольно муторно, проще какой-нибудь host -t ANY $domain_name $ns_name 🙂

цикл с вопросом вынес в функции, основной скрипт стал намного короче. докурю getopts и сделаю «нормальное» меню, и выложу обновление.

Если вас интересует процесс, то я легко вам его изложу, берете, генерируете все возможное кол-во доменов в одну базу, а следом начинаете в цикле подключаться на 80й порт сервера телнетом и путем GET пробуете получить правильный ответ. В принципе не сложно, но надо будет очень долго ждать, такой информации нельзя получить в принципе с точки зрения внешних соединений, я не говорю о моменте когда сломали сервер и получили вообще везде доступ.

Так или иначе любая информация которую вы видите в виде «сколько сайтов на IP» складывается на уровне анализа появления доменов в тех или иных базах (при регистрации, при всевозможном SEO, поисковые боты..), и в процессе штатных запросов тех же поисковых ботов, они просто запоминают на ком IP был сайт. а дальше это спокойно можно анализировать. и показывать в виде «сколько на конкретном IP сайтов есть в системе».

Но получить «достоверную информацию на сейчас» не выйдет без взлома системы.

Источник

Как найти IP-адрес сайта в Linux

Недавно мы показали вам, как найти IP-адрес в Linux. В этой статье мы покажем вам некоторые из этих команд.

Команды для поиска IP-адреса сайта в Linux

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

Способ 1: получить IP-адрес веб-сайта с помощью команды dig

Dig – это утилита поиска DNS. Единственная цель этой команды – выполнить поиск DNS и отобразить ответы, возвращаемые сервером имен запрашиваемого веб-сайта.

Пример вывода для команды dig выглядит следующим образом:

Вы можете увидеть IP-адрес веб-сайта в разделе «ANSWER SECTION».

Yandex имеет множество серверов, и вы можете увидеть другой IP-адрес в зависимости от вашего географического положения и времени. Вы не должны находить это необычным.

Способ 2: используйте команду nslookup, чтобы найти IP-адрес сайта в Linux

Как и dig, nslookup также используется для запроса записей DNS. nslookup означает «поиск сервера имен».

Вам может понадобиться установить nslookup. Если у вас есть доступ sudo, вы можете использовать команду установки вашего дистрибутива Linux для установки этого инструмента. В Debian и Ubuntu команда ниже установит nslookup:

Если у вас есть инструмент, просто используйте его следующим образом:

Например, если мы пытаемся получить IP-адрес yandex.ru, то получаем следующий вывод:

Способ 3: получить IP-адрес веб-сайта с помощью команды host

Как и вышеупомянутые два, host также является утилитой поиска DNS. Но в отличие от двух вышеупомянутых команд, вывод команды host аккуратен и точен. Он просто отображает IPv4 и IPv6 адреса веб-сайта.

Читайте также:  Usb windows не удалось запустить это устройство поскольку информация

Вы можете использовать это так:

Пример вывода будет выглядеть так:

Способ 4: получить IP-адрес веб-сайта с помощью команды ping в Linux

Давайте посмотрим, как получить IP-адрес веб-сайта с помощью команды ping в Linux.

Команда Ping используется для проверки работоспособности удаленного хоста. Вы можете использовать либо IP-адрес сервера, либо URL-адрес. Синтаксис почти такой же.

Пример вывода для facebook.com выглядит следующим образом:

Вам придется использовать Ctrl + C, чтобы остановить команду ping.

Заключение

Итак, вы только что увидели три сетевых инструмента, которые дали бы вам одинаковый результат. Мы надеемся, что этот быстрый совет по Linux помог вам найти IP-адрес веб-сайта в терминале Linux.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

[bash]получить ip по доменному имени

надо получить ip адреса по доменному имени. единственное что приходит в голову это

Как получить пустую строку в случае недоступности dns?

раз тема в development, то вот вам решение на C

h_errno не используется, memcpy не нужен.

ещё и gethostbyname устарела и не рекомендуется к использованию. IPv6, однако.

Думаю она будет сегфолтиться 🙂
З.Ы.Вечером проверю.

> вот вам решение на C

а вот вам решение на … кхм 😉

Ради Вас пришлось грузить убунту 🙂 cat 2.c

/Documents$ cat resol.c
#include
#include
#include
#include
#include
#include
#include
extern int h_errno;
struct hostent * he;
struct in_addr addr;

/Documents$ cc -O2 -o resol resol.c
sylvia@allure:

/Documents$ ./resol linux.org.ry
sylvia@allure:

/Documents$ ./resol linux.org.ru
217.76.32.61
sylvia@allure:

в любом случае это концепция кода, дальше уже пусть автор темы , если ему это надо , допиливает под свои надобности

Какой у вас дистр?!

zsh: segmentation fault ./a.out linux.org.ru

причем тут дистр? ) для кода в несколько строчек уже становится важно какой дистрибутив?)

Я просто уже наступал на такие грабли, при чём они наблюдались только в убунту, точнее в ядре, функция vsprintf

в 64 бит падает кстати, причем по backtrace
Program terminated with signal 11, Segmentation fault.
[New process 11107]
#0 0x00007fc20ae74ef0 in vfprintf () from /lib64/libc.so.6
(gdb) bt
#0 0x00007fc20ae74ef0 in vfprintf () from /lib64/libc.so.6
#1 0x00000000006025d8 in ?? ()
#2 0x00007fff049e9eb0 in ?? ()
#3 0x0000000000602bf0 in ?? ()
#4 0x000000000b3c25f8 in ?? ()
#5 0x0000000097037ef8 in ?? ()
#6 0x00007fc20aa1a807 in ?? () from /lib64/libnss_dns.so.2
#7 0x00007fff049ea3b0 in ?? ()
#8 0x00007fc20000000e in ?? ()
#9 0x00007fff049ea458 in ?? ()
#10 0x00007fff049ea438 in ?? ()
#11 0x000000000040074c in _IO_stdin_used ()
#12 0x00007fff049ea41c in ?? ()
#13 0x00007fc20ae43d2c in ?? () from /lib64/libc.so.6
#14 0x0000000000000000 in ?? ()

Я просто уже наступал на такие грабли, при чём они наблюдались только в убунту, точнее в ядре, функция vsprintf

Ядерная vsprintf к юзерспейсу никакого отношения не имеет.

В общем-то, Silvy и не виновата. inet_ntoa печатает в thread-local буфер и возвращает его адрес, но адрес возвращается кривой.

Ядерная vsprintf к юзерспейсу никакого отношения не имеет.

я за ядро и говорил, дело в том что видно в обновлениях ядра за 17.03 они это пофиксили. Смотри /linux-source-*/net/tipc/dbg.c

Виновата :), -Wall нужно указывать 🙂

Источник

Оцените статью