Нас­тоящие воины Linux обща­ются с коман­дной стро­кой ежед­невно, а некото­рые в ней прос­то живут. В оче­ред­ной под­борке я соб­рал ути­литы, которые облегчат эту жизнь, сде­лают ее лов­чее и веселее. Наиболь­шую поль­зу эти тул­зы при­несут сисад­мину и хакеру, но и прос­той юзер для себя кое‑что най­дет. В общем, налетай! Впе­реди у нас 13 инте­рес­ных полез­няшек.

«Мастерская хакера»

Это уже пятая моя под­борка ути­лит, облегча­ющих жизнь в мелочах. Бла­годар­ные читате­ли про­дол­жают откры­вать передо мной свои кла­дов­ки, а я выношу отту­да и показы­ваю на стра­ницах «Хакера» все самое вкус­ное.

Не забудь заг­лянуть в прош­лые четыре час­ти. В пер­вой мы рас­смат­ривали в основном сетевые ути­литы, во вто­рой — даш­борды и про­чие укра­шатель­ства, в треть­ей я скон­цен­три­ровал­ся на жиз­ни в Windows с WSL, а чет­вертая была для адми­нис­тра­торов Linux.

 

nezha

Nezha — лег­ковес­ный и кра­сивый ана­лог Zabbix, выводит в веб‑панели свод­ку по сер­верам, их сис­темным ресур­сам и дру­гую информа­цию.

Ус­танов­ка отно­ситель­но неп­ростая: тебе понадо­бит­ся живой Docker, акка­унт на GitHub и домен­ное имя.

Для начала соз­дай при­ложе­ние на GitHub: перей­ди на GitHub Developer и наж­ми New OAuth App. При запол­нении фор­мы пот­ребу­ется ука­зать адрес домаш­ней стра­ницы при­ложе­ния (для это­го нужен будет домен), а в поле Authorization callback URL впи­сать <твой домен>/oauth2/callback. Затем соз­дай на стра­нице при­ложе­ния Client ID и Client Secret и запиши — боль­ше их пос­мотреть не получит­ся.

Те­перь выпол­ни в тер­минале сле­дующую коман­ду:

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install_en.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

Пос­ле ее выпол­нения откро­ется тек­сто­вое меню. Выбира­ем пер­вый пункт.

Меню
Ме­ню

Ус­тановоч­ный скрипт задаст нес­коль­ко воп­росов, в том чис­ле о пор­тах. По умол­чанию HTTP-сер­вер с интерфей­сом под­нимет­ся на 8008-м пор­те, а сер­вер для сбо­ра информа­ции от аген­тов — на 5555-м.

Го­тово, панель под­нялась. Мож­но ее открыть, вой­ти через GitHub и соз­дать новый сер­вер.

Админка
Ад­минка

Пос­ле соз­дания сер­вера ты уви­дишь в панели его сек­рет. Он‑то нам и нужен для уста­нов­ки аген­та.

Те­перь мож­но уста­новить сам агент. Он ста­вит­ся тем же скрип­том, что и панель, но надо выб­рать пункт 8. При уста­нов­ке у тебя спро­сят адрес панели и сек­рет, соз­данный на прош­лом шаге. Пос­ле вво­да этих дан­ных кли­ент сра­зу зарабо­тает, боль­ше ничего нас­тра­ивать не при­дет­ся.

Те­перь на глав­ной стра­нице появит­ся кар­точка с информа­цией сер­вера, а в панели мож­но открыть веб‑тер­минал. Он пол­ноцен­ный: под­держи­вает цве­та, обновля­ется в реаль­ном вре­мени и реаги­рует на спе­циаль­ные сочета­ния кла­виш.

Кнопка открытия терминала
Кноп­ка откры­тия тер­минала

В нас­трой­ках панели мож­но поменять и тему. На скрин­шоте ниже — тема Neko Mdui.

Nezha мне очень пон­равилась. Рекомен­дую как минимум по­тыкать демо.

 

AutoRegex

Ре­гуляр­ные выраже­ния — мощ­ней­ший спо­соб пре­обра­зова­ния тек­сто­вых дан­ных. Одна­ко без опы­та сос­тавле­ние регуляр­ки может отнять боль­ше вре­мени, чем она сэконо­мит. Встре­чай AutoRegex — ИИ‑генера­тор регуляр­ных выраже­ний из обыч­ных челове­кочи­таемых опи­саний на англий­ском.

Match if email is on gmail
Match if email is on gmail

Внут­ри у это­го сер­виса — OpenAI Codex, пуб­личная ней­рон­ка, которая пишет код по сло­вес­ному опи­санию.

