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

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

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

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

PowerShell

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

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

Python

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

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

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

Visual Basic

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

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

Языки веба

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

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

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

PowerShell

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

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

Python

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

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

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

Visual Basic

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

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

Языки веба

Источник

Python для системных администраторов

Автор перевода messerr, просто с кармой ему не повезло.

Введение

О модулях

Модуль – важное понятие в языке Python. По существу, модуль – это ресурс, который вы подключаете к программе, чтобы затем использовать его. Этот процесс можно сравнить с тем, что вы достанете из ящика лист бумаги и положите его на свой стол, подготовив тем самым к дальнейшему использованию. Модули подключаются при помощи команды import, которая присутствует в начале каждого примера. Модули доступны для связи с базами данных, сетевого программирования, сервисов операционных систем и сотен других полезных областей.

Заставим Python работать

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

Пример 1: Поиск файлов и отображение прав в дружественном формате

Листинг 1. Поиск файлов и отображение результатов с правами доступа.

$ python example1.py
Enter the file pattern to search for:
j*.py

Листинг 2. Вывод первого примера

$ python example1.py
Введите шаблон поиска:
j*.py
Файлы:
jim.py
jim2.py

================================
Permissions for file jim.py :
USR имеет R права доступа
USR имеет W права доступа
USR не имеет X прав доступа
GRP имеет R права доступа
GRP не имеет W прав доступа
GRP не имеет X прав доступа
OTH имеет R права доступа
OTH не имеет W прав доступа
OTH не имеет X прав доступа
Permissions for file jim2.py :
USR имеет R права доступа
USR имеет W права доступа
USR не имеет X прав доступа
GRP имеет R права доступа
GRP не имеет W прав доступа
GRP не имеет X прав доступа
OTH имеет R права доступа
OTH не имеет W прав доступа
OTH не имеет X прав доступа

Пример 2: Выполнение операций с архивом tar при помощи меню

Листинг 4. Меню пользователя для второго примера

$ python example2.py jimstar.tar
Введите
1 чтобы извлечь файл
2 чтобы вывести информацию о файле в архиве
3 чтобы показать все файлы в архиве

Пример 3. Проверка запущенного процесса и отображение информации в дружественном представлении.

Одной из важнейших обязанностей системного администратора является проверка запущенных процессов. Скрипт в Листинге 5 даст вам несколько идей. Программа использует преимущества возможностей Unix: команда grep использует вывод, генерированный другой командой. Это позволит вам уменьшить объем данных, которые в дальнейшем будет анализировать Python.
Программа так же использует модуль string. Изучите этот модуль — вы будете часто его использовать.

Листинг 5. Отображение информации о запущенном процессе в дружественном представлении

$ python example3.py
Введите имя программы для проверки: xterm
Путь: pts/0
Владелец: goga
ID процесса: 26509
ID родительского процесса: 26493
Время запуска: 17:28

Пример 4. Проверка имен пользователей и паролей на соблюдение политики безопасности. Управление безопасностью важная часть работы для каждого системного администратора. Python делает эту работу проще, как показывает последний пример. Программа в Листинге 7 использует модуль pwd для доступа к базе данных паролей. Она проверяет имена пользователей и пароли на соблюдение политики безопасности (в данном случае, имена должны быть как минимум 6 символов в длину, пароли — 8 символов). Есть два предостережения:
Эта программа работает только если у вас есть полные права для доступа к /etc/passwd.
Если вы используете теневые пароли, скрипт работать не будет (однако, в Питон 2.5 есть модуль spwd, который решит эту проблему).

Листинг 7. Проверка имен пользователей и паролей на соблюдение политики безопасности

Листинг 8. Вывод четвертого примера

$ python example4.py
Следующие пользователи имеют имена менее чем из 6 символов::
Guest
Следующие пользователи имеют пароли менее чем из 8 символов:
Guest
johnsmith
joewilson
suejones

Источник

Сервис для системного администратора. Часть 1

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

1. Предисловие

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

