Язык программирования системных администраторов

Использование PHP для системного администрирования

Практическая значимость PHP для веб-разработки, впечатляет с точки зрения эффективности и универсальности. Большинство системных администраторов этим ограничиваются. Как и язык С#, PHP может быть мощным инструментом для системного администратора, несмотря на то, что PHP является по своей природе языком для веб-разработки.

Самым главным преимуществом PHP для системного администрирования является его кроссплатформенность. В отличие от таких традиционных инстументов, как bash для Linux или bat-файлы и скрипты Visual Basic для Windows, PHP скрипты легко переносятся из одной операционной системы в другую. Все, что необходимо это совместимость с интерпретатором PHP и установка необходимых модулей.

Как установить PHP на Linux и Windows

Если на веб сервере присутствует PHP как язык веб-сценариев, значит возможности командной строки также присутствует. И этого достаточно, чтобы использовать PHP, как инструмент системного администрирования.

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

Установка PHP на Linux

Не вдаваясь в специфические для дистрибутива особенности управления пакетами, единственный модуль, который необходимо установить напрямую, — это php-cli. «Cli” означает “Command Line Interface” и переводится как «Интерфейс командной строки».

Читайте также:  Теория языков программирования лабораторные

Установка php-cli настроит все необходимые зависимости для PHP, включая сам движок PHP.

Установка PHP на Windows

Как правило, PHP не входит в стандартный набор Windows, даже если установлен IIS. Весь пакет PHP необходимо вручную загрузить и скопировать в отдельный каталог, например в корень системного диска c:\php.

После установки PHP в файле php.ini необходимо включить различные модули, которые будут использоваться.

Основы и примеры программирования на PHP

Обратите внимание, строки вывода заканчиваются специальной последовательностью /n, обеспечивающая перевод на новую строку. Данный код выполнят последовательный перебор всех параметров командной строки. Синтаксис запуска скрипта выглядит следующим образом:

$ php test.php param1 param2 There are [0] parameters in _GET. There are [0] parameters in _POST. Parameter [0] is [test.php] Parameter [1] is [param1] Parameter [2] is [param2]

В целом, выполнение скриптов PHP не отличаются от веб сценариев. И в том и другом случае имеются входные параметры. Для HTML это данные, получаемые с помощью методов GET и POST, а для командной строки это переменные $argc и $argv, суть которых это количество аргументов, включая имя самого скрипта, и их значения соответственно.

Следует отметить, что хорошим тоном считается проверять установлено ли значение для переменных $_GET, $_POST, $argc или $argv и определить перед чтением. В особенности, если один и тот же скрипт будет использоваться как в web среде, так и в командной строке.

Как создать резервную копию баз данных MySQL с помощью PHP

Преимущество от применения PHP в рамках системного администрирования заключается в том, что можно использовать все расширяемые функции, которые предлагает PHP и которые могут быть недоступны в других средах. Например, единственный способ взаимодействия с базой данной MySQL для оболочки bash или батника Windows является использование конвейерные и промежуточные файлы для передачи SQL запросов в командную строку MySQL. Затем результаты должны быть перенаправлены в промежуточный файл и проанализированы скриптом. Это примерно так же, как использовать гаечный ключ в качестве молотка. PHP представляет широкий выбор надежных инструментов для работы с различными базами данных и другими технологиями.

Рассматриваемый ниже сценарий включает резервное копирование всех несистемных баз данных MySQL в файлы дампа SQL, а затем их сжатие. Эти файлы хранятся только в течение 2 недель, и каждый файл удаляется по истечении срока. PHP предоставляет встроенную поддержку для всех этих вещей.

Рассмотрим приведенный ниже код, показывающий, как работать с базами данных MySQL на PHP:

