Linux аналог jq для xml

Сборники рецептов jq

Мы все иногда сталкиваемся с необходимостью вытащить нужную информацию из JSON или YAML файлов. Многие уже познакомились с мощью утилиты jq. Судя по публикациям на Хабре, например, этой, и вопросам в qna, тема до сих пор актуальна.

Мне в очередной раз пришлось вспомнить специфический DSL jq чтобы восстановить накопленные за долгое время закладки в Хроме, не сохранённые при апгрейде. Точнее, файл Bookmarks в формате .json сохранился, но ни в какую не хотел импортироваться в новый Хром. Хочу поделиться рецептом решения этой проблемы, заодно упорядочить собранные в разных местах миниатюрные скрипты для решения похожих проблем.

JQ в действительности полноценный язык программирования со всеми атрибутами — переменными, типами данных, арифметикой, циклами и условными переходами, массой встроенных функций и возможностью добавления новых. Удивительно, всё это в программке размером 30KB, страницей «man jq» такого же размера и библиотекой libjq размером 300KB.

Итак, заглянув в свой Bookmarks с несколькими сотнями ссылок, первый вопрос — какова структура этого .json файла? По счастью, я уже знал как быстро её посмотреть и использовать в дальнейших запросах. Вот эта команда:

. $ jq ‘[paths|join(«.»)]’ Bookmarks|head -n 16
[
«checksum»,
«roots»,
«roots.bookmark_bar»,
«roots.bookmark_bar.children»,
«roots.bookmark_bar.children.0»,
«roots.bookmark_bar.children.0.children»,
«roots.bookmark_bar.children.0.children.0»,
«roots.bookmark_bar.children.0.children.0.children»,
«roots.bookmark_bar.children.0.children.0.children.0»,
«roots.bookmark_bar.children.0.children.0.children.0.date_added»,
«roots.bookmark_bar.children.0.children.0.children.0.guid»,
«roots.bookmark_bar.children.0.children.0.children.0.id»,
«roots.bookmark_bar.children.0.children.0.children.0.name»,
«roots.bookmark_bar.children.0.children.0.children.0.type»,
«roots.bookmark_bar.children.0.children.0.children.0.url»,

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

Хром умеет импортировать закладки в виде .html файла. Ссылка в этом файле выглядит таким образом:

Таким образом, нам надо достать из json файла все значения .url и .name, затем добавить их в таблицу .html как строки. Значение ADD_DATE не обязательно. Вот так это извлекается из уже знакомой нам структуры данных .json файла:

Здесь вместо индекса массива в .json файле использовано обозначение [], означающее итерацию по всем элементам массива. Идём дальше. С такой же лёгкостью можно добавить в вывод желаемые строки, чередуя строки в фильтре со значениями из хэша:

Внимательный читатель заметил, что выше использованы 2 опции запуска jq:

-j —join-output — не вставлять новую строку в выводе, её можно задавать самому, см. символ \n

-r —raw-input — не выводить кавычки как в объектах json, их снова задаю вручную

Для сохранения всех закладок надо повторить эту команду для всех вложенных папок, например, добавить ещё один уровень вложенности .children[] и добавить результат в понятный Хрому .html файл. Начальный файл можно сделать создав в Хроме одну ссылку и экспортировав в файл, в который добавим извлечённые из старого Bookmarks закладки. Пару строк закрытия таблицы в самом экспортированном файле нужно удалить перед добавленными строками и вставить в самый конец:

Импорт покажет все закладки без разбиения на папки, но это лишь хороший повод навести порядок, удалить ненужные и отсортировать их в менеджере закладок Хрома с учётом прожитых лет.

Мощь jq работает точно также с файлами .yaml и .xml. Автор проекта «yq: Command-line YAML/XML processor» Андрей Кислюк для работы с этими форматами данных не стал изобретать велосипед, а реализовал на языке python преобразование YAML/XML в JSON, затем передачу команд и опций для выполнения в jq. Обратное преобразование в yaml задаётся опциями -y или -Y, если необходимо, см. https://kislyuk.github.io/yq/

Замечательный сборник рецептов нашёл у Remy Sharp’а. Нашёл его поиском «jq cookbook», лучше него что-то сделать трудно. Надеюсь, его рецепты будут доступны несмотря на текущий статус draft.

Нельзя не посоветовать также документацию автора jq Stephen Dolan’а. Кроме самой документации, есть также tutorial, wiki, FAQ и ещё один сборник рецептов.

Источник

yq: Command-line YAML/XML processor — jq wrapper for YAML and XML documents¶

Installation¶

Before using yq , you also have to install its dependency, jq . See the jq installation instructions for details and directions specific to your platform.

On macOS, yq is also available on Homebrew: use brew install python-yq .

Synopsis¶

yq takes YAML input, converts it to JSON, and pipes it to jq:

Like in jq , you can also specify input filename(s) as arguments:

By default, no conversion of jq output is done. Use the —yaml-output / -y option to convert it back into YAML:

Mapping key order is preserved. By default, custom YAML tags and styles in the input are ignored. Use the —yaml-roundtrip / -Y option to preserve YAML tags and styles by representing them as extra items in their enclosing mappings and sequences while in JSON:

Use the —width / -w option to pass the line wrap width for string literals. With -y/-Y , files can be edited in place like with sed -i : yq -yi .foo=1 *.yml . All other command line arguments are forwarded to jq . yq forwards the exit code jq produced, unless there was an error in YAML parsing, in which case the exit code is 1. See the jq manual for more details on jq features and options.

Because YAML treats JSON as a dialect of YAML, you can use yq to convert JSON to YAML: yq -y . in.json > out.yml .

Preserving tags and styles using the -Y ( —yaml-roundtrip ) option¶

The -Y option helps preserve custom string styles and tags in your document. For example, consider the following document (an AWS CloudFormation template fragment):

Passing this document through yq -y .Resources.ElasticLoadBalancer will drop custom tags, such as !Ref , and styles, such as the folded style of the Description field:

By contrast, passing it through yq -Y .Resources.ElasticLoadBalancer will preserve tags and styles:

To accomplish this in -Y mode, yq carries extra metadata (mapping pairs and sequence values) in the JSON representation of your document for any custom tags or styles that it finds. When converting the JSON back into YAML, it parses this metadata, re-applies the tags and styles, and discards the extra pairs and values.

The -Y option is incompatible with jq filters that do not expect the extra information injected into the document to preserve the YAML formatting. For example, a jq filter that counts entries in the Instances array will come up with 4 entries instead of 2. A filter that expects all array entries to be mappings may break due to the presence of string metadata keys. Check your jq filter for compatibility/semantic validity when using the -Y option.

XML support¶

yq also supports XML. The yq package installs an executable, xq , which transcodes XML to JSON using xmltodict and pipes it to jq . Roundtrip transcoding is available with the xq —xml-output / xq -x option. Multiple XML documents can be passed in separate files/streams as xq a.xml b.xml . Entity expansion and DTD resolution is disabled to avoid XML parsing vulnerabilities.

TOML support¶

yq supports TOML as well. The yq package installs an executable, tomlq , which uses the toml library to transcode TOML to JSON, then pipes it to jq . Roundtrip transcoding is available with the tomlq —toml-output / tomlq -t option.

Источник

fx — алтернатива jq для обработки JSON из командной строки

jq — самая популярная утилита для обработки JSON из командной строки, написана на C и имеет свой собственный синтаксис для работы с JSON.

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

Так и появилась идея написать fx с простым и понятным синтаксисом, который никогда не забудешь. А какой язык программирования знают все? Правильно — JavaScript.

fx принимает в качестве аргумента код на JavaScript, содержащий анонимную функцию, и вызывает её, подставляя в качестве аргумента JSON, полученный из stdin. То, что функция вернёт, будет выведено в stdout. Все. Больше никаких сложных и непонятных конструкций.

Читайте также:  Порты windows ftp сервера

Сравните два решения одной и той же задачи на jq и на fx:

Чуть более многословно? Да, это же просто обычный JavaScript.

Если fx вообще не передать аргументов, то JSON будет отформатирован и выведен:

Если код не содержит param => , то переданный код будет автоматически преобразован в анонимную функцию и this будет содержать переданный JSON объект:

fx можно передать несколько аргументов/анонимных функций, они будут применены поочерёдно к JSON:

Если код содержит ключевое слово yield , созданная анонимная функция будет содержать «развернутый» генератор (пример из generator-expression):

Это позволяет описывать очень простые выборки в сложных запросах.

Кстати, модифицировать JSON с fx тоже очень просто:

А также можно использовать любой npm пакет, если поставить его глобально:

Для некоторых важно, что jq всего лишь один бинарник (

2mb). Так вот fx тоже имеет отдельные бинарники.

Весят они немного больше (

30mb), но если вам это не критично, и стоит nodejs, то поставить fx можно с помощью npm:

А что по производительности? Давайте замерим с помощью hyperfine:

На порядок меньше. А все дело в том, что fx использует eval для запуска кода из аргументов (и вообще весь код fx

Источник

Linux аналог jq для xml

yq: Command-line YAML/XML/TOML processor — jq wrapper for YAML, XML, TOML documents

Before using yq , you also have to install its dependency, jq . See the jq installation instructions for details and directions specific to your platform.

On macOS, yq is also available on Homebrew: use brew install python-yq .

yq takes YAML input, converts it to JSON, and pipes it to jq:

Like in jq , you can also specify input filename(s) as arguments:

By default, no conversion of jq output is done. Use the —yaml-output / -y option to convert it back into YAML:

Mapping key order is preserved. By default, custom YAML tags and styles in the input are ignored. Use the —yaml-roundtrip / -Y option to preserve YAML tags and styles by representing them as extra items in their enclosing mappings and sequences while in JSON:

Use the —width / -w option to pass the line wrap width for string literals. With -y/-Y , files can be edited in place like with sed -i : yq -yi .foo=1 *.yml . All other command line arguments are forwarded to jq . yq forwards the exit code jq produced, unless there was an error in YAML parsing, in which case the exit code is 1. See the jq manual for more details on jq features and options.

Because YAML treats JSON as a dialect of YAML, you can use yq to convert JSON to YAML: yq -y . out.yml .

Preserving tags and styles using the -Y ( —yaml-roundtrip ) option

The -Y option helps preserve custom string styles and tags in your document. For example, consider the following document (an AWS CloudFormation template fragment):

Passing this document through yq -y .Resources.ElasticLoadBalancer will drop custom tags, such as !Ref , and styles, such as the folded style of the Description field:

By contrast, passing it through yq -Y .Resources.ElasticLoadBalancer will preserve tags and styles:

To accomplish this in -Y mode, yq carries extra metadata (mapping pairs and sequence values) in the JSON representation of your document for any custom tags or styles that it finds. When converting the JSON back into YAML, it parses this metadata, re-applies the tags and styles, and discards the extra pairs and values.

The -Y option is incompatible with jq filters that do not expect the extra information injected into the document to preserve the YAML formatting. For example, a jq filter that counts entries in the Instances array will come up with 4 entries instead of 2. A filter that expects all array entries to be mappings may break due to the presence of string metadata keys. Check your jq filter for compatibility/semantic validity when using the -Y option.

yq also supports XML. The yq package installs an executable, xq , which transcodes XML to JSON using xmltodict and pipes it to jq . Roundtrip transcoding is available with the xq —xml-output / xq -x option. Multiple XML documents can be passed in separate files/streams as xq a.xml b.xml . Entity expansion and DTD resolution is disabled to avoid XML parsing vulnerabilities.

yq supports TOML as well. The yq package installs an executable, tomlq , which uses the toml library to transcode TOML to JSON, then pipes it to jq . Roundtrip transcoding is available with the tomlq —toml-output / tomlq -t option.

This package’s release series available on PyPI begins with version 2.0.0. Versions of yq prior to 2.0.0 are distributed by https://github.com/abesto/yq and are not related to this package. No guarantees of compatibility are made between abesto/yq and kislyuk/yq. This package follows the Semantic Versioning 2.0.0 standard. To ensure proper operation, declare dependency version ranges according to SemVer.

  • Project home page (GitHub)
  • Documentation
  • Package distribution (PyPI)
  • Change log
  • jq — the command-line JSON processor utility powering yq

Please report bugs, issues, feature requests, etc. on GitHub.

Licensed under the terms of the Apache License, Version 2.0.

About

Command-line YAML, XML, TOML processor — jq wrapper for YAML/XML/TOML documents

Источник

Полезные консольные Linux утилиты

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.

Осторожно много скриншотов. Добавил до ката утилиту binenv.

binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Bat — это клон команды cat с дополнительной разметкой и подсветкой синтаксиса для большого количества языков программирования, а также интеграцией Git для отображения изменений файлов. Подробнее на русском.

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

Fd — это простой, быстрый и удобный инструмент, предназначенный для более простой и быстрой работы по сравнению с командой find. Подробнее на русском.

Procs — это современная замена ps, программы командной строки по умолчанию в Unix / Linux для получения информации о процессах. По умолчанию он обеспечивает удобный, понятный для человека (и цветной) формат вывода. Подробнее на русском.

Sd — это интуитивно понятный инструмент командной строки для поиска и замены, он является альтернативой sed. sd имеет более простой синтаксис для замены всех вхождений и использует удобный синтаксис регулярных выражений, который вы уже знаете из JavaScript и Python. Sd также в 2-11 раз быстрее, чем sed.

Dust — опрятная версия дефолтного du, c удобной записью памяти, цветом и отступами.

Starship — очень приятный prompt который легко накатывается поверх zsh, fish, bash и прочего.

Ripgrep — быстрый поиск с возможностью замены по содержимому в файлах, аналог GREP, ASK, написан на RUST, понимает регулярные выражения, игнорирует ресурсы указанные в .gitignore, автоматически пропускает бинарные, скрытые файлы. Подробнее на русском.

Ripgrep-all — Инструмент поиска, ориентированный на строки, который позволяет вам искать по регулярному выражению во множестве типов файлов. Ripgrep-all является оберткой над ripgrep и позволяет ему искать в pdf, docx, sqlite, jpg, субтитрах фильмов (mkv, mp4) и т. д.

Grex — это инструмент командной строки и библиотека для генерации регулярных выражений из предоставленных пользователем тестовых примеров. Созданное регулярное выражение имеет синтаксис PCRE.

Fzf — инструмент для «фильтрации» любых списковых данных в консоли. Может использоваться для фильтрации списка файлов, истории команд, процессов, hostnames, коммитов и прочего. Подробнее на русском.

Jq — это легкий и гибкий JSON-процессор командной строки. Подробнее на русском.

Peco — инструмент, способный сильно облегчить навигацию, а также поиск. Это небольшая утилита, которая принимает на вход список строк и выводит на экран псевдографическое меню, с помощью которого можно выбрать или найти нужную строку. Далее peco отдает эту строку на выход и завершает свою работу (по сути, это консольный аналог dmenu). Подробнее на русском.

Читайте также:  Настроить apn windows 10

HTTPie — HTTP клиент для командной строки, с поддержкой json, понятным интерфейсом, подсветкой синтаксиса и прочим. Подробнее на русском.

xh — удобный и быстрый инструмент для отправки HTTP-запросов. Он в максимально возможной степени воплощает превосходный дизайн HTTPie.

Rebound — это инструмент командной строки, который мгновенно извлекает результаты Stack Overflow при возникновении исключения. Просто используйте команду rebound для запуска вашего исполняемого файла.

HTTP Prompt – это интерактивный HTTP-клиент командной строки, созданный на основе prompt_toolkit и HTTPie с более чем 20 темами. Его основные функции включают в себя автоматическое заполнение, подсветку синтаксиса, автоматические куки, Unix-подобные конвейеры, совместимость с HTTpie, http-подсказка, которая сохраняется между сеансами и интеграцию OpenAPI / Swagger. Подробнее на русском.

shell2http — Простой веб сервер для удаленного выполнения команд.

reachable — инструмент, который поможет вам проверить, работает ли домен или нет.

Lazydocker — пользовательский интерфейс для управления докером. С его помощью больше не нужно запоминать команды, алиасы и следить за контейнерами через несколько терминальных окон. Всё это теперь собрано в одном окне. Просмотр состояния, логов, метрик; перезапуск, удаление, восстановление контейнеров и сервисов. Подробнее на русском.

Clog-cli — утилита для создания changelogs из истории коммитов Git.

Gotty — программа позволяет организовывать общий доступ к приложениям командной строки через браузер. Подробнее на русском.

mosh — утилита Mosh (сокращение от mobile shell), обладающая всеми преимуществами безопасности SSH, является более устойчивой в условиях плохих сетевых и мобильных соединений. Кроме того, данное приложение увеличивает способность к реагированию и снижает использование полосы пропускания. Создание подключения и авторизация в Mosh происходят через обычное соединение SSH, что значит, что для безупречной работы каких-либо механизмов безопасности на основе ключей нужно внести всего несколько дополнительных конфигураций. После проверки подлинности ключа Mosh начинает взаимодействие через зашифрованные датаграммы UDP, что делает сессию более устойчивой к изменяющимся клиентским IP-адресам и перебоям соединений, которые часто случаются при использовании мобильных устройств. Подробнее на русском.

ngrok — Безопасные интроспективные туннели к localhost.

tmate — Мгновенный доступ к терминалу (tmux).

Lazygit — псевдографический консольный клиент для Git. Если у вас есть проблемы с восприятием основных моментов в работе с Git-репозиторием из консоли, то вы всегда можете воспользоваться графическим клиентом. Один из них — Lazygit, псевдографический клиент, написанный на языке Go с использованием библиотеки gocui. В официальном описании программы автор описывает, как трудно бывает понять, что и как нужно сделать в гите, если там больше одной ветви или коммита, и как хорошо при этом помогает разобраться его клиент. Думаю, что описывать все возможности программы нет смысла, так как что еще можно сказать про гит, кроме как «позволяет коммитить, мержить и так далее»?

GNU parallel — это инструмент оболочки для параллельного выполнения работ используя один или более компьютер. В качестве работы может быть единичная команда или небольшой скрипт, который должен быть запущен для каждой строки из полученного ввода. Типичным вводом является список файлов, список хостов, список пользователей, список URL, список таблиц. В качестве работы может быть команда, которая считывает по трубе (pipe). GNU parallel затем может разбить ввод на блоки и передать блоки по трубе параллельно в каждую команду. GNU parallel может заменить вам программы xargs и tee. А также не только заменить циклы (loops), но и сделать их выполнение более быстрым за счёт параллельного выполнения нескольких работ. Подробнее на русском.

Bottom — консольное приложение для мониторинга процессов и загрузки системы. Подробнее на русском.

Bandwhich — net monitor с раскладкой по процессам, который работает и на FreeBSD.

mtr — MyTraceRoute Великолепная замена traceroute и аналогам

gdu — Более шустрый и фичастый аналог ncdu (ncurses du), на Go. Удобнее штатного du, при разборах «куда же делось свободное место».

Dog — это красивый DNS-клиент командной строки для поиска DNS, который работает как dig. Он имеет красочный вывод, понимает обычный синтаксис аргументов командной строки, поддерживает протоколы DNS-over-TLS и DNS-over-HTTPS и может генерировать JSON.

dnsmeter — это инструмент для тестирования производительности сервера имен и инфраструктуры вокруг него. Он генерирует DNS-запросы и отправляет их через UDP на целевой сервер имен и считает ответы.

Gitleaks — это инструмент SAST для обнаружения жестко закодированных секретов, таких как пароли, ключи API и токены в репозиториях git. Gitleaks — это простое в использовании универсальное решение для поиска секретов прошлого или настоящего в вашем коде.

localtls — DNS-сервер для предоставления TLS веб-сервисам на локальных адресах

fx — альтернатива jq для обработки JSON из командной строки. Подробнее на русском.

dnspeep — простая утилита, которая позволяет просмотреть DNS запросы.

Dive — инструмент для изучения образа Docker, содержимого слоев и поиска способов уменьшить размер вашего образа Docker/OCI.

datanymizer — Мощный анонимайзер базы данных с гибкими правилами. Подробнее на русском.

termshark — консольный интерфейс терминала для tshark, вдохновленный Wireshark

sysinfo — Скрипт на основе Python для получения системной информации из Linux.

SSH-Attack-Stats — Простой скрипт, который будет запущен в MOTD на сервере Linux и сообщит вам статистику атак.

dry — менеджер для Docker, по ощущениям гораздо быстрее и отзывчивее чем «LazyDocker»

gh — утилита для работы с GitHub из консоли, например можно создать Pull Request

gitlab — аналогичная утилита для работы с GitLab (неофициальная)

watch — запуск любой команды каждые N секунд, позволяет на раз-два сделать реалтайм мониторинг в консоли

runnel — автоматический запуск туннелей SSH с переподключением при обрыве соединения

Ниже утилиты и краткое описание со статьи Sysadmin-util: полезные инструменты для системных администраторов Linux. Подробнее об этих утилитах вы найдете в этой статье.

Ago — Данный инструмент выводит в удобочитаемом формате информацию, как давно файл или каталог были изменены.

Cronic – инструмент запускает команду тихо, пока не завершится неудачей, т.е. он запускает команду и скрывает STDOUT и STDERR, если она успешно завершается. Это полезно для заданий cron.

cidr2ip — Он преобразует блоки CIDR в составляющие их IP-адреса.

collapse — Инструмент collapse удаляет пустые строки и строки, содержащие пробелы, из заданных файлов.

dupes — Инструмент dupes сообщит о идентичных файлах. Это поможет вам найти дубликаты файлов, которые содержат то же самое содержимое. Утилита сравнивает у файлов хэш SHA1 .

empty-dir — Этот инструмент проверит, является ли данный каталог пустым или нет.

expand-ipv6 — Этот инструмент расширяет указанные сокращенные / сжатые адреса IPv6 до их полной формы. Это может быть полезно при настройке DNS.

multi-ping — Это многопротокольная оболочка ping. Он используется для проверки подключения удаленного хоста независимо от того, является ли он хостом IPv6 или IPv4. Значение: если пульт использует IPv4, он вызывает команду ping для проверки возможности подключения. Если удаленный хост использует IPv6, он вызовет команду «ping6».

pyhttpd — Это простой HTTP-сервер на Python, который позволяет мгновенно настроить базовый web-сервер.

randpass — Утилита randpass используется для генерации случайного пароля из командной строки.

since — Он показывает любой новый контент с момента последнего чтения файла. Это полезно для отслеживания файлов журнала.

ssl-expiry-date — Отображает дату истечения срока действия сертификата SSL данного домена или хоста.

timeout — Это позволяет пользователю выполнить команду для определенного интервала и уничтожить ее.

until-error & until-success – повторять команды до тех пор, пока не произойдет сбой или успешно выполнится

when-down & when-up – ждет, пока хост не упадет/ поднимется

mysql-slave-check – выяснить, является текущий хост – ведомым или нет

which-shell – определить оболочку, под которой мы работаем, и т. д.

Утилиты из пакета Moreutils:

sponge — «губка» для стандартного ввода. Подробнее на русском

Утилиты ниже взял из канала https://t.me/SysadminNotes

ssh-config — простая штуковина, позволяющая работать с конфигом SSH.

ssh-tools — набор из нескольких утилит. Проверяем удалённые хосты, получаем информацию о них и т. п.

assh — серьёзный инструмент, который позволяет иначе взглянуть на привычную работу с SSH. Тут вам и регулярки, и возможность использования шаблонов, хуки, работа с конфигом SSH клиента. Причём, lib-ssh запускает assh через ProxyCommand, а значит что весь этот функционал мы можем использовать и с scp, и c rcync’ом, и с git’ом, например.

Читайте также:  Windows 10 enterprise ltsb tweak no defender что это

domain-check-2 — Простой скрипт для проверки срока истечения важных для нас доменных имён. Подробнее на русском

[pingtop]() — интересная top утилита, с помощью которой можно пинговать несколько сайтов одновременно. Подробнее на русском

red — весьма интересный анализатор логов. Пайпим ему json выхлоп и получаем статистику по зафиксированным там событиям.

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

localstack — протестировать что-то предназначенное для AWS локально

txeh — Библиотека Go и утилита CLI для управления /etc/hosts.

mkchain — Утилита, с помощью которой можно составить цепочку сертификатов, из присланных от центра сертификации файлов.

Asn — удобная утилита для отображения информации об IP и домене.

tlog — Инструмент для записи / воспроизведения терминального ввода-вывода и сессий. Подробнее на английском

frp — Быстрый обратный прокси-сервер, который поможет вам открыть доступ в Интернет к локальному серверу за NAT или брандмауэром.

tunnelto — Разместите свой локальный веб-сервер в Интернете с помощью общедоступного URL-адреса.

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

logtop — утилита, которая выводит top IP адресов, анализируя логи веб-сервера. Это для тех, кому не очень хочется однострочник на bash писать c awk, sort и uniq.

Choose — аналог cut и awk ‘‘. Авторы, к слову, утверждают что работает штука значительно быстрее перечисленных аналогов.

whatfiles — простая и удобная утилита, которая покажет, с какими файлами работает тот или иной процесс в системе. Этакий упрощённый вариант strace’а.

topngx — этакий top для Nginx. Утилита анализирует логи и выдаёт администратору итоговую статистику. По сути, это аналог другой утилиты — ngxtop, правда эта уже давно не поддерживается.

SSHHeatmap — Создает тепловую карту IP-адресов, которые сделали неудачные попытки входа в систему по SSH.

desed — Отладчик для Sed: отлаживайте сценарии sed, не выходя из вашего терминала.

3mux — Терминальный мультиплексор, вдохновленный i3

frontail — утилита для трансляции логов по http\https. Удобно использовать в случаях, когда нужно быстро, в браузере, показать содержимое какого-либо лога и его изменения в реальном времени. Подробнее на русском

critic.sh — Суровое тестирование bash скриптов. Выглядит не менее интересным даже в сравнении с shellcheck

jql — Вместо jq можно попробовать jql для работы с JSON.

asciicast2gif — утилита для конвертации ascii кастов, в обычную gif анимацию. Подробнее на русском

Nginx-builder — инструмент, который автоматизирует сборку Nginx с нужными модулями. Описываем всё в yaml, запускаем сборку и получаем готовый rpm или deb пакет

linux-exploit-suggester — Быстрый аудит сервера на возможность применения эксплойтов

linux-exploit-suggester-2 — Подсказка эксплойтов ядра Linux нового поколения

ssl-cert-check — делаем простой мониторинг SSL с уведомлениями на email о необходимости продления сертификата. Подробнее на русском

jl — Удобная утилита для парсинга\чтения JSON логов

Wondershaper — утилита для настройки ограничений скорости сетевого интерфейса на сервере. Подробнее на русском

mkcert — удобная штука, с помощью которой можно у себя на локалхосте для часто употребляемых тестовых имён выписать валидный сертификат.

https-portal — Полностью автоматизированный сервер HTTPS на базе Nginx, Let’s Encrypt и Docker.

httpsat — утилита, которая позволяет получить статистику доступа к нужному сайту. Скрипт работает с cURL’ом, и поддерживает многие доступные в нём опции при соединении. Подробнее на русском

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

graphpath — Утилита для быстрого построения ASCII схемы сети прямо в терминале.

Sosreport — утилита для сбора информации о текущем состоянии системы. Удобно использовать самому в рамка первичного осмотра, удобно попросить клиента выполнить команду и прислать отчёт, готовый для изучения. Подробнее на русском

Fatrace (file access trace) — простая и удобная в использовании утилита для мониторинга текущей активности в системе. Отлично подойдёт для тех случаев, когда strace или blktrace оказываются избыточны. Подробнее на русском

httping — простая утилита, с помощью которой можно «пинговать» сайт по определённому адресу и получать общую (а при необходимости подробную) статистику по ответу и доступности. Подробнее на русском

Bashdb — утилита-дебаггер для bash скриптов. Дебаг скриптов задача не частая, но если она стоит, то на bashdb имеет смысл обратить внимание. Подробнее на русском

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

testssl.sh — это скрипт, который позволяет протестировать SSL сервис и вывести подробную статистику по нему. Это как SSLlabs, только имеется возможность проведения проверки разных сервисов. Кроме того, для скрипта доступен простой веб-интерфейс. Подробнее на русском

iprange — Обнаружилась очень удобная утилита для работы с подсетями и IP адресами. Умеет вычислять нужные подсети из разных диапазонов, что порой бывает необходимо, например, при работе с ipset и фаерволом на сервере.

container-diff — утилита для сравнения образов контейнеров. Сontainer-diff умеет анализировать и учитывать при сравнении историю образа, файловую систему, пакеты apt, pip и npm. Выглядит очень удобно для отслеживания изменений в рамках одного контейнера, либо для сравнения двух разных образов.

https://gist.github.com/agarzon/5554490 — Скрипт для проверки присутствия IP в различных DNSBL

Prochunter — хорошая утилита для поиска скрытых процессов, запущенных в системе. Подробнее на русском

Sysdig — удобный и функциональный инструмент, дающий администратору широкие возможности для сбора информации о работающей системе. Подробнее на русском

ioping — очень простая, но при этом удобная утилита для быстрой проверки отзывчивости дисковой подсистемы. В CentOS ставится из репозитория EPEL. Подробнее на русском

ctop — полезная *top утилита для мониторинга работы контейнеров.

hstr — от англ. history, инструмент для просмотра истории команд.

pastebinit — инструмент командной строки в Deb-системах для отправки данных на «pastebin», сайт, который позволяет пользователям размещать отрывки текста для публичного просмотра. Подробнее на русском

fpaste — инструмент командной строки в RedHat-системах для отправки данных на http://fpaste.org/, сайт, который позволяет пользователям размещать отрывки текста для публичного просмотра.

Eternal Terminal — удаленная оболочка, которая автоматически переподключается. Подробнее на русском

tfquery — Выполняйте SQL-запросы в своей инфраструктуре Terraform. Запрашивайте ресурсы и анализируйте их конфигурацию с помощью SQL.

kubectx — утилита для управления контекстами kubectl и переключения между ними.

kubens — утилита для переключения между пространствами имен Kubernetes.

fselect — утилита для поиска файлов с помощью SQL-подобных запросов.

kubesql — инструмент, использующий sql для запроса ресурсов Kubernetes, таких как поды, узлы и т. д.

k3d — k3d создает кластеры k3s в контейнерах. Вы можете развернуть многоузловой кластер k3s на одной машине с помощью docker.

arkade — arkade предоставляет marketplace для установки ваших любимых DevOps утилит командной строки.

helmfile — обёртка для helm, которая позволяет в одном месте описывать множество helm релизов, параметризовать их чарты для нескольких окружений, а также задавать порядок их деплоя..

cheat.sh — утилита и онлайновый сервис, к которому можно обращаться из командной строки и искать по внушительной коллекции из чит-шитов, собранных силами сообщества. Сюда входит около тысячи команд Unix/Linux и 55 языков программирования.

lnav — это расширенный просмотрщик логов. Это терминальное приложение, которое может понять ваши файлы журналов и упростить вам поиск проблем практически без настройки.

Не утилита, но очень полезное:

Автоматический запуск tmux, при входе на сервер по SSH:
https://t.me/SysadminNotes/1661
автоматический запуск tmux, при входе на сервер по SSH. Добавляем в

И при каждом входе на сервер, получаем либо уже существующую, либо новую сессию tmux.
Для screen можно попробовать такую конструкцию:
if $(screen -ls | grep -q pts); then screen -x; else screen -R; fi

Источник

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