====== Набор системных инструментов администратора 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 ===