Использование сценариев оболочки для автоматизации задач обслуживания системы Linux
Некоторое время назад я прочитал, что одна из отличительных черт эффективного системного администратора / инженера - это лень. Сначала это показалось немного противоречивым, но затем автор объяснил, почему:
Серия RHCE: Автоматизация задач обслуживания системы Linux - Часть 4
Если системный администратор тратит большую часть своего времени на решение проблем и выполнение повторяющихся задач, вы можете подозревать, что он или она делает что-то не совсем правильно. Другими словами, эффективный системный администратор / инженер должен разработать план выполнения повторяющихся задач с как можно меньшим количеством действий с его / ее стороны и должен предвидеть проблемы, используя:
например, инструменты, рассмотренные в Части 3 - Мониторинг отчетов о деятельности системы с помощью наборов инструментов Linux из этой серии. Таким образом, хотя может показаться, что он или она мало что делает, это потому, что большая часть его / ее обязанностей связана с позаботились с помощью сценариев оболочки, о которых мы и поговорим в этой руководство.
Что такое сценарий оболочки?
В двух словах, сценарий оболочки - это не что иное, как программа, которая выполняется шаг за шагом. оболочкой, которая представляет собой другую программу, которая обеспечивает уровень интерфейса между ядром Linux и концом Пользователь.
По умолчанию оболочка, используемая для учетных записей пользователей в RHEL 7 это bash (/bin/bash). Если вам нужно подробное описание и некоторая историческая справка, вы можете обратиться к эта статья в Википедии.
Чтобы узнать больше об огромном наборе функций, предоставляемых этой оболочкой, вы можете проверить ее страница руководства, который загружен в формате PDF по адресу (Команды Bash). Помимо этого, предполагается, что вы знакомы с командами Linux (если нет, я настоятельно рекомендую вам пройти Путеводитель по системному администратору от новичков статья в Tecmint.com перед продолжением). А теперь приступим.
Написание скрипта для отображения системной информации
Для удобства создадим каталог для хранения сценариев оболочки:
# скрипты mkdir. # cd скрипты.
И откройте новый текстовый файл с именем system_info.sh с вашим предпочтительным текстовым редактором. Мы начнем с вставки нескольких комментариев вверху, а затем некоторых команд:
#! / bin / bash # Пример сценария, написанного для части 4 серии RHCE. # Этот сценарий вернет следующий набор системной информации: # -Информация об имени хоста: echo -e "\ e [31; 43m ***** ИНФОРМАЦИЯ О HOSTNAME***** \ e [0m " hostnamectl. эхо "" # -Использование дискового пространства файловой системы: echo -e "\ e [31; 43m *****ИСПОЛЬЗОВАНИЕ МЕСТА НА ДИСКЕ ФАЙЛОВОЙ СИСТЕМЫ***** \ e [0m " df -h. эхо "" # -Свободная и используемая память в системе: echo -e "\ e [31; 43m *****БЕСПЛАТНАЯ И ИСПОЛЬЗОВАННАЯ ПАМЯТЬ***** \ e [0m " бесплатно. эхо "" # -Время безотказной работы системы и загрузка: echo -e "\ e [31; 43m *****ВРЕМЯ И НАГРУЗКА СИСТЕМЫ***** \ e [0m " время безотказной работы. эхо "" # -Вошедшие пользователи: echo -e "\ e [31; 43m *****ТЕКУЩИЕ ПОЛЬЗОВАТЕЛИ***** \ e [0m " ВОЗ. эхо "" # -Топ 5 процессов по использованию памяти. echo -e "\ e [31; 43m *****ТОП-5 ПРОЦЕССОВ ПОТРЕБЛЕНИЯ ПАМЯТИ***** \ e [0m " ps -eo% mem,% cpu, comm --sort = -% mem | голова -n 6. эхо "" echo -e "\ e [1; 32mDone. \ e [0m"
Затем дайте скрипту права на выполнение:
# chmod + x system_info.sh.
и запустите его:
./system_info.sh.
Обратите внимание, что заголовки каждого раздела показаны цветом для лучшей визуализации:
Сценарий оболочки мониторинга сервера
Эта функция предоставляется этой командой:
echo -e "\ e [ЦВЕТ1; ЦВЕТ2м\ e [0 м "
Где ЦВЕТ1 и ЦВЕТ2 - цвета переднего плана и фона, соответственно (более подробная информация и параметры описаны в этой записи из Arch Linux вики) и - строка, которую вы хотите отобразить в цвете.
Автоматизация задач
Задачи, которые вам может потребоваться автоматизировать, могут варьироваться от случая к случаю. Таким образом, мы не можем охватить все возможные сценарии в одной статье, но мы представим три классические задачи, которые можно автоматизировать с помощью сценариев оболочки:
1) обновить локальную базу данных файлов, 2) найти (или удалить) файлы с помощью 777 разрешения и 3) предупреждение, когда использование файловой системы превышает установленный предел.
Давайте создадим файл с именем auto_tasks.sh в нашем каталоге скриптов со следующим содержанием:
#! / bin / bash # Пример сценария для автоматизации задач: # -Обновление локальной файловой базы данных: echo -e "\ e [4; 32mОБНОВЛЕНИЕ БАЗЫ ДАННЫХ ЛОКАЛЬНЫХ ФАЙЛОВ\ e [0 м " обновленоb. если [$? == 0 ]; затем эхо «Локальная база данных файлов была обновлена правильно». else echo "Локальная база данных файлов не обновлялась правильно." fi. echo "" # -Найдите и / или удалите файлы с правами доступа 777. echo -e "\ e [4; 32mПОИСК ФАЙЛОВ С 777 РАЗРЕШЕНИЯМИ\ e [0 м " # Включите любой вариант (закомментируйте другую строку), но не оба. # Вариант 1. Удалить файлы без запроса подтверждения. Предполагает версию find. #find -type f -perm 0777 -delete. # Вариант 2: запросить подтверждение перед удалением файлов. Более переносимость между системами. найти -type f -perm 0777 -exec rm -i {} +; эхо "" # -Предупреждение, когда использование файловой системы превышает установленный предел echo -e "\ e [4; 32mПРОВЕРКА ИСПОЛЬЗОВАНИЯ ФАЙЛОВОЙ СИСТЕМЫ\ e [0 м " ПОРОГ = 30. при чтении строки; do # Эта переменная хранит путь к файловой системе в виде строки FILESYSTEM = $ (echo $ line | awk '{print $ 1}') # Это переменная хранит процент использования (XX%) PERCENTAGE = $ (echo $ line | awk '{print $ 5}') # Использовать процент без% знак. ИСПОЛЬЗОВАНИЕ = $ {PERCENTAGE%?}, Если [$ USAGE -gt $ THRESHOLD]; then echo "Оставшееся доступное пространство в $ FILESYSTEM критически мало. Используется: $ PERCENTAGE "fi. сделано <
Обратите внимание, что между двумя < подписывается в последней строке скрипта.
Сценарий оболочки для поиска разрешений 777
Использование Cron
Чтобы повысить эффективность еще на один шаг, вам не захочется сидеть перед компьютером и запускать эти сценарии вручную. Скорее вы будете использовать cron чтобы запланировать выполнение этих задач на периодической основе и отправить результаты заранее определенному списку получателей по электронной почте или сохранить их в файл, который можно просмотреть с помощью веб-браузера.
Следующий скрипт (filesystem_usage.sh) запустит хорошо известный df -h команду, отформатируйте вывод в HTML-таблицу и сохраните ее в report.html файл:
#! / bin / bash. # Пример сценария для демонстрации создания отчета HTML с использованием сценариев оболочки. # Интернет-каталог. WEB_DIR = / var / www / html. # Небольшой CSS и макет таблицы, чтобы отчет выглядел немного лучше. эхо ""> $ WEB_DIR / report.html. # Просмотрите имя хоста и вставьте его вверху тела html. HOST = $ (имя хоста) echo "Использование файловой системы для хоста$ HOST
Последнее обновление: $ (дата)
В нашем RHEL 7 сервер (192.168.0.18), это выглядит следующим образом:
Отчет о мониторинге сервера
Вы можете добавить в этот отчет столько информации, сколько захотите. Запускать скрипт каждый день в 13:30добавьте следующую запись crontab:
30 13 * * * /root/scripts/filesystem_usage.sh.
Резюме
Скорее всего, вы подумаете о нескольких других задачах, которые вы хотите или должны автоматизировать; как видите, использование сценариев оболочки значительно упростит эти усилия. Не стесняйтесь сообщить нам, если вы найдете эту статью полезной, и не стесняйтесь добавлять свои собственные идеи или комментарии через форму ниже.