query($sql0); while ($row0 = $rs0->fetch_array(MYSQLI_BOTH)) < $dbName = trim ($row0[0]); // Exclude system dbs. if ( ("mysql" != $dbName) && ("information_schema" != $dbName) && ("test" != $dbName ) && ("performance_schema" != $dbName)) < //print "Found [" . $dbName . "]\n"; $dateStr = date ("Y-m-d"); //print $dateStr . "\n"; $cmd = "/usr/bin/mysqldump --user=" . DB_USER. " --password=" . DB_PASS . " " . $dbName . " >/home/dba/database_backups/" . $dateStr . "_" . $dbName . ".sql"; //print $cmd . "\n"; $commands[$x] = $cmd; $x++; $commands[$x] = "/usr/bin/bzip2 --force /home/dba/database_backups/" . $dateStr . "_" . $dbName . ".sql"; $x++; > > $conn->close(); > for ($x = 0; $x < count($commands); $x++) < print $commands[$x] . "\n"; if (1 == $x % 2) print "\n"; //system ($item); >// DELETION CODE GOES HERE. ?>

Используя сравнительно простые команды PHP, можно генерировать имена файлов с временными метками и производить сжатие полученных файлов. Этот пример выполняется на Linux и предполагается, что домашним каталогом является /home/dba. Однако, данный код можно легко адаптировать к выполнению на Windows, поскольку синтаксис MySQL такой же, а bzip2 заменить на инструмент сжатия подходящий для Windows.

Данный пример кода на PHP генерирует вот такой вывод:

$ php backup_databases_native.php /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX wordpress_db1 > ↩︎ /home/dba/database_backups/2021-10-21_wordpress_db1.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_wordpress_db1.sql /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX wordpress_db2_blog > ↩︎ /home/dba/database_backups/2021-10-21_wordpress_db2.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_wordpress_db2.sql /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX app_db > ↩︎ /home/dba/database_backups/2021-10-21_app_db.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_app_db.sql /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX udc1_db > ↩︎ /home/dba/database_backups/2021-10-21_udc1_db.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_udc1_db.sql

Примечание: ↩︎ указывает, что команда продолжается в текущей строке, но перенесена удобства отображения.

В целом, рекомендуется использовать полный путь к каждой внешней команде, которая будет выполняться. Причина в том, что если этот код выполняется в crontab Linux или в качестве запланированной задачи Windows, то путь к системному файлу может быть не доступен. Использование полного пути гарантирует отсутствие ошибок “команда не найдена”. Аналогичным образом, использование полного пути к целевому каталогу в самих командах гарантирует, что созданные файлы будут сохранены в нужных каталогах.

В завершении добавляем функционал удаления старых файлов резервных копий, как показано ниже:

 $maxAge) < print "MUST DELETE [" . $fullPath . "]\n\n"; unlink ($fullPath); >else print "Keep it.\n\n"; > > closedir ($dh); > ?>

Представленный код не является чем то особенным с точки зрения возможностей PHP. Этот листинг является адаптацией давно существующей функциональности PHP.

Один из бонусов команды print в данном коде это то, что если код выполняется в crontab и установлен параметр MAILTO, выходные данные будут отображаться в электронных письмах, сгенерированных crontab.

Код на PHP, выполняющий резервное копирование базы данных, для системных администраторов

Этот простой пример существующего процесса резервного копирования базы данных и очистки от старых копий, который выполняется с помощью PHP, является верхушкой айсберга того, что PHP может сделать для системного администратора. Дополнительным преимуществом использования PHP является то, что администратору, свободно владеющим PHP, не нужно изучать разные скриптовые языки программирования для конкретных операционных систем. Использование скриптовых языков также осложняет перенос кода между командной строкой и web-среды.

Источник

Выбираем язык для системного администрирования

В новой серии выбора языков для различных IT-специальностей мы поговорим об обязанностях системного администратора. С одной стороны, это может быть достаточно неприхотливая работа, где от вас потребуются лишь базовые знания компьютерной грамотности: установка необходимого ПО, контроль за выполнением чужих рабочих обязанностей, организация нормальной работы небольшого числа офисных сотрудников. Но это не то, что представляет для нас существенный интерес.

