Найдите IP сервера на LAN из сценария

Вот как:

switch online/offline - sudo /etc/init.d/httpd stop|start
stop all services     - sudo /etc/init.d/httpd stop
restart all services  - sudo /etc/init.d/httpd restart
start all services    - sudo /etc/init.d/httpd start

put all that script in a shell script and run it as 
 sudo sh ./start_services (args)
0
17.02.2015, 18:08
4 ответа

Из ваших требований я думаю, что это именно то, что было определено многоадресная DNS (I.E. Bonjour) . Если вы используете системы Ubuntu, шансы у вас уже есть avahi уже установлено как сервер Avahi-Daemon , а клиент Avahi-Discover

в основном вы бы его установили В следующем виде:

  • Если вы хотите, чтобы ваше имя для вашего сервера (вместо его имени хоста, которое по умолчанию), вам просто нужно, чтобы его имя было правильно настроено на демон Avahi. Эта конфигурация может быть выполнена через рабочий стол или путем изменения файла конфигурации /etc/avahi/avahi-daemon.conf и обеспечение следующего определенного:

      [Сервер]
    Имя хоста = База данных
    доменное имя = локальный
     


  • Клиенту просто нужно будет разрешить IP-адрес имени База данных .Local для получения IP-адреса. Например, работает Ping Patable.local или использование инструментов Avahi: Avahi-Resolve -4 -N База данных .Local

Это работает, потому что локальный домен DNS определяется как многоадресная область. Клиент отправит многоадресный запрос к локальной сети, который достигнет всех подключенных систем. Демон Avahi на сервере ответит на этот запрос, обеспечивающий его IP-адрес.

Вы сможете узнать больше информации на Как настроить Zeroconf здесь .

Если вы хотите Tinker с MDNS , вы также можете установить как MZClient , Avahi-utils и MDNS-Scan Отказ Первый может быть использован для рекламы сервиса и остальных, чтобы найти эту услугу в сети. Например:

Для запуска на сервере сервис, чтобы зарегистрировать новое имя, связанное с базой данных MySQL:

    $ mzclient -p "_sql._tcp 3306 database"
    *** Registering name = 'database', type = '_sql._tcp', domain = 'local.'
    *** Registered name = 'database'
    (...)

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

$ avahi-browse -t _sql._tcp 
+   eth0 IPv4 database    _sql._tcp            local

или непрерывно сканируя сеть Чтобы найти доступные услуги MDNS:

    $ mdns-scan 
    + server [xx:xx:xx:xx:xx:xx]._workstation._tcp.local
    + database._sql._tcp.local
    Browsing ... \           
[ interrupt with Ctrl+Z]


Обратите внимание, что в этой конфигурации вы не используете центральный DNS-сервер, он не требуется. Все запросы сделаны в локальной локальной сети, используя многоадресный трафик.

3
28.01.2020, 02:15

Сканирование сети с NMAP должна работать. Гораздо более легкий первый шаг - запускать команду ARP -A , который может дать вам все MAC и IP в вашей широковесной сети (если запросы ICMP не заблокированы).

Далее попробуйте Ping из широковещательного адреса, в котором вы находитесь (требуется запросы ICMP, не заблокированные). Например, если ваш сервер 192.168.1.10, а NetMask 255.255.255.0, то Ping-B 192.168.1.255 (в Windows, это будет PING -A 192.168.1.255 ) должен вызывать ответы всех других устройств (серверов, маршрутизаторов, тонких клиентов и т. Д.) В вашей сети.

Конечно, это только дает вам устройства в вашей подсети. Если ваша «Network» имеет больше подсетей, вы можете запустить Ping к широковещательному адресу этих других сетей, а также дайте аналогичный список устройств от каждого.

1
28.01.2020, 02:15

Я думаю, что MAC сервера не собирается чеканить, по крайней мере, не часто, так что я бы использовал это для идентификации IP сервера. Я бы использовал что-то вроде arpwatch для мониторинга сети до тех пор, пока пара IP/MAC серверов не будет идентифицирована, таким образом, имея IP-адрес сервера.

1
28.01.2020, 02:15

Редактирование 2 (в нашем разговоре):

Посмотрим, работает ли это лучше для вас (с более подробной информацией):

  nmap -p 22 --open -sV 192.168.1.0/24

Как и прежде, добавьте awk, если вам нужен только IP:

  nmap -p 22 --open -sV 192.168.1.0/24 | 
        awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'

где:

nmap : the executable name
-p 22 : specifies the port to test
--open : suppress output for clients that are not listening
-sV : display the version string reported by the scanned server

Edit:

Если вы пытаетесь получить весь ipaddress в сети, с которым потенциально может общаться локальная машина, попробуйте nmap:

nmap -sP -PA21,22,25,3389 192.168.1.1-254 | 
    awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'

Я пытаюсь попасть на пользовательский диапазон портов, чтобы проверить, работают ли серверы -PA21,22,25,3389 (в широковещательной сети 192. 168.1.1-254) вы можете изменить это, если у вас есть определенный порт, который вы, возможно, знаете, что пытаетесь ударить. Вы можете удалить awk, если вам нужно больше, чем просто ipaddresses, он также распечатает имя хоста и т.п.


Если вам нужны только IP-адреса сервера из ifconfig, вы можете просто запустить:

ifconfig | awk '/inet addr/{print substr($2,6)}'
[OR]
/sbin/ifconfig | awk '/inet addr/{print substr($2,6)}'

Это приведет к следующим результатам:

10.0.0.XX1
10.0.0.XX2
10.0.0.XX3
127.0.0.1

Чтобы удалить localhost - 127.0.0. 1 из результатов use:

ifconfig | awk '/inet addr/{print substr($2,6)}' | awk '!/127.0.0.1/'

Result:
192.168.1.XXX

Вы можете поместить эту строку в скрипт как есть и запустить её на локальных машинах для получения ip-адресов, или вы также можете поместить её в скрипт shell для получения удалённых адресов через ssh, например:

#!/bin/sh
#getremoteips.sh
#chmod 700 getremoteips.sh ##Root should only be running this

ssh $1 "/sbin/ifconfig |
awk '/inet addr/{print substr(\$2,6)}' |
awk '!/127.0.0.1/'"

И запустить скрипт: ./getremoteips.sh <введите имя хоста или ip>

1
28.01.2020, 02:15

Теги

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