====== Набор системных инструментов администратора Linux (Статья недописана) ======
**!!!!!Статья не завершена и не оформлена.!!!!!\\
!!!!!Коррекция будет произведена позже.!!!!!**\\
TODO: Закончить написание статьи\\
TODO: Добавить заметки по rsync и git\\
====== Используемые инструменты ======
Сразу оговорюсь, данная статья статья содержит немалое количество цитат из Википедии. В некоторых случаях такие цитаты и определения дополнены мной.
===== Windows-окружение =====
Так или иначе, в гетерогенных сетях нередко на ПК администратора в качестве основной системы используется Windows - поэтому для начала рассмотрим 2 windows-утилиты.
==== Haroopad (MarkDown) ====
{{ :haroopad.jpg?direct&300|}}
> Википедия:
>
> **Markdown** (маркдаун) — облегчённый язык разметки, созданный с целью написания максимально читабельного и удобного для правки текста <...>
**Haroopad** - markdown-редактор с подсветкой синтаксиса, и формированием HTML страницы на основе исходного файла в реальном времени.
Не совсем точно называть **Haroopad** windows-утилитой: редактор является кроссплатформенным. На официальном сайте имеется возможность скачать Windows (msi), MacOS (dmg), Debian (deb) и tar.gz варианты дистрибутива.
Официальный сайт:\\
[[http://pad.haroopress.com/user.html|Haroopad]]
==== SuperPutty ====
{{ :superputty.jpg?direct&300|}}
Зачастую в качестве ssh-клиента windows используется putty, интерфейс которой не блещет удобством, однако существует ряд инструментов, способных повысить комфорт работы с этой утилитой. Одним из таких инструментов можно назвать менеджер сессий **"SuperPutty"**.
Основной фунционал **SuperPutty** состоит в том, чтобы управлять всеми дочерними сессиями Putty в одном окне. По факту, это реализуется засчет двух возможностей:
* Сохранение часто запускаемых сессий с указанием логина
* Расположение активных сессий в качестве вкладок или отдельных областей основного окна
Базовый же набор цветов Putty ("вырви глаз") можно смягчить правкой реестра:\\
[[putty_colors_reg_jet_rat|Reg-файл для настройки цветов Putty]]
----
Официальные сайты:\\
[[https://github.com/jimradford/superputty/releases/latest|SuperPutty]]\\
[[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|Putty]]
===== Linux =====
==== Стандартные утилиты ====
=== WGet ===
>Википедия:
>
>**wget** - неинтерактивная консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также поддерживает работу через HTTP прокси-сервер
Что отдельно приятно, wget поддерживает возможность возобновления загрузки.
Пример использования:
wget https://bitbucket.org/rhiokim/haroopad-download/downloads/haroopad-v0.13.1-x64.deb
=== FTP ===
>Википедия:
>
>**ftp** - классический клиент для передачи файлов по протоколу FTP
=== Man ===
**man** - основное средство просмотра одноименных страниц справки в семействе ОС Unix
=== AWK ===
**awk** - скриптовый язык, иногда пригождающийся для обработки текстовых данных (удобен в связке с sed и grep).
Подробнее можно почитать, к примеру, здесь:\\
[[http://citforum.ru/operating_systems/articles/sed_awk.shtml|sed и awk (учебное пособие)]]
=== SSH ===
**openssh-server** и **openssh-client**:
>Википедия:
>
>**SSH** (от англ. secure shell -- безопасная оболочка) это набор программ, которые позволяют регистрироваться на компьютере по сети, удаленно выполнять на нем команды, а также копировать и перемещать файлы между компьютерами. SSH организует защищенное безопасное соединение поверх небезопасных каналов связи.
SSH можно назвать основным инструментом подключения к Linux-серверам.
Пример использования:
ssh adminuser@remoteserver.somedomain.org
==== Сборка пакетов ====
=== GCC ===
**gcc** (GNU C Compiler) - хорошо переносимый оптимизирующий компилятор C от GNU
=== Make ===
**make** (GNU Make) — это программа для управления генерацией исполняемых файлов и других типов файлов программы из исходного кода.
=== AutoMake ===
>Википедия:
>
>**automake** - это утилита для автоматической генерации файлов Makefile.in из файлов Makefile.am. Каждый файл Makefile.am фактически является набором макросов для программы make (иногда с несколькими правилами).
=== CheckInstall ===
>Википедия:
>
>**checkinstall** - компьютерная программа для Unix-подобных операционных систем, созданная с целью облегчить установку и удаление программного обеспечения, скомпилированного из исходных кодов, используя при этом родную для дистрибутива систему управления пакетами.
**ВНИМАНИЕ**:\\
О том, как и почему стоит использовать "checkinstall" вместо "make install" можно почитать, к примеру, [[https://debian.pro/628|здесь]] и [[https://habrahabr.ru/post/130868|здесь]].
==== Окружение администратора ====
В этом разделе я упомяну инструменты, которые для меня уже давно стали синонимом работы в консоли.
=== Tmux ===
{{ :tmux.jpg?direct&300|}}
**tmux** - Терминальный мультиплексер. Проще говоря, утилита, позволяющая работать с консолью, как с набором окон и вкладок.
Использование терминальных мультиплексеров и tmux в частности добавляет некоторое количество весьма весомых бонусов:
* На одном экране мы без проблем можем заниматься сразу несколькими вещами. К примеру:
* редактировать конфигурацию сервиса
* не закрывая конфигурацию, перезагружать сервис
* просматривать несколько логов
* следить за состоянием процессов (диска, сети, чего еще потребуется)
* На втором экране (вкладке) в этот момент может быть открыт ман
* На третьем, к примеру, идет копирование файлов с попутным отслеживанием заполненности разделов
И так далее пока хватает фантазии.
Отдельно доставляет удовольствие возможность закрыть подключение с одного ПК и подключиться с другого (отвязанная сессия со всеми вкладками продолжает жить).
Для отдельных случаев (например, для обучения) может пригодиться возможность подключения к одной сессии сразу с нескольких ПК, причем выглядеть на обоих ПК консоль будет абсолютно одинаково. Ввод при этом можно будет осуществлять с любого из них.
Создать сессию "somesession", не подключаясь к ней:
tmux new -d -s somesession
Подключиться к существующей сессии, отключив всех остальных:
tmux attach -d -t somesession
Не отключая других:
tmux attach -t somesession
Открыть новую вкладку, переключиться на следующую и предыдущую:
Ctrl-b c
Ctrl-b n
Ctrl-b p
Сменить имя вкладки:
Ctrl-b ,
Разделить окно по вертикали и горизонтали:
Ctrl-b %
Ctrl-b "
Перемещение по панелям в пределах окна:
Ctrl-b Стрелки
или vim-style:
Ctrl-b
Отвязать сессию:
Ctrl-b d
Кроме прочего замечу, что этим функционал tmux не ограничивается. При желании, мультиплексоры можно использовать, допустим, для "демонизации" процессов. Ну, и про возможность конфигурации информационной области тоже забывать не стоит: часы, имя хоста, Load Average, короткая выдача собственных скриптов - любая информация, которую хочется держать перед глазами, может быть помещена сюда.
=== ZSH ===
{{ :zsh.jpg?direct&300|}}
**zsh** - является расширенным bourne shell (bash) с большим количеством улучшений
* Самым главным бонусом zsh является расширенное автодополнение:
* Автодополнение работает не только с названиями команд, но и (в огромном количестве случаев) с их ключами, давая по-ходу краткую справку по типу --help
* "/u/l/b" по нажатию Tab прeвращается в "/usr/local/bin"
* zsh предоставляет возможность исправления опечаток в командах и путях
* По повторному нажатию Tab можно выбрать вариант дополнения из списка (в том числе, используя стрелки) - в итоге, работа с файлами и папками становится даже проще, чем при использовании файл-менеджеров
* В Bash-е приглашение коммандной строки как правило ограничивается стандартным серым "user@host:path$" с левой стороны. По сравнению с zsh такое приглашение выглядит весьма аскетично.
* Цветное левое приглашение, позволяющее значитьльно быстрее осознать, под каким пользователем и на каком хосте Вы работаете
* Добавление правого приглашения. У меня там стоят часы - очень удобно для отслеживания времени отработки скрипта и корректности текущего времени на машине.
* Многие добавляют к приглашениям отслеживание состояния git и другие полезные и приятные мелочи
* Двухстрочное приглашение и не снилось Bash-у. Впрочем, это на любителя.
* Кроме прочего, zsh работает на модульной основе - уже существует огромное количество модулей для расширения функционала. Также, никто не мешает писать свои.
Ссылки:\\
[[http://www.slideshare.net/jaguardesignstudio/why-zsh-is-cooler-than-your-shell-16194692|Презентация: чем zsh круче Bash]]\\
[[http://ohmyz.sh|Oh-My-Zsh - сборка конфигураций, тем и модулей zsh]]\\
[[zshrc_jet_rat|Пример конфигурацонного файла]]
=== Vim ===
{{ :vi_emacs_notepad.png?direct&300|}}
> Материал из Викиучебника — открытых книг для открытого мира
>
>**Vim**
>
>Продвинутый текстовый редактор — кошмар для случайного пользователя. Если его удается в конце концов закрыть, то вздыхаешь с облегчением и твердой уверенностью, что больше не будешь запускать эту программу ни разу в жизни.
>
>Пожалуй, Vim нельзя просто запустить и начать работать — требуется определенная подготовка. Зато стоит раз испытать его в деле и поражаешься тому, как можно было без него обходиться.
**Vim** - один из величайших текстовых редакторов, про который разными авторами в разное время написана целая библиотека книг. Всё мое восхищение им не передать в одной статье, поэтому приведу здесь всего несколько ключевых мыслей.
* Vim нельзя просто запустить в первый раз и сразу начать работать/
* Первой мыслью будет: "Анекдоты про то, что vim - редактор, в котором всё пищит, ломается и не работает - не анекдоты!!!"/
* Вторая мысль: "КАК ИЗ НЕГО ВЫЙТИ???!!!". Выход без сохранения производится последовательным нажатием **:q!**
* Не пытайтесь взять его штурмом. Лучше запустите vimtutor и потратьте полчаса своего времени - в последствии сэкономите недели. Я не шучу.
* При начале осознанного использования Vim может придти ощущение того, что его придумали ребята с той же планеты, на которой изобрели регулярные выражения. Это правда. Это пройдет)
* Некоторые сочетания клавиш пальцы просто должны запомнить.
* Слепая печать - великое благо.
* Для того, чтобы Vim стал вашим "межгаллактическим швейцарским ножом", его возможности просто нужно использовать. Не зазубривать, а именно использовать. Руки и голова сами привыкнут в процессе.
* Vimtutor дает начальный уровень - доступ к креслу и штурвалу звездолета. Вначале Вам может показаться, что вы управляете легким истребителем. Про панель старшего навигатора, машинный отсек с командой механиков, камбуз и капитанский мостик Вы узнаете позже из интернета и книг.
* Не стоит пытаться охватить всё сразу. Учитесь по мере интереса и необходимости.
После первичного освоения Vim очень рекомендую найти книгу **"Практическое использование Vim. Редактируйте текст со скоростью мысли"**. Эта книга не является учебником в полном смысле этого слова, скорее набором хаков, которые позволят повысить скорость работы с текстом в сотни раз.
[[vimrc_jet_rat|Пример конфигурацонного файла]]
==== Сетевой мониторинг ====
=== TcpDump ===
>Википедия:
>
>**tcpdump** - утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.
>
>Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству (так, например, запуск из Jail во FreeBSD невозможен).
>
>Основные назначения tcpdump:
>
> * Отладка сетевых приложений.
> * Отладка сети и сетевой конфигурации в целом.
В комплекте с **telnet** очень удобно использовать такую утилиту, как **wireshark** (программа-анализатор трафика для компьютерных сетей Ethernet и некоторых других, имеющая графический интерфейс).
=== TelNet и NetCat ===
>Википедия:
>
>**telnet-client** - TELNET (сокр. от англ. terminal network) — сетевой протокол для реализации текстового интерфейса по сети (в современной форме — при помощи транспорта TCP)
На моей практике telnet использовался только для проверки открытых TCP-портов. И конфигурации некоторых сетевых устройств. Установленным этот пакет, однако, иметь стоит.
>Википедия:
>
>**netcat** - утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их.
По факту, "telnet на стероидах". Вероятно, мне давно стоит отказаться от использования telnet в пользу netcat (специалисты активно рекомендуют), однако, так как и тем, и другим я пользуюсь чрезвычайно редко, пока не дошли руки.
=== NMap ===
>Википедия:
>
>**nmap** - свободная утилита, предназначенная для разнообразного настраиваемого сканирования IP-сетей с любым количеством объектов, определения состояния объектов сканируемой сети (портов и соответствующих им служб). Изначально программа была реализована для систем UNIX, но сейчас доступны версии для множества операционных систем.
Сетевой сканер поможет определить занятость IP-адресов в сети или набор открытых портов на сервере. Естественно, этим его функционал не ограничивается.
==== Локальный мониторинг ====
=== multitail ===
=== iotop ===
{{ :tops.jpg?direct&300|}}
=== iftop ===
=== atop ===