Наша область интереса — программирование, упрощающее реализацию вышеперечисленных операций в масштабах крупных компаний, когда просто физически невозможно рассматривать каждую машину в отдельности. И вот языки, которые в этом помогут.

PowerShell

За последний месяц мы уже дважды рассмотрели, как скриптовые языки операционных систем могут стать добрым другом сисадминщика. PowerShell — продукт экосистемы Windows, он понятен, удобен и весьма функционален. Из минусов можно выделить сравнительно невысокое быстродействие, особенно по сравнению со следующим языком. Но так как Windows всё еще доминирующая ОС на стационарных компьютерах, то знание PowerShell — номер один в списке абстрактных must-have языков для системного администратора.

Bash

Линуксовый старший брат Powershell, обладающий куда большей производительностью и опытом, но чуть меньшим удобством, во всяком случае, для новичка. Потребуется тем, кто собирается идти работать в науку и в организации, которые умеют считать деньги. Собственно туда, где линуксовые системы всегд были в почёте.

Python

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

Perl

Perl — язык, разработанный специально для тесного взаимодействия с текстом, впитавший всё лучшее от Unix Shell, Awk и С. Это означает, что по определению он превосходит в своих возможностях и удобстве скриптовые языки, а функциональный перечень необычайно широк. При всём этом стоит сделать одну небольшую оговорку: большинство административных решений на Perl, описанных в соответствующей литературе, сегодня с куда большей эффективностью реализуется на других языках, в том числе Python или Ruby. Поэтому хоть Perl формально и популярен, но уже понемногу уходит в прошлое.

SQL

Трудно представить ситуацию, в которой системному администратору бы не потребовалось использовать базы данных. Это и управление сервером, и администрирование учётных записей, и формирование отчётов. А если так, то без знания SQL хотя бы на уровне запросов и элементарной работы с данными не обойтись.

Visual Basic

Несмотря на достаточно спорное наследие, VB сегодня является прекрасным инструментом в среде Windows. В частности, упрощённая реализация VBA позволит вам писать полезные скрипты для MS Office, AutoCAD, SolidWorks, а также компонентов ActiveX.

Языки веба

Вообще в IT трудно представить какую-то область, где бы знание HTML, CSS и JavaScript вам не пригодилось. В качестве вариантов интереса для системщиков — сетевые экраны, системы регистрации и учёта пользователей, управление сетями предприятия и многое другое.

Источник

Какой язык программирования учить системному администратору?

какой язык более универсальный для системного/сетевого администратора? К примеру написать бота в телеграмм, организовать вывод показателей с серверов на сайт, и запилить минимальное приложение для мониторинга под windows/android, не заморачиваясь над фронт-ендом.

Простой 1 комментарий

delphinpro

Для линукса — shell
Для винды — powershell

также полезно немного python/js

и запилить минимальное приложение для мониторинга под windows/android, не заморачиваясь над фронт-ендом.

Sanes

Дополню.
Bash обязательно. Этим вы научитесь автомитизировать и скриптовать отдельные сервера. Как штат серверов начнет увеличиваться — Ansible. Им можно будет управляться с сотней серверов, плюс даст задел в сторону девопс. Затем посмотрите в сторону инфраструктуры как код, инструмент Terraform. И если только станет нехватать этого — смотреть в торону Python, либо же есть время и желание. Большинство, 99% задач, можно реализовать на Bash.

Shell scripting — обязательно.
А также любые другие языки, входящие в штатную поставку обслуживаемых ОС и ПО, включая встроенное ПО оборудования — по возможности и желанию. Но минимальное понимание — обязательно.

К примеру написать бота в телеграмм, организовать вывод показателей с серверов на сайт, и запилить минимальное приложение для мониторинга под windows/android, не заморачиваясь над фронт-ендом.

Учите использование консоли linux/windows и все, что может автоматизировать выполнение сценария консольных команд по расписанию или в виде пакета.

CityCat4

bash — для линуха
powershell/vbs — для винды
python — годится везде, идет больше в линухе, в винде лучше обходиться нативными средствами

Источник

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