Системные администраторы имеют большое количество скриптов для автоматизации. Хранятся они, обычно, в их домашних папках (и хорошо если не только там, но и в CVS), периодически апдейтятся на новую функциональность. Как правило, использовать такие скрипты могут лишь те же люди которые их пишут (а, иначе, последствия могут быть самыми разрушительными).

Таким образом — задачи по автоматизации часто нуждаются в простом GUI для удобного управления, упрощения. Например — сбор трафика. Или возможность откатывать бекапы/релизы по кнопке (даже если кто-то катится пакетами через SCM систему). Или менять Mysql master без подглядывания консоль ( какое-то количество ошибок возникает из-за неверно забитой в команды, не на том сервере).

Современные технологии предлагают большое количество вариантов для быстрого написания своего сервиса с приличным GUI. Мы разберем пример клиент-серверного взаимодействия и напишем наш, собственный REST api сервис используя технологии Jquery, Bootstrap, язык программирования Python и библиотеку python-flask. Хранить данные мы будем в текстовом файле.

В качестве клиента к нашему REST api будет выступать обычная html страничка с некоторым javascript кодом.

Статья рассчитана на системных администраторов которым изредка приходится делать небольшие наколеночные решения. Работать будем в операционной системе Linux Ubuntu 12.04. Тот же набор технологий можно использовать в любой другой ОС (Windows, Mac, Freebsd ).

2. Про технологии

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

REST — набор общепринятых рекомендаций, следуя которым можно построить backend под который стороннему разработчику будет удобно писать клиентское приложение и/или frontend. Забегая вперед — мы немного отклонимся от этих рекомендаций, и будем использовать изначально идемпотентный метод GET для добавления новой информации на сервер.

Bootstrap — набор стилей и шаблонов html который позволит нам не думать над оформлением нашей страницы, использовать готовые элементы.

Jquery — javascript библиотека которая расширяет возможности языка и позволяет использовать готовые удобные функции для, например, формирования GET запросов.

Python-flask — библиотека для языка Python которая позволит в несколько строчек кода написать web-сервер.

3. Делаем backend

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

3.1 Создаем директории в которых будем работать и server.py

Server.py — это файл из которого будет запускаться наш мини-вебсервер.

Содержимое файла /var/www/server.py:

3.2 Запускаем

Для того чтобы запустить наш сервер нам нужно всего лишь вызвать его в консоли.
Если хотим запустить процесс в бекграунд, то так же можно воспользоваться знаком лягушка — &. Еще его можно запустить с nohup — тогда процесс не умрёт по выходу из консоли.

Меняем права на запуск файла и запускаем:

3.3 Проверяем

Видим что наш вебсервер запустился на порту 5000. Теперь мы можем зайти на него в браузере:

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

Мы немного упрощаем себе задачу и запускаем наш сервер прямо из командной строки.
Кроме всего прочего — это позволяет нам видеть debug вывод, и понимать, кто постучался на наш сервис — самое то для тестирования.
Если мы захотим распараллелить его запуск — то можем воспользоваться чем-нибудь вроде uwsgi. Кроме этого, upstart в ubuntu может запускать процесс форкая его от самого себя.

3.4 Учим server.py backend выполнять предварительно написанный bash скрипт

Пусть у нас будет три ручки /install_mc, /uninstall_mc и /
Первые две — выполняют Bash — скрипты которые, соответственно, ставят и удаляют Midnight Commander. Последняя — полноценный бекдор на сервер, позволяет выполнить любую команду отправленную в параметр cmd get-запроса (в продакшене использовать не надо, приведено для примера).

Кажется, здесь все просто. Bash:

Запускаем server.py и стучимся по ручкам. Наш backdoor:

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

Удалим Midnight Commander:

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

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

В этом примере я перевесил сервис на 80 ый порт, дописав port=80 параметром для app.test. Этот порт используется по умолчанию браузером, поэтому нет необходимости дописывать :80 к урлу.

3.5 Выводим полученные аргументы в ответе

