Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
В bash есть переменная IFS
, отвечающая за разделитель полей при чтении stdin
, но нет переменной OFS
- для выходного разделителя полей.
🔤🔤🔥🔤🔤🔤🔤
Или есть? Для преобразования можно использовать переменную $*
в кавычках.
ㅤ
Генерим CSV (comma separated value)
#!/bin/bash
IFS=",$IFS" # добавили запятую
set 1 2 3 4 "5 6" 7 # установили параметры
echo ' $* ='$*
echo '"$*"='"$*"
IFS
содержит символы пробел, табуляция, перевод строки."$*"
(в кавычках обязательно), то в качестве разделителя используется первый символ IFS
.set
устанавливает параметры командной строки текущего экземпляра bash ($1...$N
изменятся).Отлаживал сегодня багу связанную с правами доступа. В суть произошедшего вникать не будем.
Главное, что багу помогла решить утилита — namei
. Устанавливать не нужно, идет в коробке.
Утилита namei — разбивает путь до папки/файла на составляющие и выводит права доступа для каждой из них.
namei -l /var/www/bashdays/htdocs/wp-admin/index.php
f: /var/www/bashdays/htdocs/wp-admin/index.php
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x bashdays bashdays www
drwxr-xr-x bashdays bashdays bashdays
drwx--x--x bashdays bashdays htdocs
drwx------ root root wp-admin
-rw-r--r-- bashdays bashdays index.php
ls -la
?ls -la /var/www/bashdays/htdocs/wp-admin/index.php
-rw-r--r-- bashdays bashdays /var/www/bashdays/htdocs/wp-admin/index.php
l — показывает подробный вывод (long listing) для каждого компонента пути.
m — показывает права доступа (в виде числового значения, как ls -l).
o — показывает владельца и группу каждого компонента.
v — детализирует информацию о путях и ошибках.
x — показывает права доступа в виде rwx (читаемо).
namei
пользуюсь достаточно редко, но метко. В основном руки заточены на ввод именно ls -la
. Тут уж как привык. Возможно namei
тебе зайдет. Привет. Я устал от сложностей написания Bash курса и решил отдохнуть и написать статью.
🔤🔤🔥🔤🔤🔤🔤
Если кто-то не пьет на Новый Год - читайте эту статью. Голова кружится не хуже, чем от алкоголя.
expr1 ? expr2 : expr3
expr1
истина, то результат expr2
, иначе expr3
.#!/bin/bash
declare -i c=033 #27
declare -i d=044 #36
declare -i k=0 #counter
function wait2sec(){
sleep 2
echo $1
}
SECONDS=0
a=$((1 == 2?$(wait2sec c):$(wait2sec d))) #0
echo $((k++)) sec=$SECONDS a=$a
SECONDS=0
((a=1==2?$(wait2sec c):$(wait2sec d))) #1
echo $((k++)) sec=$SECONDS a=$a
SECONDS=0
a=$((1==2?$(wait2sec c):$(wait2sec d))) #2
echo $((k++)) sec=$SECONDS a=$a
SECONDS=0
[[ 1 == 2 ]] && a=$(wait2sec c) || a=$(wait2sec d) #3
echo $((k++)) sec=$SECONDS a=$a
SECONDS=0
[[ 1==2 ]] && a=$(wait2sec c) || a=$(wait2sec d) #4
echo $((k++)) sec=$SECONDS a=$a
####### result #############
# 0 sec=4 a=36
# 1 sec=4 a=36
# 2 sec=4 a=36
# 3 sec=2 a=d
# 4 sec=2 a=c
wait2sec
ждет 2 секунды и печатает первый параметр. Дальше идут пять как бы одинаковых блоков.1 == 2 - expr1 (false)
wait2sec c - expr2
wait2sec d - expr3
d
и с описаны как целые, но начинаются с 0
, поэтому bash интерпретирует их как восьмеричные.((...))
, в которой переменные допускается извлекать(получать значение) без знака $
, поэтому c
и d
интерпретируются как переменные.1==2
- интерпретируется не как результат сравнения, а как не пустая строка, поэтому результат (истина) не верный. Такие ошибки очень трудно отлаживать.expr2
и expr3
вычисляются вне зависимости от условия. Об этом говорит удвоенное время выполнения блока.Изба архитектурных костылей
Вспомнил тут приколюху при создании нового пользователя в Linux. Ща расскажу.
Короче при создании нового юзера, создается папка /home/user
и в ней минимальный набор файлов, типа .bashrc, .profile.
И все, больше в ней ничего нет.
Про различия .profile/.bashrc и т.п. я писал в этом посте.
/home/user/www/htdocs
/home/user/www/logs
/home/user/www/tmp
/etc/skel
. Эта папка служит шаблоном для домашнего каталога нового пользователя.sudo mkdir -p /etc/skel/www/htdocs /etc/skel/www/logs /etc/skel/www/tmp
.bashrc
и .profile
sudo useradd -m bashdays
sudo useradd -m -k /custom/skel bashdays
И да, все права на папки и файлы автоматически установятся на те что нужно.
/home
, можно сделать так:sudo useradd -m -d /var/www/bashdays bashdays
/var/www/
, а в /etc/passwd
будет такое:bashdays:x:1000:1000::/var/www/bashdays:/bin/sh
Так вот
🔤🔤🔥🔤🔤🔤🔤
Эта музыка будет вечной, если я заменю батарейки
#!/bin/bash
declare -i a=9223372036854775803
for i in {1..10};do
echo $((a++))
done
#!/bin/bashЧитать полностью…
declare -i a=1
for i in {1..64};do
a=a*2
[[ $i -gt 60 ]] && echo $i,$a
done
Набрёл сегодня на мануал по установке ack, а там такое:
curl https://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 !#:3
ack — инструмент для поиска текста в файлах, который часто используется разработчиками как более удобная и современная альтернатива `grep`. Он написан на Perl и ориентирован на работу с кодом.
!#:3
!#:3
— это конструкция, связанная с историей команд в оболочке Bash/Zsh.!
= Используется для доступа к истории команд. !!
повторит последнюю команду, а !123
выполнит команду с номером 123 в истории.#
= Ссылается на текущую команду, которая в данный момент пишется.:3
= Указывает, что нужно взять третий аргумент в текущей строке.:1 — первый аргумент
:2 — второй аргумент
:3 — третий аргумент
~/bin/ack.
!#:3
подставляет третий аргумент текущей команды, то есть ~/bin/ack.
chmod 0755 ~/bin/ack
curl http://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
Пули закончатся раньше чем ноги
Откапал сегодня в одном коммерческом интерпрайзе такую конструкцию:
while [ $(pgrep process_name)>'0' ]
do
sleep 5
done
«[»
= это аналог или синоним встроенной команды «test». Если не задавать оператор, то на пустой строке вернется FALSE. Ну и логично что вернется TRUE если срока не пустая.«while»
— ежу понятно, условный цикл. Будем вертеть на хуй, пока команда заданная в условие возвращаешь истину. В нашем случае эта команда «test».«pgrep»
— ищем процесс с именем process_name. Эта штука выводит на стандартный вывод PID процесса. Если процесс не найден, код возврата отличный от нуля и нуль в противном случае.«$(command)»
— Command запускается в подоболочке. Результат выполнения, подставляется в текущую позицию.«>»
— Перенаправляет результат работы команды в файл (в нашем случае файл 0). Существующий файл, перезаписывается. Несуществующий, будет создан.Команда test — Предназначена для проверки типа файла и сравнения чисел и строк. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости от вычисления выражения. Выражения могут быть как унарными, так и бинарными.
while pgrep process_name &> /dev/null
do
sleep 5
done
Про эстетику и терминал
Записывал я тут какое-то видео и заметил, что меня пиздец бесит такое поведение:
1. Открываю терминал
2. Запускаю к примеру sleep 10
3. Курсор перескакивает на новую строку
cursor_killer() {
echo -ne '\e[?25h'
trap 'echo -ne "\e[?25l"; trap DEBUG' DEBUG
}
PROMPT_COMMAND='cursor_killer'
If a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.
\e[?25h =
включает отображение курсора (h = "show")\e[?25l =
отключает отображение курсора (l = "low visibility" или "hide")cur_killer.sh
и запускаем когда нам это нужно. Либо делаем source cur_killer.sh.
trap 'echo "RUN: $BASH_COMMAND"' DEBUG
trap 'echo "RUN: $BASH_COMMAND"' DEBUG
ls
RUN: ls --color=auto -la
Про процессоры
Привет, знаю что несколько не формат, но давно хотел написать да и в личке довольно много просили, потому полагаю некоторым пригодится.
🔤🔤🔥🔤🔤🔤🔤🔤🔤🔤
Автор поста 👆👆👆 А я лишь утащил в телеграф, получился длинно-пост, сюда не влезло. Лайки и комментарии приветствуются.
👉 Читаем и проникаемся
tags: #hardware
—
🔔 @bashdays➡️ @gitgate
Сегодня настроение ныть почему-то нет, поэтому научимся открывать файл на нужной строке в разных редакторах.
ㅤ
А нахуя это нужно? Ну ХЗ, я обычно этим не пользуюсь, открываю полностью файл и ищу нужную мне строку. Но это вкусовщина, кто как привык.
Вообще я встречал людей, которые так открывают файлы, когда видят нечто подобное:
Error in file "script.py" on line 42: NameError: name 'variable' is not defined
script.py
сразу на 42 строке.( printf '%s\n' {A..Z}-$[++I] > /tmp/bashdays.txt )
A-1
B-2
C-3
D-4
E-5
F-6
G-7
H-8
I-9
...
mcedit +7 /tmp/bashdays.txt
less -w +11 /tmp/bashdays.txt
nano +14 /tmp/bashdays.txt
vim +4 /tmp/bashdays.txt
В последнее время пошли мемы и обсуждения касаемо годовых премий.
Я тут как-то пост в стол написал, показываю, выж просили ничего от вас не скрывать, ловите! Такие посты буду помечать тэгом #memories.
Тут меня попросили подробнее рассказать про права 330 на каталог.
🔤🔤🔥🔤🔤🔤🔤
Но начну я с того, что напомню, что права в текстовом формате несколько лучше, чем в числовом.
ㅤ
Конкретно дело касается права "X". Это то же самое, что "x" но касается только каталогов.
То есть chmod -R +X ./
установит возможность поиска во всех подкаталогах текущего, но не сделает все файлы исполняемыми!
Ну, ладно, я отвлекся. 330.
Тут в чате Alex (генератор идей) правильно назвал права «черной комнатой». Клаcсная аналогия.
Короче, я баню зловредов, которые ломятся ко мне на ssh. Баню в разных филиалах. И филиалы сваливают ежедневные отчеты мне, в головной по sftp.
По-хорошему, нужно, чтоб для каждого филиала, отдельная учетка, все загружают, каждый в свой каталог... Но данные не особо ценные.
Но и паранойю никто не отменял. А если ломанут один филиал, и как начнут данные отравлять... :-)
В общем принял решение, что все работают под одной учеткой. Поставил права на папку 330 (-wx-wx---).
Эти права разрешают файл открыть, записать, удалить. Только нужно точно указать какой конкретно файл. Потому что список получить нельзя.
Файлы сваливаются с суффиксом, например filXXX_Ohd1Ul.txt
Имя файла для каждого филиала всегда одно и то же, префикс - название филиала, суффикс набор букв (защита от перебора).
То есть на сервере в головном от root я вижу все файлы, а филиалы не видят не то что соседние файлы, но даже свой.
Эти права раньше часто ставили на папку upload на анонимных ftp серверах. Но и сейчас можно использовать, для заливки, бэкапов, например.
Да, знаю, сейчас опытные админы набегут и начнут рассказывать про rsync. Я архивы шифрую. А при работе с шифрованными архивами rsync работает хуже, чем sftp. (Ну, сначала контрольные суммы, потом сравнение, потом синхронизация).
А что там сравнивать... они всегда разные. Блин, опять скатился на больное... В общем, при одной учетке, формально можно считать sftp сервер анонимным, но с кругом пользователей, ограниченным ключами :-).
Применение прав 330 позволяет упростить заливку файлов с обеспечением некоторой секьюрности.
Для освежения памяти очень рекомендую статью chmod в википедии.
tags: #security #linux
—
🔔 @bashdays➡️ @gitgate
Интересно, но часто получаю вопрос: чем vi отличается от vim?
ㅤ
Если коротко, то все форки vi
это стероидные штуки, со своими свистоперделками, обвесами и т.п. А vi давно уже в деприкейтед.VIM =
VI iMproved, то есть — «VI Улучшенный»
Прям готовое погоняло для викинга.
vim
. Даже в CentOS 7 был предустановлен vim
вместо vi
(без симлинков).index.py
в vi
и потом в vim
, сразу увидишь что в vi
отсутствует подсветка синтаксиса + в vi
если память не изменяет — не было визуального режима.vi
, потому что в 99999% у тебя отроется vim
.Привет. Такссс ребят, у нас нативочка. Короче Tagd Tagd пилит пиздатый интенсив по Bash’у для самых маленьких.
Собственно изучаем вопрос, на сколько это будет кому интересно.
Интенсив полностью халява, то есть бесплатный! Я сам его в глаза еще не видел, но думаю Tagd заебись сделает.
Ниже щас закину голосовалку. Потратьте, пожалуйста, секунду и клик, это нам очень важно! Заранее спасибо! Вы супер!
👇👇 👇
SuperHardio Bros*. Часть 2: Миссия по харденингу zVirt 4.2
Команда SuperHardio расширяет поле зрения на виртуализацию. В очередной серии спецпроекта 12 декабря в 17:00 мск эксперты прокачают одну из наиболее популярных в России платформ виртуализации — zVirt.
В программе:
— Обсудим рост популярности решений с использованием zVirt и способы их компрометации,
— Поговорим про влияние окружения платформы виртуализации на уязвимость решений с использованием zVirt,
— Разберемся, на что обращать внимание при развертывании платформ виртуализации,
— Поговорим про харденинг zVirt и особенности подхода к повышению киберустойчивости.
Регистрируйтесь и присоединяйтесь к вебинару 12 декабря в 17:00!
* SuperHardio Вros — герои-эксперты харденинга
Тренинги
🎓 Zabbix Сертифицированный Специалист 7.0
🎓 Zabbix Сертифицированный Профессионал
🎓 Zabbix Сертифицированный Эксперт 7.0
— ответ на вопрос «как быстро получить самые полные знания по Zabbix 7.0».
Приглашаем на официальные тренинги Zabbix в январе-феврале и марте 2025 года
Официальные тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. По итогам прохождения тренингов вы получаете сертификаты от компании Zabbix.
Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:
📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.
📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.
📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами.
📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.
📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 27-31 января 2025
📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 17-19 февраля 2025
📅 Zabbix сертифицированный эксперт 7.0 (ZCE 7.0) 24-28 марта 2025
Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software.
Подписывайтесь на наши телеграм-каналы:
🚀 @zabbix_ru — канал о Zabbix и ничего кроме Zabbix
🚀 @usr_bin_linux — канал о лайфхаках по работе с Linux-системами
🚀 @monitorim_it — канал о мониторинге ИТ-систем
Реклама. ООО "ГАЛС СОФТВЭР", ИНН: 5047195298, erid: 2Vtzqwnoh2h
Учимся разворачивать отказоустойчивые кластеры по ценам 2024 года 🔥
27 января стартует курс «Kubernetes Мега» от учебного центра Слёрм: повышайте устойчивость, безопасность и производительность своих приложений, не ломая кластеры и не роняя прод.
За 7 недель вы научитесь:
🔵переносить продукт на платформу k8s
разворачивать отказоустойчивые кластеры
🔵ускорять траблшуттинг
🔵повышать отказоустойчивость продукта
🔵разворачивать и обслуживать кластер с автоматической ротацией сертификатов, автодеплоем и правильным хранением секретов
ОБНОВИЛИ ВЕСЬ КУРС в сентябре 2024 ⭐️
- Старт 27 января
- 7 недель обучения
- 78 часов практики
- 7 встреч со спикерами
Стоимость:
▶️до 31 декабря 2024: 90 000 ₽
▶️с 1 января 2025: 110 000 ₽
Забронировать скидку или полностью оплатить обучение — на сайте 👈
Реклама ООО «Слёрм» ИНН 3652901451
Идеальное IT-оборудование в 2024 году — миф?
Новые серверы теперь найти в разы сложнее, а вендоры ушли из-за санкций.
Поэтому стоит обратить внимание на ребят из ITTELO, которые поставляют IT-оборудование для ЛитРес, ЦИАН и других компаний и помогают найти его в условиях санкций.
Они уже 10 лет обеспечивают клиентов качественным оборудованием, на которое дают гарантию 5 лет, а их техподдержка надежна как швейцарские часы.
Все проблемы с подбором IT-оборудования решают они 👉 ITTELO.RU
Реклама. ООО «АйТитело.ру». ИНН 6678087320.
⁉️Хотите понять, как Kubernetes управляет контейнерами?
🔥Узнайте всё о его ключевых компонентах: Control Plane, Worker Nodes, Pods, Namespaces. На открытом вебинаре мы разберём архитектуру Kubernetes и покажем, как настроить систему для масштабирования и отказоустойчивости.
📗Этот урок — ваш первый шаг к созданию инфраструктурной платформы. После вебинара вы поймёте, как управлять контейнерами, их взаимодействием и хранением данных.
🔗Регистрируйтесь на вебинар 17 декабря в 20:00 мск. Участники получат скидку 🎁 на обучение на курсе «Инфраструктурная платформа на основе Kubernetes»: https://vk.cc/cG3oHu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🎄 Моя! 🎄
Ну чо, кто на ёлку богат уже? Кидайте в комменты ёлки и своё пятничное настроение, пиво там, вискарь или чо там у вас.
есom.teсh Infrastructure meetup — online
Расскажем о том, как в еcom.tech пришли к тому, что высокий сезон исчез для инфраструктуры как сущность. Поговорим про управление изменениями в рамках инфраструктуры: какие изменения требуют сложного процесса, а какие можно внедрять проще и быстрее.
🔥 Инфраструктура ecom.teсh: что под капотом мини-рюкзачков Самоката — Дарья Джудис, Enable Team Lead в ecom.tech
🔥 Управляй и властвуй! Управление изменениями как процесс и как инструмент — Антон Егорушков, Директор эксплуатации и ИТ-инфраструктуры в Купере
Доклады ориентированы в первую очередь на DevOps, SRE инженеров и тимлидов, однако будем рады всем, кто интересуется вопросами инфраструктуры, независимо от специализации!
➖➖➖
🗓 17 декабря, 17:00–18:30 мск, Вторник
🌐 ОНЛАЙН
👉 Регистрация https://click.wowblogger.ru/XzmYBNEdOJVGKr3?erid=2VSb5weW3U4
Erid: 2VSb5weW3U4
В банках, производстве, ритейле, строительных и других компаниях каждая минута простоя — это убытки.
🌐 Чтобы бизнес работал стабильно, сотрудники должны без сбоев подключаться к разным корпоративным системам.
▶️ MTC Web Services проводит вебинар, где эксперты расскажут о SD-WAN — облачном решении, которое поможет снизить затраты на организацию сетевой инфраструктуры. В прямом эфире спикеры обсудят, как управлять корпоративными сетями и быстро подключать новые филиалы с помощью сервиса Cloud SD-WAN от MWS.
Дмитрий Шемякин, владелец продукта SD-WAN, MWS и Павел Брагин, руководитель Центра «Вычисление, хранение и кибербезопасность», MWS
обсудят:
🔴Что такое технология SD-WAN
🔴В каких случаях бизнесу выгодно её использовать
🔴Ключевые особенности SD-WAN: экономическая эффективность, гибкость и безопасность
🔴Какие преимущества вашему бизнесу даёт сервис Cloud SD-WAN: персональный подход MWS
🎉 Приходите! И готовьте вопросы, за лучший — будет подарок от команды!
❗️💾 Храните данные правильно: освоите репликацию в MySQL!
Надёжная репликация в MySQL — это не просто красивое слово. Это ваш шанс защитить данные, улучшить производительность и быть готовым к любым нагрузкам!
Что ждет вас на открытом уроке:
- пошаговая настройка репликации MySQL с использованием GTID;
- запуск репликации на новых серверах;
- расширение возможностей уже существующих серверов с БД.
Вебинар для системных администраторов Linux, веб-разработчиков и тех, кто хочет разобраться в работе MySQL.
⭐️ Спикер Николай Лавлинский — PhD Economic Sciences, опытный разработчик, автор курсов по администрированию и оптимизации веб-приложений, ведущий каналов «Ускорение сайтов» и «Поддержка сайтов».
⏰ 16 декабря в 19:00 мск. Урок проводится перед стартом курса «Administrator Linux. Professional». Только участники вебинара получат скидку на обучение.
Для участия зарегистрируйтесь: https://vk.cc/cFSNIH
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Какие инструменты для разработки выбирает ИТ-сообщество
Решение Platform V Works компании СберТех отмечено национальной наградой в сфере информационных технологий TAdviser IT Prize 2024. Победа присуждена в номинации «Платформа года для повышения продуктивности команд разработки».
Platform V Works позволяет ускорить цикл разработки и повысить производительность команд: быстрее писать код за счет AI-ассистентов, настраивать конвейеры DevOps по шаблонам, готовить синтетические данные и нагрузочные тесты.
В Platform V Works входит 4 набора инструментов:
• Управление проектами, задачами и знаниями.
• Написание кода и контроль его качества.
• Построение DevOps-конвейера.
• Тестирование ПО.
Продукты Platform V Works от СберТеха подходят для задач импортозамещения и могут быть использованы как в средних, так и в крупных компаниях.
Выберите набор или отдельный инструмент — улучшайте процессы и ускоряйте выход отдельных фич или продуктов.
Узнать больше и запросить демонстрацию
Создайте мультиоблако со скидкой 50% от VK Cloud
До 20 декабря можно выгодно перейти в VK Cloud. Переходите в отказоустойчивое облако VK Cloud и используйте его как основную платформу для размещения сервисов. Или создайте себе резервную площадку для аварийного восстановления. Миграция по методу Lift-and-Shift будет бесплатной.
Оставляйте заявку на участие в программе «Облачный старт» от VK Cloud.
Бонусы
🔹 Скидка 50% на сервисы VK Cloud в течение трех месяцев. Максимальный размер поддержки для одного нового клиента VK Cloud — 2 000 000 рублей.
🔹 Бесплатная консультация архитектора VK Cloud.
Как стать участником программы
🔹 Подайте заявку до 20 декабря 2024.
🔹 Убедитесь, что ваш бизнес зарегистрирован как ИП или российское юридическое лицо не менее 1 года назад.
🔹 Пройдите короткое интервью для оценки потребностей вашего бизнеса.
🔹 Начните использовать облако VK Cloud по акции до 1 января 2025.
Предложение распространяется на новых клиентов VK Cloud или не использующих платформу на коммерческой основе с 1 января 2024 года по настоящее время.
Пишите код быстрее и оставляйте больше времени на творчество вместе с AI-ассистентом разработчика
Устали от рутины? Отдайте ее AI!
Заходите на платформу GitVerse и пишите код вместе с AI-ассистентом GigaCode. Он поддерживает более 35 языков, умеет анализировать контекст, дописывать строки и функции в автоматическом и ручном режимах, а еще — писать код по комментариям и делать рефакторинг с помощью коротких команд. Всего за пару минут AI-помощник может оценить проект и трудозатраты на его создание.
Внутри AI есть функция CodeChat — с ней можно оптимизировать или отрефакторить имеющийся код, сгенерировать тесты и документацию, а также объяснить фрагмент кода. Задавать вопросы можно и по всему открытому файлу, и по конкретному фрагменту — просто выделите его в редакторе и сформулируйте запрос к CodeChat.
Хорошие новости — недавно GigaCode обновился и стал еще лучше справляться с задачами разработки: теперь наиболее вероятные продолжения кода будут генерироваться с учётом контекста всего проекта. Не забудьте обновить плагин GigaCode :)
Зарегистрироваться на GitVerse.
Масштабирование Kubernetes: когда триггеры не CPU и память
Что делать, если кластер Kubernetes нужно масштабировать не по утилизации ресурсов, а по внешним событиям? Например, сообщениям из Kafka или задачам CI/CD.
На вебинаре от Cloud․ru расскажут:
- как использовать KEDA (Kubernetes-based Event Driven Autoscaler) для событийного масштабирования;
- какие есть подходы к запуску приложений, завязанных на внешние системы;
- примеры работы с нестандартными триггерами.
📅 Когда: 12 декабря
👥 Для кого: разработчиков, DevOps-инженеров и архитекторов.
👉 Подключайтесь, будет интересно!
Храните секреты в открытом виде в Git? Есть альтернатива!
Приглашаем на вебинар «Эволюция Secrets Management», где DevOps Lead Hilbert Team Михаил Кажемский расскажет, как безопасно хранить и управлять секретами в вашей инфраструктуре.
О чем поговорим:
⏺ Почему хранить пароли и ключи в Git — плохая идея
⏺ Какие есть альтернативы: от простых решений до HashiCorp Vault
⏺ Как интегрировать секреты в CI/CD и GitOps-процессы
⏺ Как подружить Hashicorp Vault c Kubernetes
Для кого вебинар: DevOps-инженеры уровня Junior и выше, разработчики, архитекторы
Не пропусти! Регистрируйся и задавай вопросы спикеру
Когда? 12 декабря в 12:00
Верной дорогой идёте товарищи...
ㅤ
Уровень статьи средне-сложный. Я не буду объяснять, как завести пользователя, как прописать ему оболочку, как настроить аутентификацию по ключам. Информации об этом валом.
Сегодня мы рассмотрим как сделать «тупиковую машину». Под ней я понимаю машину, попасть на которую можно через интернет по ssh, но на самой этой машине интернета нет.
Заинтриговал? Мозг немного взорвался? Короче, делаем ssh-прокси.
⁉️ Для чего это нужно?
Это можно использовать для раздачи доступа сторонним пользователям для управления ресурсами внутри сети, для студентов, работающих на удалёнке. (студенты IT - самые агрессивные пользователи).
Короче для минимизации рисков информационной безопасности. Скажу сразу, это не панацея. Инфу/файлы можно таскать через буффер обмена. Но много информации так не передашь.
Поехали!
Понадобится 2 машины: Бастионная (Jump-сервер, ssh-прокси) - машина, которая торчит открытым портом ssh в интернет.
И Тупиковая - машина (возможно виртуалка), с открытым в локалку портом ssh, на которой будет работать пользователь. И у которой нет доступа в инет (закрыт на периметровом маршрутизаторе. Или не прописаны шлюзы.
Основное условие у пользователя не должно быть root, а то сменит IP/MAC, пропишет шлюзы...). (допустим ее локальный ip 10.10.10.10
).
С Бастионной машины должен быть доступ к Тупиковой по ssh, внутри локалки.
НА БАСТИОННОЙ МАШИНЕ. (аутентификация по ключам уже настроена, ssh защищена от быстрого перебора)
1. Заводим пользователя, например, Tagd83j6 с паролем >=20 символов (не пригодится)
2. Добавляем публичный ключ Пользователя. (Он обычно с парольной фразой) в ~/.ssh/authorized_keys
3. Генерим ключ без пароля для доступа к Тупиковой машине. (лучше ed25519).
4. Домашней папке Tagd83j6 создаем файл типа shell10.sh
(666 root:root)
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
ssh $USER@10.10.10.10 2>/dev/null
sudo usermod -s /home/Tagd83j6/shell10.sh Tagd83j6
~/.ssh/authorized_keys
su Tagd83j6
Сегодня 1с начала ругаться на нехватку лицензий. Дело не мое, но начали проверять, и увидели подключение с IP, которого нет в нормативных документах.
🔥 Инцидент. Я немного офигел. Что, откуда? Нужно искать, кто тут такой умный.
Начинаем исследование:
на сервере 1css|grep ip
- Видно, машина работает с 1с.ping ip
- машина не пингуется.nmap -Pn ip
- все порты < 1000 закрыты.
Ага, скорее всего windows 10 после обновления переключила сеть в "общедоступные".arp ip
- показывает mac
По mac определили, что это ASUS. Но может ноут, может комп или wi-fi роутер вредители воткнули в сеть.sudo arping -I enp3s4 ip
- машина пингуется.
Но как ее найти? Сетка не большая, меньше 100 ip, но не будешь же каждый комп и каждое устройство проверять...
Короче, на серваке 1с:
sudo iptables -I INPUT -s ip -j REJECT