Мне поручили создать таблицу Excel, которая включает все серверы Linux в одной из наших сред AWS EC2, потому что основная цель - вывести все серверы из AWS и перенести их в нашу виртуальную среду. Это названия интересующих строк: имя сервера, роль, ЦП, память, диски, компоненты приложений и их версии.
У меня нет проблем с извлечением имени сервера и спецификации сервера, но как лучше всего узнать, каковы роли сервера? У меня есть несколько идей, но я хотел бы услышать вашу ... вот мои:
rpm -qa --queryformat "%{NAME}\n"
чтобы извлечь все имена пакетов в список, который может помочь мне понять, что делает сервер.chkconfig --list |grep on
чтобы увидеть, какие демоны включены.top
чтобы увидеть, какие процессы запущены.Вам необходимо прояснить, что означает «роль».
Если вы видите, что база данных работает на сервере, вы можете просто указать «сервер БД», но какова его функция в вашей организации? Это действительно сервер базы данных, но «хранилище кошачьих изображений»? «База данных клиентов»? «Список основных целей»?
Если «роль» не означает просто основное приложение, работающее на сервере, вам необходимо понять его положение в вашей организации, чтобы дать разумный ответ.
Есть несколько вещей, которые вы можете сделать, чтобы попытаться выяснить, что работает в вашей системе. Хотя это не гарантируется, весьма вероятно, что любые работающие производственные службы будут доступны для сети либо только в локальной подсети, либо через NAT. Имея это в виду, вы можете проверить, какие порты слушает ваш сервер, чтобы понять, что там происходит. Хорошая команда для использования:
alex:~/ $ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 945/smbd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1746/nginx
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1437/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1310/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3746/cupsd
Как видно из приведенного выше примера вывода, он представляет вам версию протокола (tcp или udp), адрес, который прослушивается, открытый порт и программу, которая прослушивает.
В приведенном выше усеченном примере (настольный компьютер) вы можете видеть, что TCP-порты 139, 80, 53, 22 и 631 прослушиваются. Они разрешают samba, http, dns, ssh и ipp соответственно и подтверждаются, когда вы проверяете программу, которая прослушивает этот порт.
Кроме того, большинство дистрибутивов Linux на основе Debian и Red Hat используют систему V и имеют доступную команду services. Вы можете использовать это, чтобы предоставить список служб и их состояний:
alex:~/ $ sudo service --status-all
[ + ] acpid
[ - ] anacron
[ + ] apparmor
[ ? ] apport
[ ? ] atieventsd
[ + ] avahi-daemon
[ ? ] binfmt-support
[ + ] bluetooth
[ - ] brltty
[ ? ] console-setup
[ + ] cron
[ ? ] cryptdisks
[ ? ] cryptdisks-early
[ + ] cups
[ + ] cups-browsed
[ - ] dbus
[ ? ] dns-clean
[ + ] dnsmasq
[ + ] ebtables
[ + ] friendly-recovery
[ - ] grub-common
[ ? ] irqbalance
[ + ] kerneloops
[ ? ] killprocs
[ ? ] kmod
[ + ] libvirt-bin
[ ? ] lightdm
[ ? ] networking
[ + ] nginx
[ + ] nmbd
[ ? ] ondemand
[ + ] openvpn
[ ? ] pppd-dns
[ - ] procps
[ - ] pulseaudio
[ ? ] rc.local
[ + ] resolvconf
[ - ] rsync
[ + ] rsyslog
[ + ] samba
[ - ] samba-ad-dc
[ + ] saned
[ ? ] sendsigs
[ - ] smartmontools
[ + ] smbd
[ ? ] speech-dispatcher
[ - ] ssh
[ - ] sudo
[ + ] udev
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] unattended-upgrades
[ - ] urandom
[ ? ] vboxautostart-service
[ + ] vboxballoonctrl-service
[ + ] vboxdrv
[ + ] vboxweb-service
[ + ] winbind
[ - ] x11-common
Это дает вам обзор служб system v - если у вас есть пользовательские приложения, которые запускаются вручную или у вас есть пользовательские сценарии запуска, их может здесь не быть, но это все равно полезно. Знак + указывает на работающую службу, - указывает на остановленную службу, а? значит неизвестно. Обязательно выполняйте обе приведенные выше команды от имени пользователя с повышенными привилегиями, иначе ваши результаты будут неполными.
Вышеупомянутые команды дадут вам представление о том, что работает на вашем сервере, но не о том, как это настроено или его цель. Открытый порт 80 указывает на веб-сервер, но это может означать общедоступный, внутренне представленный API, случайно установленный httpd, любую такую конфигурацию. В идеале вам нужно обсудить с архитекторами, чтобы лучше понять назначение каждого сервера.