Вернемся к нашей первой заготовке.
В backdoor — ручке мы передаем серверу определенные аргументы — cmd, которые должны выполниться на сервере.

Давайте выведем аргументы которые мы посылаем серверу — в ответе (кстати, с помощью функции print удобно выводить их прямо в консоль) этого самого сервера. Приведем server.py к следующему виду (не забываем его перезапустить после изменения кода):

Постучимся теперь с любыми аргументами и return в функции add вернет нам то, что мы послали:

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

3.6 Учим server.py backend сохранять данные в текстовый файл

Теперь у нас есть некоторый каркас сервиса на базе python flask который умеет отсылать нам обратно то, что ему было отправлено. Но мы хотим красивые кнопочки работать с ручками из frontend’а. И данные нам нужно не только возвращать, но и где-то сохранять.

Сделаем небольшой аналог базы данных через текстовый файл, доступ в которую обеспечивается некоторым количеством http — ручек.

И давайте же запишем в него что-нибудь!

Немного улучшаем наш код.

Здесь мы добавили метод /get и дописали код в методы /remove и /add.

Для того чтобы мы могли отдавать данные — нам нужно где-то их хранить. В данном случае я выбрал местом хранения обычный txt файл — data.txt (это чревато, позже расскажу — почему).

Кроме того, мы теперь запускаем app_test объект с дополнительным параметром:
debug=True. И теперь, если мы изменяем код в текстовом редакторе, наш сервер будет автоматически перезапускаться, а в случае возникновения каких либо ошибок — он напечатает в каком именно месте они возникли.

Когда к нам в строке запроса поступает информация в аргументах — мы делаем на нее json.dumps (сделать json из строки) и записываем её в файл в этом формате.

Давайте дернем ручку /add так же как раньше:

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

Что мы получаем в консоли ( обратите внимание на доп. информацию которую мы выводим с помощью функции print):

Что записывается в файл data.txt:

Дернем ручку еще раз, уже с другими данными, смотрим в файл:

Дернем ручку /get, увидим что она вернет нам информацию по user_id:

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

Есть так же ручка /list которая отдаст нам все что есть в файле data.txt:

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

А теперь дернем ручку /remove и увидим что в data.txt у нас эта строчка пропадет:

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

И действительно, попросив информацию по пользователю с user_id = 1 мы получим false:

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

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

Поэтому, в production среде лучше использовать полноценную базу данных в которой решены подобные вопросы. Если говорить про простые, файловые базы то можно, например, взять sqlite (модуль sqlite3 в python). Её можно использовать если нагрузка на сервис будет относительно невысока.

Для более серьезных проектов можно использовать mysql или, что мне нравится больше — mongodb (как и когда какую базу лучше использовать — возможно, поговорим в следующих частях статьи).

4. Делаем frontend

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

Итак, мы сделали backend который пишет в файл то, что мы ему послали. И умеет отдавать то, что мы записали и может удалять элементы по user_id.

Теперь хочется красиво отобразить это на страничке таким образом, чтобы добавлять и удалять записи можно было без обновления этой самой странички. Будем использовать ajax.

4.1 Настраиваем отдачу html и статики

И посмотрим как она отображается в браузере:

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

А в консоли видим что кто-то действительно пришел и попросил нашу страничку:

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

Но настройка вебсервера выходит за рамки данной статьи :).

4.2. Подключение bootstrap и jquery
4.3 Нарисуем простую таблицу с применением стилей из bootstrap.

Обратите внимание — строка про подключение jquery должна идти строго до строки про bootstrap. И до всего кода который мы потом будем писать на js — если мы в нем планируем использовать jquery.
Так же обратите внимание на стили CSS, подключенные к таблице ( table-hover» ), их мы взяли из bootstrap.css, конкретно таблицу взяли вот отсюда: getbootstrap.com/css/#tables-hover-rows.

Итого, получаем в браузере вот такую таблицу:

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

4.4. Загрузим информацию с api и отобразим её в консоли

