На Баше
27 subscribers
8 photos
6 links
Трики на шелл-скриптах и не только
Download Telegram
Оказывается можно просканировать порты удалённой машины без всяких телнетов и нмапов:
echo > /dev/tcp/46.4.253.161/4242 && echo "Port is open"
Многие чекают ошибки форматирования YAML в WEB. А через командную строку это можно делать, например, так:
pip install pyyaml
python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml

Но совсем красиво покажет ошибки yamllint
ssl_protocols TLSv1.3;# Requires nginx >= 1.13.0 else use TLSv1.2
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparam.pem; # openssl dhparam -out /etc/nginx/dhparam.pem 4096
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
ssl_stapling on; # Requires nginx >= 1.3.7
ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

В даркнете оказывается и ползные сайты есть http://cipherlist.i2p/
Forwarded from Кавычка (Bo0oM)
Управляющий символ 7F (или в url браузера - %7f) предназначен для забивания ошибочно пробитых символов на семидорожечных перфолентах (поскольку обозначается пробитием дырочек во всех дорожках).

А стандартная ширина терминала составляет 80 символов, потому что именно столько влезало на перфокарту.

А CR LF (\r \n) сейчас бы сделали одним символом, но при печати листингов на терминале необходимо подать бумагу на 1 строку вперед и передвинуть каретку в левый край.

Символ \a - пикнуть спикером (BELL).
И это не шутка!
Forwarded from Veronica
#інфографіка
Іван Величко опублікував чудову візуальну інструкцію по SSH-тунелям.

Часто виникає необхідність "прокинути" порт з віддаленого сервера чи мережі собі на машину або навпаки — зробити сервіс з локальної машини чи навіть локальної мережі доступним з віддаленого сервера.

👷 Як правильно сконструювати опції -L та/або -R для команди ssh для різних випадків — в картинках.

via HackerNews
Передача списка файлов в пайп с последующей циклической обработкой каждого из них на примере загрузки образов с локального диска в докер.
ls * | while read image; do docker load < $image; done
👍1
Пока экспериментирую с Jenkins в кубере и есть необходимость постоянно сбрасывать зашедуленые джобы, помогает команда Jenkins.instance.queue.clear()
Которую можно вбить в Jenkins -> Manage Jenkins -> Script Console
А так оно показвает ещё и список убиваемых пайплайнов, хотя и плохочитаемый.
import hudson.model.*
import jenkins.model.Jenkins

def q = Jenkins.instance.queue

q.items.findAll { it.task.name.startsWith('part') }.each { q.cancel(it.task) }
В ChatGPT есть режим терминала 🫣
Запустим там Doom?
Подглядел тут в скриптике запуска sonarqube такой вот код:

if [ "${1:0:1}" != '-' ]; then
exec "$@"
fi

Если вам знаком слайсинг строк и массивов, то вы можете догадаться, что данный код проверяет первый символ в строке параметров запуска скрипта на наличие минуса. Если его нет, то на запуск передаётся вся строка аргументов запуска скрипта.
Наткнулся на странную конструкцию, которую раньше не встречал
some || :

В Bash символ ":" является командой-заглушкой, которая не выполняет никаких действий и всегда возвращает успешный статус выхода (0). Эта команда может использоваться для создания пустых циклов, игнорирования ошибок или просто в качестве заполнителя, когда нужно указать какую-то команду, но реально выполнять ее не нужно.

Например, если вы хотите создать бесконечный цикл, вы можете использовать следующую конструкцию:

while :
do
echo "Бесконечный цикл"
done

Также, вы можете использовать эту команду для игнорирования ошибок при выполнении какой-то команды, как в первом примере.
Не так давно столкнулся с проблемой, что не могу воспользоваться утилитой netstat что бы посмотреть прослушиваемые сетевые порты.

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

lsof -i:10250

Если порт не известен заранее, то его можно не указывать а попросить grep отфильтровать нужное по имени процесса или другим известным полям.
Наткнулся на утилиту ondir. Не смог сходу придумать, что бы мне автоматизировать на переход в каталог и потому пошёл смотреть какие есть кейсы. На гитхабе проги приведёт кейс, который я когда-то встречал, когда отдавал настроенный сервер заказчикам.
Что бы не заморачиваться с отдельными юзерами для редактирования веб-каталога на сервере и для отображения контента можно повесить скрипт, который будет расширять права на файлы только в тот момент пока в каталоге находится пользователь. Удобно же )
Ставим ondir и прописываем в файл ~/.ondirrc

enter /home/athomas/public_html
umask 022

leave /home/athomas/public_html
umask 077

А вот кейс с виртуаленвом реально полезный уже почти всем.

enter ~/Projects/([^/]+)
if [ -r .venv ]; then
. ./.venv/bin/activate
fi

leave ~/Projects/([^/]+)
deactivate > /dev/null 2>&1
👍1
#docker
Снова понадобилось распотрошить один из образов что бы отдебажить приложение, которое в него зваёрнуто.

Достать Dockerfile из образа можно парой простых команд:
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 nginx:latest
The owner of this channel has been inactive for the last 11 months. If they remain inactive for the next 19 days, they may lose their account and admin rights in this channel. The contents of the channel will remain accessible for all users.