Вот как:
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)
Из ваших требований я думаю, что это именно то, что было определено многоадресная DNS (I.E. Bonjour)
. Если вы используете системы Ubuntu, шансы у вас уже есть avahi уже установлено как сервер Avahi-Daemon
, а клиент Avahi-Discover
в основном вы бы его установили В следующем виде:
Если вы хотите, чтобы ваше имя для вашего сервера (вместо его имени хоста, которое по умолчанию), вам просто нужно, чтобы его имя было правильно настроено на демон Avahi. Эта конфигурация может быть выполнена через рабочий стол или путем изменения файла конфигурации /etc/avahi/avahi-daemon.conf
и обеспечение следующего определенного:
[Сервер]
Имя хоста = База данных
доменное имя = локальный
База данных .Local
для получения IP-адреса. Например, работает Ping Patable.local
или использование инструментов Avahi: Avahi-Resolve -4 -N База данных .Local
Это работает, потому что локальный домен DNS определяется как многоадресная область. Клиент отправит многоадресный запрос к локальной сети, который достигнет всех подключенных систем. Демон Avahi на сервере ответит на этот запрос, обеспечивающий его IP-адрес.
Вы сможете узнать больше информации на Как настроить Zeroconf здесь .
Если вы хотите Tinker с MDNS
, вы также можете установить как MZClient , Avahi-utils и MDNS-Scan Отказ Первый может быть использован для рекламы сервиса и остальных, чтобы найти эту услугу в сети. Например:
$ mzclient -p "_sql._tcp 3306 database"
*** Registering name = 'database', type = '_sql._tcp', domain = 'local.'
*** Registered name = 'database'
(...)
$ avahi-browse -t _sql._tcp
+ eth0 IPv4 database _sql._tcp local
$ mdns-scan
+ server [xx:xx:xx:xx:xx:xx]._workstation._tcp.local
+ database._sql._tcp.local
Browsing ... \
[ interrupt with Ctrl+Z]
Обратите внимание, что в этой конфигурации вы не используете центральный DNS-сервер, он не требуется. Все запросы сделаны в локальной локальной сети, используя многоадресный трафик.
Сканирование сети с 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
к широковещательному адресу этих других сетей, а также дайте аналогичный список устройств от каждого.
Я думаю, что MAC сервера не собирается чеканить, по крайней мере, не часто, так что я бы использовал это для идентификации IP сервера. Я бы использовал что-то вроде arpwatch
для мониторинга сети до тех пор, пока пара IP/MAC серверов не будет идентифицирована, таким образом, имея IP-адрес сервера.
Редактирование 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>