Для начала – выведем в консоль информацию полученную по api. Здесь мы впервые поговорим про firebug.

Чтобы было удобнее — я переместил ручки которые работают с данными на url /server/. И теперь к ручке list мы будем получать доступ по url 192.168.1.1/server/list.

Соответственно, мы должны поменять параметр для декоратора @app_test.route – добавив к нему слово /server. Для метода /list, например, код будет выглядеть так:

А теперь напишем Js который выгрузит данные с ручки /list и выведет их в консоль firebug.

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

С помощью расширения firebug (его можно поставить как дополнение в Firefox) мы можем посмотреть информацию в консоли js (можно так же воспользоваться стандартными средствами браузера).

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

В данном случае – мы удаляем “1” под полем UserId:

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

4.5 Отобразим загруженную информацию в таблице

Мы взяли данные из ручки /list и кроме того что вывели их на консоль – вызвали функцию handle_answer которой передали эти данные. Данная функция приняла данные, сделала из них список в каждом элементе которого находится одна строчка из файла – а разделителем для нас стал символ переноса строки \n.

Далее мы сделали перебор всех строк из списка. Каждую из которых мы превратили в Json – объект с помощью JSON.parse (мы можем это сделать, так как, технически, строка которую мы получили написана именно в Json формате ). Далее мы из этого json объекта, по методу который совпадает с именем поля, достали данные которые хранятся в этом поле (например – entry_jsoned.user_id – для первой строки в нашем файле будет равно “2” ) и сгенерировали на их основе html в конструкции вида:

В данном случае – это просто строка в которую мы проинжектировали в нужные места переменные полученные из Json объекта.

Что же получилось у нас в браузере:

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

Мы видим, что с помощью javascript мы “дорисовали” таблицу вставив в нее еще два tr-элемента с информацией которую мы получили из ручки /server/list. Отлично.

4.6 Отправим данные на сервер не перегружая страницу

Теперь, давайте добавим кнопку которая будет, например, добавлять, пользователей в нашу мини-базу данных. Для этого воспользуемся элементом horizontal form все того же bootsrap’a ( getbootstrap.com/css/#forms-horizontal ) только немного его поправим (например, возьмем другую кнопку и сделаем отступ между элементами).
А для добавления пользователей мы будем использовать ручку /add.

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

Теперь мы можем добавлять пользователей и данные по ним просто нажимая кнопку.

5. Заключение

Мы написали frontend + backend. Поговорили об общих принципах работы схемы, научились отлаживать js код и коснулись вопросов использования современных инструментов (flask, bootstrap и jquery) в нашей реализации сервиса. Backend помогает нам получить данные из любого источника, отдать их frontend’у в виде ручек, а стили мы подгружаем из bootstrap на сайте которого есть масса примеров.

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

Попробуем настроить Nginx и обоснуем, зачем нужно это делать. Также поговорим про модальные окна и попробуем кастомизировать css bootstrap и используем шаблонизаторы.

Источник

Видео

Bash vs Python для DevOps инженеров и системных администраторов

Bash vs Python для DevOps инженеров и системных администраторов

Почему НЕ СТОИТ работать СИСАДМИНОМ!

Почему НЕ СТОИТ работать СИСАДМИНОМ!

018. Python для системного администратора - Андрей Григорьев

018. Python для системного администратора - Андрей Григорьев

1.5 Года работы Системным Администратором | Что это такое, и как им стать?

1.5 Года работы Системным Администратором | Что это такое, и как им стать?

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

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

Что Такое DevOps | Python Для DevOps

Что Такое DevOps | Python Для DevOps

Системный администратор на собеседовании

Системный администратор на собеседовании

Что должен уметь системный администратор? Анализ вакансий

Что должен уметь системный администратор? Анализ вакансий

ДЕНЬ СИСАДМИНА / Чем занимается системный администратор / Интервью с Романом Гировкой

ДЕНЬ СИСАДМИНА / Чем занимается системный администратор / Интервью с Романом Гировкой

День системного администратора 2021

День системного администратора 2021
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.