С прос­тыми зап­росами AutoRegex справ­ляет­ся очень неп­лохо и поз­воля­ет здо­рово сэконо­мить вре­мя.

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

 

hunt

Hunt — это ути­лита для локаль­ного поис­ка фай­лов, аль­тер­натива стан­дар­тно­му locate. Судя по моему опы­ту, работа­ет Hunt быс­трее, чем find, fd и locate.

На­писа­на прог­рамма на Rust, а сле­дова­тель­но, ста­вит­ся через Cargo:

cargo install hunt

Здесь есть нес­коль­ко филь­тров и прос­тых нас­тро­ек, которых тем не менее дос­таточ­но для пов­седнев­ного исполь­зования. Вот некото­рые из них:

  • -e — искать толь­ко объ­екты с точ­но сов­пада­ющи­ми име­нами (по зап­росу ssh не будет най­ден sshd_config);
  • -i /path1,/path2 — исклю­чить из поис­ка опре­делен­ные пап­ки;
  • -h — вклю­чить поиск внут­ри скры­тых папок;
  • -s — не выводить пояс­нения, толь­ко спи­сок най­ден­ных фай­лов. Полез­но для скрип­тов;
  • -c — точ­ное сов­падение регис­тра.

Боль­ше под­робнос­тей — в репози­тории прог­раммы.

 

plow

Plow пред­назна­чен для наг­рузоч­ного тес­тирова­ния HTTP-сер­веров. Он осно­ван на Go-биб­лиоте­ке fasthttp, которая до десяти раз быс­трее стан­дар­тной реали­зации, что дела­ет его каким‑то ано­маль­но быс­трым, по мень­шей мере субъ­ективно.

Тест модуля http.server из Python 3
Тест модуля http.server из Python 3

Plow уме­ет отда­вать ста­тис­тику в реаль­ном вре­мени не толь­ко в окне тер­минала, но и в бра­узе­ре (по стан­дарту встро­енный сер­вер дос­тупен на 18888-м пор­те).

За­пуск воз­можен из Docker или уста­нов­кой из исходни­ков:

go install github.com/six-ddc/plow@latest
plow <args>

Аль­тер­натива:

docker run --rm --net=host ghcr.io/six-ddc/plow <args>

Ар­гумен­ты в целом ничего необыч­ного собой не пред­став­ляют: тут у нас стан­дар­тная для таких прог­рамм нас­трой­ка количес­тва потоков (-c), жела­емо­го количес­тва зап­росов (-n), вре­мени тес­та (-d 30s или -d 5m, нап­ример) и HTTP-метода (--method="GET"). Про дру­гие парамет­ры мож­но под­робно про­читать в справ­ке прог­раммы (--help). Цель переда­ется без спе­циаль­ных парамет­ров.

 

dooit

Для ведения спис­ка дел каж­дый исполь­зует что ему удоб­нее (я, к при­меру, завел при­ват­ный канал в Telegram, в котором есть толь­ко я, и шлю все дела туда). Если ты про­жива­ешь в тер­минале, гра­фичес­кие при­ложе­ния тебе чуж­ды и сооб­щать ком­пани­ям о пла­ниру­емых объ­емах закуп­ки кофе ты не хочешь, мож­но исполь­зовать локаль­ный менед­жер задач вро­де Dooit. Он хра­нит все толь­ко у тебя на жес­тком дис­ке, работа­ет толь­ко из тер­минала и до боли напоми­нает Vim, с тем лишь отли­чием, что пос­ледний не зак­рыва­ется по Ctrl-C.

Для уста­нов­ки нужен Git и Python вер­сии не мень­ше 3.10, что может быть проб­лемой при исполь­зовании в некото­рых окру­жени­ях. У меня в WSL пос­ледняя вер­сия Python все еще 3.8, так что для этой прог­раммы приш­лось рас­чехлить вир­туал­ку с более све­жей сис­темой.

Ес­ли у тебя всё есть, то ста­вит­ся Dooit все­го одной коман­дой:

python3 -m pip install git+https://github.com/kraanzu/dooit.git

За­пус­кает­ся по коман­де dooit в тер­минале.

 

ContainerSSH

За­нят­ная наход­ка — ContainerSSH, поз­воля­ющий незамет­но загонять SSH-кли­ентов в изо­лиро­ван­ные кон­тей­неры, при­чем эти кон­тей­неры соз­дают­ся пря­мо на лету, в момент под­клю­чения.

Пример от автора утилиты. Пользователь при подключении оказывается в контейнере
При­мер от авто­ра ути­литы. Поль­зователь при под­клю­чении ока­зыва­ется в кон­тей­нере

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Подписаться
Уведомить о
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии