bashdays | Unsorted

Telegram-канал bashdays - Bash Days | Linux | DevOps

22119

Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov

Subscribe to a channel

Bash Days | Linux | DevOps

⁉️ Хотите настроить гибкий роутер на базе Linux-машины, но не знаете, с чего начать?
Сталкиваетесь с трудностями в настройке маршрутизатора и предоставлении доступа в Интернет для локальной сети?
Чувствуете, что вам не хватает знаний для уверенной работы с сетевыми настройками?

❗️Это поправимо! Представьте, что вы знаете, как правильно настроить маршрутизатор, предоставлять доступ в Интернет для локальной сети и настраивать сетевой фильтр. Ваши навыки востребованы и вы уверенно справляетесь с любыми задачами сетевой конфигурации.

Присоединяйтесь к открытому вебинару 12 августа в 19:00 мск и сделайте этот прыжок в будущее!

🎙 Спикер Николай Лавлинский — PhD Economic Sciences, опытный разработчик, автор курсов по администрированию и оптимизации веб-приложений, ведущий каналов «Ускорение сайтов» и «Поддержка сайтов».

➡️Запишитесь на вебинар и прокачайте свои навыки работы с сетевыми настройками в Linux: https://vk.cc/cz4hnG

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Bash Days | Linux | DevOps

Научись находить уязвимости быстрее злоумышленников.

Практикум по управлению уязвимостями от Positive Technologies
.

Неинформативные отчеты, незамеченные критические уязвимости, сложности в общении ИБ и IT – это только часть проблем, мешающих организовать полноценный процесс управления уязвимостями. С этими и другими задачами мы разбираемся на курсе.

Наша цель – передать тебе свой опыт в построении эффективного процесса управления уязвимостями.

Что тебя ждёт на практикуме?

·      16 часов онлайн-занятий: получишь знания от ведущих экспертов.
·       8 часов практики на стенде MaxPatrol VM: отточишь полученные знания на практике.
·    12 часов общения с экспертами: закрепишь полученный опыт.

8 сентября стартует новый поток курса.
Регистрируйся сейчас и получи бесплатный доступ к вводной части курса.

Читать полностью…

Bash Days | Linux | DevOps

Какие три характеристики лежат в основе эффективной IT-инфраструктуры?

🔵Наблюдаемость
🔵Безопасность
🔵Производительность

Но при нехватке профессионализма эти три характеристики могут легко превратиться в три проблемы.

О том, как совершенствовать производительность, укреплять безопасность и повышать наблюдаемость систем вы узнаете на конференции «OTUS CONF: Инфраструктура».

⭐️Спикеры – эксперты из ведущих компаний: девопс-инженер, технический директор и архитектор

Важно: перед конференцией мы хотим узнать, что волнует вас на самом деле.
Поэтому скорее переходите по ссылке внизу и заполняйте форму с вопросами спикерам. На самые интересные вопросы ответим в конце события!

🌟Бонус! Участников конференции ожидают полезные призы. Подробности – на странице мероприятия.

Приглашаем девопс-инженеров, фулстек-разработчиков, системных и сетевых админов. архитекторов ПО, менеджеров продуктов и проектов.

8 августа, 19:00 МСК
Участие бесплатное

➡️ Записаться на конференцию

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Bash Days | Linux | DevOps

Ой чо я вам принёс ребят…

очередную хуиту 🥳

Называется эта хуета QEMU-QuickBoot и написана она на Bash.

Скрипт создан для упрощения развертывания QEMU виртуалок с интуитивно понятным интерфейсом. Короче для всех любителей потыкать хомяка мышкой.

Штука позволяет быстреьнко создавать и загружать виртуальные машины используя физические устройства либо исошники, имейджи и т.п. BIOS/UEFI вся хуйня.

В зависимостях там Zenity, хуй знает чо это такое, но нужно. Предварительно это надо поднять через апт инсталл если совсем на пол шестого.

Потыкал, чето даже работает. Загнивающий запад с реддита пищит, ну хуй знает, попробуем...

Репка со всеми подробностями тут 👇

https://github.com/GlitchLinux/QEMU-QuickBoot/

ps: в любом случае можно форкнуть спиздить и использовать в своих поделках, даж реверсить ничо не надо, скрипты, хули…

tags: #utilites

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

🏫 Как оптимизировать работу на компьютерах в школах и университетах?

Яндекс создал специальный Браузер для образования с учётом потребностей учебных заведений. Более 1000 образовательных учреждений уже используют его. В браузере доступны дополнительные функции, которые помогут оптимизировать работу 👩🏻‍🏫

О том, как его установить и настроить на компьютерах Windows и Linux, расскажут на онлайн-вебинаре, который состоится 8 августа в 11:00 по Мск. Зарегистрироваться на него можно здесь ⬅️

Читать полностью…

Bash Days | Linux | DevOps

Привет, пока я летаю, рекомендую обратить внимание на эту софтину.

✔️ goManageDocker

Это инструмент для управления docker’ом через интерфейс командной строки.

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

Обычно после отпуска нахрен забываешь весь этот чудо docker синтаксис и приходится вновь лезть в интернет за мануалом — докер для чайников.


Ну дак вот GMD всю эту работу берет на себя, тыкай горячие кнопки и рули своими образами и контейнерами.

Прям мастхевная хуёвина для каких-то своих пет-прооектов. Для разработчиков прям пушка, поставил локально и не ебись с консолькой.

Ставится элементарно:

bash -c "$(curl -sLo- https://raw.githubusercontent.com/ajayd-san/gomanagedocker/main/install.sh)"


Репка тут: https://github.com/ajayd-san/gomanagedocker

tags: #utilites

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

А вот и долгожданное продолжение от © Tagd Tagd.

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

Погнали 👇

Хотел писать про другое в ssh, но без блока Match ну никак не получается.

Для начала лирическое отступление. Вы установили ключи, отключили парольную аутентификацию, но вас все равно брутят.

Плохие парни, что, дебилы? Не видят, что у вас ключи стоят? Все они видят. Просто есть блок Match, с помощью которого можно задавать различные настройки разным пользователям.

PasswordAuthentication no
PubkeyAuthentication yes
Match User bashdays
MaxSessions 10
MaxAuthTries 10
PasswordAuthentication yes


В этом примере парольная аутентификация запрещена для всех, кроме пользователя bashdays.

Скажу по секрету, я тоже делаю настройки для пользователя последнего шанса.

У меня на флэшке есть ключи и putty. Потому что не знаешь, когда и откуда понадобится порулить. Но я допускаю, что и флэшки может не оказаться.

Вот тогда пригодится такой пользователь. Только чтобы пользователя быстро не нашли, я беру логин, сложнее, чем admin, Root student или pi.

Ну и парольную фразу задаю больше 20 символов. К статейке должен быть прикреплен архив с логинами реальных простукиваний.

В первой колонке - количество стуков для данного пароля. Реальная база, собранная с одной машины, с системой защиты от переборов за пару лет.

Если вы нашли свой логин в этой базе - повод задуматься. Логин "_" в базе - замена пользователя пробел.

Да, раньше можно было и такое. Благо сейчас эту дыру закрыли.

Что-то я отвлекся.

В блоке MATCH доступны ключевые слова User, Group, Host, Address, LocalAddress, LocalPort, RDomain.

Первые четыре применяются наиболее часто. Если в блоке MATCH несколько ключевых слов, они объединяются по AND.

Также возможно использование шаблонов.

Например:

Match User *bashdays*, guest*
Address 192.168.0.0/24,!192.168.0.27


Перечисления идут через запятую БЕЗ ПРОБЕЛОВ. Допускается несколько блоков MATCH.

Ну, и последний вопрос. Раз конфиг у нас с условием, как его проверять?

sudo sshd -T -C user=bashdays,addr=192.168.0.27


Выдаст на stdout конфиг для указанного пользователя с указанного адреса.

Обратите внимание. здесь ключевые слова немного отличаются:

«addr», «user», «host», «laddr», «lport», «rdomain» и отсутствует группа.

man sshd
man sshd_config


продолжение следует...

tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Тадам! SSH часть вторая by Tagd Tagd.

Сначала покажется что ты это читал, но это не так, контекст другой.

Сегодня мы рассмотрим как запретить пользователям добавлять свои ключи.

Если пользователь подключит свой ключ - меняй пароль, не меняй - пофигу.

БЕЗДУМНАЯ НАСТРОЙКА SSH по SSH МОЖЕТ ПРИВЕСТИ К ПОТЕРЕ КОНТРОЛЯ НАД СЕРВЕРОМ.

Чтобы минимизировать риски, я подключаюсь по ssh двумя сессиями.

В одной правлю sshd_config, другую оставляю для возможного отката при косяках, поскольку при перезапуске sshd с измененным конфигом текущие сессии сохраняются.

Наличие физического доступа к консоли - приветствуется.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.2


Вы уже знаете, как настроить ключи. Они прописаны и работают!!!

Допустим в файле /etc/ssh/sshd_config

PubkeyAuthentication yes

# перед изменениями рекомендую включить парольную аутентификацию

PasswordAuthentication yes
PermitRootLogin prohibit-password


Там же есть опция AuthorizedKeysFile и обычно она закомментирована. Она указывает, где находится файл аuthorized_кeys.

делаем так:

sudo test -f /etc/ssh/authorized_keys && sudo mv /etc/ssh/authorized_keys /etc/ssh/authorized_keys.1 

sudo mkdir /etc/ssh/authorized_keys
sudo cp "/home/${USER}/.ssh/authorized_keys" "/etc/ssh/authorized_keys/${USER}"
sudo chown -R root:root /etc/ssh/authorized_keys
sudo chmod -R u=rwX,go=rX /etc/ssh/authorized_keys


в файле /etc/ssh/sshd_config

AuthorizedKeysFile /etc/ssh/authorized_keys/%u


перезапускаем sshd:

systemctl restart sshd


Всё. Будут действовать только ключи из из папки /etc/ssh/authorized_keys в файле с именем пользователя, и подключить их может только root.

После успешного подключения по ключу:

PasswordAuthentication no
systemctl restart sshd


Кстати, протестировать и посмотреть все опции sshd_config можно командой sudo sshd -T

Это так, к сведению.

tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Такс, всем желающим вводные разослал, проверяйте.

А мы уже начали с ребятами потихоньку преисполняться.

Кто не успел вписаться в движ или проебал сообщение, проверь или напиши в бота @linuxfactorybot, разрулим.

Напомню что с 1 сентября для новеньких, ценник внезапно в пару раз подрастет. Сейчас можно сказать это пилотный запуск и летние скидки.

Хорошей тебе рабочей недели 🫥

Читать полностью…

Bash Days | Linux | DevOps

Мир DevOps состоит из непрерывного обучения и совершенствования навыков. Новичкам часто приходится тратить много времени на поиск качественных и полезных материалов. Чтобы помочь, коллеги из @Selectel решили поделиться рекомендациями ⭐️

В подборку вошли материалы для углубления знаний и улучшения практических навыков в DevOps: книги, плейлисты, каналы и курсы. Переходите по ссылке, чтобы ознакомиться, а потом подписывайтесь на их канал. Там каждый день выходят топовые IT-материалы в удобном формате.

Реклама АО «Селектел». ИНН: 7810962785
Erid: 2VtzqwPKueJ

Читать полностью…

Bash Days | Linux | DevOps

Хочешь войти в мир DevOps, но не знаешь с чего начать? 🚀

Приглашаем тебя на бесплатный курс по Git – идеальный старт для начинающих!

Git - это основной инструмент для DevOps и разработчиков, без которого невозможно представить современную работу.

🔸 Что ты получишь за 10 занятий и 2 недели?

🔧 Понимание базовых терминов: репозиторий, коммит, пулл-реквест, мердж-конфликт.
🔧 Навык внесения изменений в удаленный репозиторий.
🔧 Умение создавать пулл-реквесты и работать с ними.
🔧 Решение мердж-конфликтов.
🔧 Навык отката изменений.
🔧 Уверенность в работе с Git.
Этот курс поможет тебе уверенно шагнуть в мир DevOps и разработки! 🖥

📌 Узнать больше и записаться можно в канале DevOps фабрики.

/channel/devops_factory/49

Реклама. ООО Байкалтим, ИНН: 3851008933, erid: 2VtzqvWY7zi

Читать полностью…

Bash Days | Linux | DevOps

Нижний Новгород, встречаемся 24 июля на IT Talk by Sber!

Мы проведём технологический митап для всех IT-support специалистов и экспертов надёжности. Поговорим об инженерных процессах, улучшении качества IT-поддержки и автоматизации работы с помощью программных решений.

Спикеры и темы ⤵️

✔️ Дмитрий Цуканов, руководитель команды сопровождения SmartContact — «Отказ от Legacy-стандартов. Как мы строили свой SRE?»

✔️ Молчанов Василий, ведущий инженер по сопровождению, Баюсова Ирина, исполнительный директор — «ML OPS: как мы используем ML для улучшения систем мониторинга?»

✔️ Руслан Насимов, руководитель Центра управления сетью Сбера — «Как управлять сетью крупнейшей компании?»

✔️ Наталья Ерютова, корпоративный тренер Сбера — «Управление собой для IT-шников».

Адрес: co-working Garage, г. Нижний Новгород, Октябрьская, 35.

Регистрируйтесь и приходите 24 июля в 18:00! ⏰

Читать полностью…

Bash Days | Linux | DevOps

Курс по Kubernetes для администраторов. Видеокурс по Docker в подарок⤵️

Привет! На связи команда Слёрма, учебного центра для айти-специалистов middle+.

22 июля мы запускаем 12-й поток нашего знаменитого базового курса по Kubernetes. Если вы давно хотели войти в команду с k8s — эта новость для вас😎

KUBERNETES БАЗА

Вы изучите:

основы работы с Kubernetes, устройство кластера и отказоустойчивость;
продвинутые абстракции в Kubernetes;
DNS в кластере;
подключение системы хранения данных на примере Ceph;
CI/CD в Kubernetes.

Курс построен так, чтобы после теории, практики и прохождения сертификации вы были полностью готовы к работе с Kubernetes в продакшене.

🎁 При оплате обучения до 22 июля — видеокурс по основам Docker в подарок🎁

🔗 ПРОЙТИ ПЕРВЫЕ ТРИ УРОКА БЕСПЛАТНО

Реклама ООО «Слёрм» ИНН 3652901451

Читать полностью…

Bash Days | Linux | DevOps

Новый бесплатный курс об информационной безопасности🔒

В Академии Selectel рассказываем, с помощью каких инструментов защищаться от киберугроз. Внутри курса — инструкции по настройке средств защиты, советы по их использованию и интересные задачи для проверки знаний.

В рамках курса вы:
🔹 проверите защищенность вашего сервиса,
🔹 узнаете о распространенных атаках полным перебором и о методах противодействия им,
🔹 ознакомитесь с ИБ-инструментами на реальных примерах.

Переходите в Академию Selectel (ссылка), чтобы начать изучение курса прямо сейчас ➡️ https://slc.tl/0cih1

Реклама АО «Селектел». ИНН: 7810962785
Erid: 2VtzqxWGe9f

Читать полностью…

Bash Days | Linux | DevOps

Отвлекитесь от экрана — оторвитесь на ИТ-пикнике 17 августа

У фестиваля больше 17-ти ИТ-партнеров. Вас ждут воркшопы, лекции от спикеров известных компаний, нетворкинг, выступления топовых музыкантов и даже детская зона. Будут TRITIA, Дайте танк (!), Драгни, Найк Борзов, Нееет, ты что и еще один секретный хедлайнер. Вы же не пропустите такое событие?

Успейте зарегистрироваться

erid:2Vtzqv3t6N5
Реклама. АО "Тинькофф Банк", ИНН 7710140679, лицензия ЦБ РФ № 2673

Читать полностью…

Bash Days | Linux | DevOps

Есть у меня гит репка с Bash скриптами на все случаи жизни, появилась необходимость при очередном коммите, проверять измененные скрипты с помощью shellcheck и дизейблить коммит если я накосорезил.

Сейчас автоматизируем

Про shellcheck я писал отдельный пост. Короче он у тебя должен быть установлен.

Дальше создаем файл .git/hooks/pre-commit в репозитории, в котором нужно запускать проверку и пишем в него:

#!/bin/bash

bash_scripts=$(find . -name "*.sh")

for script in $bash_scripts; do
shellcheck "$script"
if [ $? -ne 0 ]; then
echo "Shellcheck failed on $script. Commit aborted."
exit 1
fi
done

exit 0


Хуй знает, работает этот код или нет, я давно им не пользовался, главное тут концепт.

Делаем это исполняемым:

chmod +x .git/hooks/pre-commit


Теперь перед каждым коммитом будет выполняться shellcheck для всех Bash-скриптов в репозитории. Если shellcheck найдет ошибки, твой коммит не пройдет, пока не пофиксишь.

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

Если у тебя скрипты имеют другое расширение, соответственно меняешь его в переменной bash_scripts.

Помню в компании была подобная штука на проверку puppet кода, пиздец, я там орал как белуга не понимая что эта тварь от меня хочет. По итогу когда я возглавил отдел, выкосил это дермище вместе с puppet.


Бонусом адаптация под проверку ansible плейбуков:

#!/bin/bash

playbooks=$(find . -name "*.yml" -o -name "*.yaml")

for playbook in $playbooks; do
ansible-lint "$playbook"
if [ $? -ne 0 ]; then
echo "ansible-lint failed on $playbook. Commit aborted."
exit 1
fi
done

exit 0


В зависимостях — нужно установить ansible-lint.

С помощью pre-commit можешь любую хуйню замутить и усложнять себе жизнь в геометрической прогрессии, А вообще pre-commit нахуй не нужен, он помещает тебя в рамки и ты теряешь свободу в творчестве.

Пользуйтесь.

tags: #bash #git

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

🐿 Бурундук ебал фундук. Короче.

Я привык что на винде, касперский регулярно предлагает мне избавиться от дубликатов файлов. Никогда этой хуйнёй не пользовался, но тут чет скучно стало, решил потыкать. Потыкал, понравилось.

Минусы иметь винт на 10 терабайт — повторно качаешь взрослые фильмы, которые уже качал 3 года назад, но найти не можешь.

Ну и понеслась…

А на linux чо делать? Есть такая штука — fdupes называется.

Натравливаешь её на нужный каталог и получаешь кайф:

fdupes -r ~/Downloads


По выхлопу:

./music/Blind Guardian Bright Eyes.mp3
./mp3/Blind Guardian Bright Eyes.mp3


Опа, в папках music и mp3 идентичные файлы, значит один из них точно можно ёбнуть!

Но чо руками что ли это делать? Неа!

fdupes -d ~/Downloads/*


Тебе вывалит интерактивный режим:

Set 1 of 1:

1 [ ] /tmp/Downloads/music/Blind Guardian Bright Eyes.mp3
2 [ ] /tmp/Downloads/mp3/Blind Guardian Bright Eyes.mp3


Но вообще если не боишься, запускай:

fdupes -r -d -N ~/Downloads/*


Как говорится, если ты не знаешь что у тебя хранится на диске — значит оно тебе нахуй не нужно. Так что посмелее!


После отработки получаем:

   [+] ~/Downloads/music/Blind Guardian Bright Eyes.mp3
[-] ~/tmp/Downloads~/mp3/Blind Guardian Bright Eyes.mp3


В папке ~/Downloads/music файл остался, а вот в в папке mp3 похерился.

Работает эта штука - Очень шустро! И зашла она мне прям люто, аналогично как ncdu из этого поста.

Ставится элементарно:

apt install fdupes


+ у ней дофига ключей, вызывай help и изучай, чо там только нет.

Ссылка на репку:
https://github.com/adrianlopezroche/fdupes

Но есть алтернативы шутрее:

Бенчмарки 8vCPU/30G (54,000 files 17Gb)

fdupes takes 2m 47.082s
findup takes 13.556s
jdupes takes 0.165s


Либо наш любимый find со своей кишкой из аргументов. Выбор за тобой!

Давай, увидимся!

tags: #utilites #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Здрасти, здрасти, давно не виделись. Сегодня… Аааа по ходу дела разберемся, погнали!

Есть у меня текстовый файл, вида:

bashdays.ru/1
bashdays.ru/2
bashdays.ru/3
bashdays.ru/4
bashdays.ru/5


И есть условный bash скрипт, который должен прочитать этот файл и присвоить значения переменным, чтобы получилось так:

$1 = bashdays.ru/1
$2 = bashdays.ru/2
$3 = bashdays.ru/3
$4 = bashdays.ru/4
$5 = bashdays.ru/5


Сначала прикидываем в голове алгоритм — читаем файл построчно, цикл вся хуйня, делаем что-то на подобии массива и дальше по накатанной. Это всё понятно, классика.

Но решим мы её как обычно через жопу:

#!/bin/bash

n=$(<bashdays.txt)
set -- $n

echo $1 # bashdays.ru/1
echo $2 # bashdays.ru/2
echo $3 # bashdays.ru/3
...
echo $@ # bashdays.ru/2 bashdays.ru/3 ...


Охуенно? ДА! Теперь давай разберем чо происходит.

В переменную «n» зачитываем рэпчанский текстовый файл bashdays.txt с нашим списком урлов.

Как сказал Паук — Рэп это кал!

Это так, к слову, если любишь рэп — ничо против не имею.

Конструкция $( < ) аналогична команде «cat», выполняет замену с подстановкой == $(cat bashdays.txt).

По итогу переменная «n» содержит в себе весь текст из файла bashdays.txt

Ну а магическая поебень set -- $n устанавливает позиционные параметры на основе содержимого переменной «n». То есть решает нашу задачу.

Символ «--» перед set = сброс всех предыдущих позиционных параметров и установка новых.

Можно конечно сделать проще, но проще это не для нас:

cat bashdays.txt | xargs ./script.sh


Тут содержимое файла bashdays.txt передается в скрипт и скрипт получает эти параметры в качестве аргументов.

#!/bin/bash

echo $1
echo $2
echo $3
echo $@


Итого получаем аналогичную картинку:

bashdays.ru/1
bashdays.ru/2
bashdays.ru/1 bashdays.ru/2 ...


Такие вот дела, накидывайте в комменты еще варианты упоротых решений, простые не интересны.

tags: #bash

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Последние новости — В Москве госпитализировали мужика, который не смог настроить GoodbyeDPI и похавал без ютуба.

А ты настроил? 😲

Вот так вот и живем, а сегодня Tagd Tagd снова в тренде 👇



Сегодня (01.08.2024) запускаю скрипт архивирования и получаю сообщение об ошибке:

bash: declare: 08: слишком большое значение для основания (неверный маркер «08»)


Скрипт, написанный и работающий с 02.02.24г вдруг перестал работать.

Чудеса?

Лезу, смотрю, где ошибка.

declare -i MON=$(date +%m)


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

Начинаю выяснять. Оказывается, числа, начинающиеся с "0", а bash считает восьмеричными. Понятное дело, 08 для восьмеричной системы великовато.

Ну, решений проблемы море.

1. Классический вариант

declare -i MON=$((10#$(date "+%m")))


10# - система счисления. Роман об этом уже писал. Но, читаемость (понимаемость) строки - так себе.

2. Более читаемый

declare -i MON=$(date "+%m"|sed 's/^0//')


Просто уберем ведущий "0" и проблема решена.

3. Решение на awk.

Пробую пробую на своей машине:

declare -i MON=$(awk 'BEGIN{m=+strftime("%m");print m}')


Работает. Встраиваю в скрипт - ошибка

awk: line 2: function strftime never defined


Поверяю версии awk. У меня на машине gawk, на серваке mawk.

Блин, это уже вызов. mawk - не gawk и у него отсутствуют функции времени и даты (ну, по крайней мере в той версии).

Но, решение есть.

declare -i MON=$(date "+%m"|awk '{print $1+=0}')


Странная инструкция $1+=0 позволяет преобразовать строковое представление числа в первой колонке в числовое.

Ну, собственно все. В коментах надеюсь увидеть другие варианты решения проблемы.

tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Здрасти, я потихоньку прихожу в себя после всех этих поездок. К концу недели глядишь раскачаюсь и войду в привычный ритм. Ну а пока читаем пиздатые посты от Tagd Tagd 👇

Сегодня мы рассмотрим как ДЛЯ СЕБЯ запилить SOCKS VРN через ssh.

Допустим у вас есть виртуалка на зарубежном хостиге с ssh. (на pq 450р/мес.)

А вы человек добрый, почти как я, и решили поделиться счастьем с женой и детьми.

Но давать доступ к консоли страшно, вдруг что-нибудь сломают.

БЕЗДУМНАЯ НАСТРОЙКА SSH по SSH МОЖЕТ ПРИВЕСТИ К ПОТЕРЕ КОНТРОЛЯ НАД СЕРВЕРОМ.

Чтобы минимизировать риски, я подключаюсь по ssh двумя сессиями. В одной правлю sshd_config, другую оставляю для возможного отката при косяках, поскольку при перезапуске sshd с измененным конфигом текущие сессии сохраняются.

Наличие физического доступа к консоли - приветствуется.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +%Y%m%d-%H%M%S)


Вы уже знаете, как настроить ключи. И они прописаны и работают!!!

Есть несколько способов безболезненно раздать vрn на свою семью. В файле /etc/ssh/sshd_config

Match User bashdays_tagd
# или Match Group proxy
MaxAuthTries 3
MaxSessions 0
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
allowtcpforwarding yes
#--


sudo service sshd restart


Если иcпользуете группу — не забудьте добавить в нее пользователя:

sudo usermod -aG proxy bashdays_tagd


При параметре MaxSessions 0 будет запрещен доступ к shell и sftp. Но разрешен проброс портов.

На клиенте:

ssh -N -D 5000 bashdays_tagd@ssh.host.name


После запуска и ввода фразы ключа программа ничего не выводит, а потом, при использовании начинают сыпаться какие-то ошибки, ну и ладно. Если прервать команду, соединения в браузере разорвутся.

В firefox:

Настройки -> Настройка сети -> Параметры соединения

Ручная настройка прокси. SOCKS5. 127.0.0.1 порт 5000.

Галка — Отправлять DNS-запросы через прокси при использовании SOCKS 5
или:


ssh -N -D 192.168.1.57:5000 bashdays_tagd@ssh.host.name


Если ваш адрес 192.168.1.57 и вы, человек еще более добрый чем я, и решили поделиться VРN со всей своей локалкой (в которой сидит еще и тёща с тестем):

В настройках firefox нужно будет заменить 127.0.0.1 на 192.168.1.57

Продолжение следует...

tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

100% кешбэк за Kubernetes и базы данных в Selectel

Разверните свой проект в Selectel и пользуйтесь PaaS-сервисами с кешбэком. Подключите отказоустойчивые и масштабируемые кластеры Managed Kubernetes и облачных баз данных, а мы вернем бонусами 100% от суммы за первые 30 дней использования сервисов.

Selectel — ведущий российский провайдер IT-инфраструктуры с облаком собственной разработки. Лидер среди провайдеров Kubernetes и облачных баз данных, по версии CNews.

Преимущества PaaS-сервисов в Selectel:
▪️ Отказоустойчивость. Гарантируем доступность и стабильную работу сервисов за счет отказоустойчивого кластера.
▪️ Масштабируемость. У нас всегда есть ресурсы для масштабирования и роста ваших проектов.
▪️ Экосистема продуктов. 40+ сервисов для создания проектов любого масштаба и сложности.
▪️ Простое управление. Работайте с кластерами через панель, Terraform-провайдер или API.

Участвуйте в акции и верните 100% затрат на Kubernetes и базы данных. Подробные условия по ссылке: https://slc.tl/rl6wi

Реклама АО «Селектел». ИНН: 7810962785
Erid: 2VtzqwWZojg

Читать полностью…

Bash Days | Linux | DevOps

Стоит ли переезжать в другую страну ради карьеры? И если да, то с какими сложностями придётся столкнуться?

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

Бесплатно, 1 августа в 19:00 мск

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

Спикеры:
◾️ Полина Димова — старший рекрутер в Яндексе
◾️ Викентий Экгарт — тимлид фронтенд-разработки в стартапе

Зарегистрироваться на онлайн-событие

Читать полностью…

Bash Days | Linux | DevOps

Онлайн-дискуссия «В поисках DevOps-ов – как найти и не потерять лучших»

Как найти DevOps’а, владеющего необходимыми навыками и знаниями на профессиональном уровне? Этот вопрос актуален для многих компаний, которые занимаются развитием собственных продуктов и сталкиваются с нехваткой кадров.

Обсудим
✔️Кто такие DevOps-ы и как выглядит рынок труда сегодня
✔️Чек-лист знаний и навыков хорошего DevOps-а
✔️Как найти/воспитать специалиста, готового брать ответственность за комплексную задачу
✔️Искусство собеседования – как выявить и привлечь лучших
✔️С какими инфраструктурными вызовами сталкиваются DevOps-ы

Участники дискуссии

👨🏻‍💻 Василий Колосов, технический директор
Smartex
👨🏻‍💻Игорь Латкин, соучредитель и системный архитектор
KTS

🗓 25 июля |17:00

Подробности и регистрация по ссылке>>

Читать полностью…

Bash Days | Linux | DevOps

Неделя только началась, а я уже заебался.

Как и обещал, публикую полезнейший пост от нашего коллеги Tagd Tagd 👇

Сегодня мы рассмотрим пару фишек настройки ssh среднего уровня.

БЕЗДУМНАЯ НАСТРОЙКА SSH по SSH МОЖЕТ ПРИВЕСТИ К ПОТЕРЕ КОНТРОЛЯ НАД СЕРВЕРОМ.

Чтобы минимизировать риски, я подключаюсь по ssh двумя сессиями.

В одной правлю sshd_config, другую оставляю для возможного отката при косяках, поскольку при перезапуске sshd с измененным конфигом текущие сессии сохраняются.

Наличие физического доступа к консоли - приветствуется.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.1


Вы уже знаете, как настроить ключи. Они прописаны и работают!!!

Допустим в файле /etc/ssh/sshd_config

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password


Там же есть опция AuthorizedKeysFile и обычно она закомментирована. Она указывает, где находится файл аuthorized_кeys.

В нём хранятся публичные ключи пользователей, которым разрешено ssh.

Обычно это ~/.ssh/authorized_keys

делаем так:

sudo cp ~/.ssh/authorized_keys /etc/ssh/authorized_keys
sudo chown root:root /etc/ssh/authorized_keys
sudo chmod 644 /etc/ssh/authorized_keys


а в файле /etc/ssh/sshd_config

AuthorizedKeysFile %h/.ssh/authorized_keys /etc/ssh/authorized_keys


перезапускаем sshd:

systemctl restart sshd


Всё. С ключом, прописанным в /etc/ssh/authorized_keys можно заходить
под любым пользователем, у которого прописан вменяемый shell, включая root!!!

Наличие ключей в домашней папке пользователя теперь необязательно.

Может быть удобно, если рулить сотней пользователей. Ну, или как дырочка.

Лучше, конечно задать:

PermitRootLogin no


Кстати, при данной опции попытки перебора по root попадают в log, но не отмечаются в lastb. Это так, к сведению.

Продолжение следует...

tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Ёпта! Работа над Linux Factory идет полным ходом, всем кто принес мне свой емейл в бота, все котики и записаны.

Кому я еще не ответил — отвечу, ничо не потерялось. Я тут в одну харю ща всё разгребаю и отбиваюсь от менеджеров тибанка с помощью их же разработки — автоответчика Олега.

В начале следующей неделе буду рассылать инвайты в закрытый канал, ну и инструкции чо каво делать.

✔️ Так, теперь по сегодняшней теме — Awk и пасхальное яйцо.

Если запустить:

awk --nostalgia


Всё нахуй упадет с ошибкой — awk: bailing out near line 1 Aborted

nostalgia это не документированная опция, которая была добавлена в версии 2.11 beta и сопровождалось странным комментарием:

undocumented feature, inspired by nostalgia, and a T-shirt


Чо за херня?

Ранние версии awk аварийно завершались при различных эксепшенах выводя подобную ошибку. Утилиту отладили, но осталась — ностальгия. Но кто знает, возможно это ключ к ответу на главный вопрос жизни.

Еще из интересного. Gawk использует GNUтое расширение предоставляемое функциями разбора аргументов командной строки. При активации этого расширения доступен специальный синтаксис -W long_option.

awk -Wnos
awk -Wcopy


Эти команды аналогичны:

awk --nostalgia
awk --copyright


Странное конечно поведение учитывая содержимое этого поста.

Ну да ладно, хуй с ним. Чо только не придумают…

Хороших тебе предстоящих выходных и береги себя.

Кстати кто сегодня винду обновил и получил синьку, самое быстрое решение опубликовал Дима в полезняшках. Репостить не буду, кому надо сами сходите посмотрите.


Ааа еще забыл, Tagd Tagd написал нам две пиздатых статьи, на днях выложу. Спасибо Tagd Tagd с меня бонусы!

tags: #linux #bash

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Magic SysRq в Linux

Чо эт такое? Ооо брат, это комбинация клавиш которая позволяет выполнять низкоуровневые команды независимо от состояния системы.

Тема достаточно полезная, прочитай, пригодится.

Ядро реагирует на такие команды моментально, независимо от того, что оно делает в данный момент. При условии, что само ядро не заблокировано.

Чтобы послать ядру Magic SysRq, нужно нажать ALT+SysRq+key.

А где взять клавишу SysRq? На современных клавиатурах это клавиша PrintScreen.

А какой key нажимать в конце? Ну например:

+b - немедленная перезагрузка системы
+o - выключение системы
+s - синхронизация всех файловых систем
+u - перемонтирование файловых систем в read only
+r - возвращение управления с клавиатуры X-сервера к консоли
+k - завершение всех процессов на текущей консоли

В моем случае, чтобы послать эту комбинацию клавиш в Virtualbox, мне пришлось нажать — Правый ALT+PrintScreen+h.

После нажатия этой комбинации, в терминале выводится справка по доступным командам SysRq.

После вывода справки, смотрим логи ядра:

dmesg -tk | grep -m1 '^sysrq: HELP :'


и видим, что ядро триггернулось и записало в журнал:

sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z)


Грубо говоря, если система встала раком и не отвечает, можешь ребутнуть её магическими клавишами: ALT+SysRq+b.

Ну либо поиграться с read only на проде.

В официальной доке, этот функционал шикарно расписан, прям рекомендую почитать, хоть и с переводчиком.

Изучай...

PS: А если у меня нет клавиши PrintScreen? Ну значит, не судьба!


tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Привет, коллега Вадим Белоус, эксклюзивно написал для нашего канала пост. Пост не проплачен. Если тоже хочешь опубликоваться, скидывай Максу, если годнота — залетит.

Спасибо Вадим! Публикуем 👇

Подержите лайками, дело хорошее!


Создаем стильные PDF из мануалов в Linux
📁

Если вы устали от привычных мануалов в Linux, то представляю вашему вниманию команду, которая преобразует их в документы в формате PDF с хакерским шрифтом!

Установите все необходимые зависимости

sudo apt install texlive-full pandoc fonts-jetbrains-mono 


1. texlive-full - полный пакет TeX Live, который предоставляет все необходимые компоненты для работы с LaTeX
2. pandoc - универсальный конвертер документов. На официальной странице можно ознакомиться с диаграммой, которая отображает поддерживаемые форматы файлов
3. fonts-jetbrains-mono - хакерский шрифт

Выполните скрипт в оболочке командной строки

zcat /usr/share/man/man1/cat.1.gz | nroff -man | col -b | pandoc -f markdown -t pdf -V geometry:margin=0.5in -V 'mainfont=JetBrains Mono' -V 'sansfont=JetBrains Mono' -V 'monofont=JetBrains Mono' -V fontsize=16pt --pdf-engine=lualatex -o cat.pdf


Разберём эту команду по этапам

1. zcat /usr/share/man/man1/cat.1.gz - чтение сжатого мануала cat
2. nroff -man - форматирование текста мануала cat, полученного на предыдущем этапе, согласно указанным макросам для страниц man (-man)
3. col -b - удаление управляющих символов для корректного отображения текста
4. pandoc -f markdown -t pdf -V geometry:margin=0.5in -V 'mainfont=JetBrains Mono' -V 'sansfont=JetBrains Mono' -V 'monofont=JetBrains Mono' -V fontsize=16pt --pdf-engine=lualatex -o cat.pdf - преобразование Markdown в PDF с применением указанных стилей (хакерский шрифт, отступ)

На выходе в качестве артефакта получится отформатированный файл в формате PDF с содержимым мануала cat

P.S. Этот небольшой пост можно посмотреть на вебсайте по ссылке

Также всем причастным предлагаю ознакомиться с постом про мою подборку интересных трюков на Bash


Вебсайт: vadimbelous.com
Автор: Вадим Белоус
Хэштеги: #linux #bash #trick #man #latex #pdf #pandoc


🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Раз пошла такая пьянка, эта sed`ушка подсветить вхождения подстроки, сохраняя, весь контекст. Грубо говоря выделит цветом только те строки, которые ты укажешь.

sed 's/string/\x1b[31m&\x1b[m/g' bashdays.txt


String нужно заменить на то слово, которое нужно подсветить.

Это случай когда использование sed оправдано.

Изучай…

tags: #linux #bash

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Tagd Tagd порадовал нас еще одним постом. Спасибо друг! В редакцию тебя что-ли на ставку забрать, складно пишешь 🥳. Пиши еще!

Как я офигел и полюбил AWK.

AWK - сильно недооценен. Мало кто его использует кроме как - вывести вторую колонку.

А между тем - это полноценный язык программирования.

Я решил выучить AWK, когда на хабре увидел конструкцию:

awk '!a[$0]++' ./file


Эта конструкция убирает дубли строк файла, оставляя только уникальные.

Причем делает это за один проход чтения файла!

Работает она очень просто:

Считывается строка файла ($0), Если a[$0] не (!) равен 0, то строка выводится в stdout.

После этого, a[$0] инкрементируется. Если далее встретится такое же значение строки $0, то a[$0] уже будет ненулевым и строка проигнорируется.

У этой конструкции есть и подводные камни. Весь файл фактически считывается в массив и хранится в памяти. Так что если файл больше половины свободной памяти - используйте uniq.

И теперь несколько примеров без объяснений:

awk '++a[$0]==3'


Уникальные строки, c числом вхождений >=3.

awk '++a[$0]>=3'


Все вхождения, начиная с третьего.

Эти конструкции могут быть полезны, когда хочется выявить особо настырных.

Ну, и еще. AWK поддерживает вещественные числа. Поэтому когда нужно что-то посчитать:

awk 'BEGIN'{print 1/3}' 


или

echo 1 3|awk '{print $1/$2}'


Не так красиво, как bc. Но bc/dc может и не быть в системе, а awk, есть, практически везде.

В общем, если припрёт awk'ом можно заменить cat, sed, grep, tr, cut, head, tail, wc...

Ну, и ложка дегтя. Есть несколько версий awk: MAWK NAWK GAWK

Базовый функционал у них одинаковый. Так что не заморачивайтесь. Если кто-то заинтересовался - help по GAWK.

👉 Вопросы, комментарии приветствуются.

tags: #linux

🔔 @bashdays

Читать полностью…

Bash Days | Linux | DevOps

Привет. Сегодня нассым в чайник.

А если конкретнее, рассмотрим более подробно команду man

Это с виду она дохуя скучная, на деле там всё по полочкам.

Man содержит разделы от 1 до 9 + дополнительные (n, l, p). В дополнительные разделы входят всё то, что по каким-то причинам не попало в первые 9.

Все это дело сконфигурировано в файле: /etc/manpath.config, в него можно не смотреть, там хуйня какая-то непонятная для не подготовленного человека.

Ну дак вот. В каждом man разделе, есть страница intro. То бишь «вступление», которое описывает что содержит раздел.

Давай тыкать палкой.

Ставим пакет:

apt install manpages-dev


Запускаем:

man 1 intro


Выведется список с содержимым 1го раздела:

- Login
- The shell
- Pathnames and the current directory
- Directories
- Disks and filesystems

и т.п.


Теперь пройдемся по разделам:

1. Справка по стандартным командам (программы и утилиты). Это самый огромный раздел в справочной системе. Глаза разбегутся. Но есть лайкфак, можно воспользоваться поиском.

man -k copy


Выведется ограниченный список команд и утилит, которые содержат слово «copy»

cp (1) - copy files and directories
cpgr (8) - copy with locking the given file
cpio (1) - copy files to and from archives
cppw (8) - copy with locking the given file
dd (1) - convert and copy a file


В скобках выводится цифра раздела, в котором была найдена справка. А дальше можно сделать например так:

man 8 cppw


Херак и ты получил желаемое. С поиском намного удобнее и приятнее работать.

2. Раздел содержит описание системных вызовов. В этом разделе можно найти понимание этих ваших линуксов. Например, смотрим справку по mkdir.

man 2 mkdir


Кончаем и получаем список системных вызовов с которыми работает mkdir.

3. Раздел с библиотечными функциями. Тут больше для программистов.

4. Описание файлов-устройств расположенные в /dev

5. Описание форматов файлов. Конфигурационные файлы приложений и их синтаксис. Например, синтаксис файла теневых паролей.

man 5 login.defs


Чтиво весьма занятное. Именно в этом файле задаются «SYS_UID_MAX», «SYS_UID_MIN». Это диапазон UID, который будет присвоен пользователю, при использовании утилит «useradd» или «newusers» когда, ты добавляешь нового пользователя.

6. Раздел игр.

7. Описание стандартов и соглашений. Например, последовательность загрузки ОС.

man 7 boot


или параметры ядра при загрузке:

man 7 bootparam


или шаблоны имён файлов:

man 7 glob


8. Команды для системного администрирования. Например, информация о портах/сокетах:

man 8 netstat


монтирование устройств:

man 8 mount


отображение информации о дисках и их настройка:

man 8 hdparm


9. Функции ядра. В большинстве случаев этот раздел отсутствует в современных дистрибутивах. Раздел не является стандартом. Если нужно узнать про функции ядра, тут только поиск через man -k <ключевое слово>.

Так же ты можешь встретить разделы n, l, p, но опять-же они не всегда присутствуют, все зависит от того, какой софт ты ставил себе на машину.

Ну и закончим эту простыню вишенкой. Для этой команды нужны Иксы.

apt install man-db groff
man -H bash


Страница со справкой Bash будет отформатирована в «html» формате и открыта в браузере по умолчанию.

Без Иксов просто сформируется «html» файл в папке tmp, у меня он появился тут: /tmp/hmanU3yORv/bash.html

Ладно, изучай. Увидимся завтра!

PS: Все кто подал заявки на вписку в Linux factory, все ок. Как только решу вопросы с эквайрингом Тибанка (бекенд у них отвалился), всем напишу. Терпения вам и мне дорогие подписчики. Всех обнял!


tags: #linux #bash

🔔 @bashdays

Читать полностью…
Subscribe to a channel