Зрасти. Сегодня замутим простую проверку корректности формата файла. Для этого воспользуемся утилитой sed.
Вводные
Есть файл с последовательностью символов
Пример такого файла:
Теперь нужно, чтобы при проверке такого файла, программа прерывалась и выводила номер строки, которая нарушает формат. Если файл содержит допустимую последовательность или пустой, то — молчим.
✔ Создаем скрипт check
Необычно? Необычно! Это скрипт на языке Sed. Давай Разберем, что тут происходит.
… аналогично для 2 и 3
Погнали чекать кейсы. Не забудь на check впиздярить
1. Выводится 3 номер строки
2. Пусто. Файл валиден.
3. Выводится 9 номер строки
4. Пусто. Файл валиден.
5. Пусто. Файл валиден.
6. Выводится 7 номер строки
Чтиво: адресация, команды, шаблоны
tags: #bash #linux
—
🔔
Вводные
Есть файл с последовательностью символов
1, 2, 3, 4, 5
. Каждая цифра с новой строки. Эти символы могут располагаться в любой позиции строки. Строка может содержать другие символы отличные от символов заданной последовательности. Пример такого файла:
1
2
3
4
a1
b2
3c
4d
Теперь нужно, чтобы при проверке такого файла, программа прерывалась и выводила номер строки, которая нарушает формат. Если файл содержит допустимую последовательность или пустой, то — молчим.
✔ Создаем скрипт check
#!/usr/bin/sed -nf
$bE ; /1/!bE ; n
$bE ; /2/!bE ; n
$bE ; /3/!bE ; n
/4/b
:E = ; q
Необычно? Необычно! Это скрипт на языке Sed. Давай Разберем, что тут происходит.
$bE
= Если находимся на последней строке переход к метке «E»./1/!bE ; n
= Если текущая строка не содержит 1, переход к метке «E». В противном случае переходим к следующей строке.… аналогично для 2 и 3
/4/b
= Если текущая строка содержит 4, перейти в конец скрипта.:E = ; q
= метка «E» печатает текущую строку и завершает выполнение.Погнали чекать кейсы. Не забудь на check впиздярить
+x
.printf '%s\n' {1..3} | ./check
printf '%s\n' {1..4} | ./check
printf '%s\n' {1..4} {1..5} | ./check
printf '%s\n' {1..4} {1..4} | ./check
printf '%s\n' a{1..4} b{1..4} | ./check
printf '%s\n' a{1..4} b{1..3} | ./check
1. Выводится 3 номер строки
2. Пусто. Файл валиден.
3. Выводится 9 номер строки
4. Пусто. Файл валиден.
5. Пусто. Файл валиден.
6. Выводится 7 номер строки
Вместо перехода на метку можно просто выходить и возвращать нужное значение с помощью команды «q» которая в GNU версии принимает аргумент.
Чтиво: адресация, команды, шаблоны
tags: #bash #linux
—
🔔
Забавная хуита. Виндовз что с тобой?
Короче если создать текстовый файл с содержимым «This content is no longer available.» и сохранить его, винда начинает жестко угорать.
Мол, вы пиздец хакер и только что создали вирус под названием Trojan:Win32/Casdet!rfn. Касдет-пиздет.
Прикольно. Что-то из оперы EICAR
По-видимому, это коллизия хэшей. Потому что только Windows Defender его детектит, вот репорт с вирус-тотал.
tags: #мозготрах
—
🔔
Короче если создать текстовый файл с содержимым «This content is no longer available.» и сохранить его, винда начинает жестко угорать.
Мол, вы пиздец хакер и только что создали вирус под названием Trojan:Win32/Casdet!rfn. Касдет-пиздет.
Trojan:Win32/Casdet!rfn – это вредоносная программа, относящаяся к категории удаленного доступа (RAT). Она позволяет злоумышленникам получить контроль над вашим компьютером, красть ваши данные и устанавливать другие вредоносные программы.
Прикольно. Что-то из оперы EICAR
X5O!P%[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
По-видимому, это коллизия хэшей. Потому что только Windows Defender его детектит, вот репорт с вирус-тотал.
tags: #мозготрах
—
🔔
🗓 27 июня, 16:00
📌 Как быстро мигрировать инфраструктуру в Selectel
На бесплатном вебинаре от коллеги расскажут, как перенести инфраструктуру с минимальным даунтаймом и при этом предусмотреть все нюансы миграции. Сколько времени занимает переезд проекта, с какими проблемами можно столкнуться и как убедиться, что после миграции ничего не сломалось.
Основные темы:
◽️ План переноса.
◽️ Потенциальные проблемы.
◽️ Инструменты для миграции.
◽️ Тестирование сервисов.
Все участники смогут принять участие в акции «100% скидка на облачные ресурсы на 1 месяц» и получат типовой план переноса инфраструктуры.
Регистрируйтесь на мероприятие и участвуйте в розыгрыше приза за лучший вопрос: https://slc.tl/rkovh
Реклама ООО «Селектел» erid: 2VtzquiyU5m
📌 Как быстро мигрировать инфраструктуру в Selectel
На бесплатном вебинаре от коллеги расскажут, как перенести инфраструктуру с минимальным даунтаймом и при этом предусмотреть все нюансы миграции. Сколько времени занимает переезд проекта, с какими проблемами можно столкнуться и как убедиться, что после миграции ничего не сломалось.
Основные темы:
◽️ План переноса.
◽️ Потенциальные проблемы.
◽️ Инструменты для миграции.
◽️ Тестирование сервисов.
Все участники смогут принять участие в акции «100% скидка на облачные ресурсы на 1 месяц» и получат типовой план переноса инфраструктуры.
Регистрируйтесь на мероприятие и участвуйте в розыгрыше приза за лучший вопрос: https://slc.tl/rkovh
Реклама ООО «Селектел» erid: 2VtzquiyU5m
Ну и пекло, по ощущениям +60 и комары. Сегодня на изи, KPI нулевой.
Узнаем имя и путь последнего файла/каталога. Иногда нужно отработать подобный кейс, чтобы произвести какие-то манипуляции над последним файлом в каталоге.
Выдаст полный путь до файла/каталога. В примере папка с бекапами. Чтобы не ебстись и городить кишку с find, у ls есть для этого ключик для сортировки.
Ну и с помощью head, забираем имя последнего файла/каталога.
Всё, пойду дальше плавиться…
tags: #bash #linux
—
🔔
Узнаем имя и путь последнего файла/каталога. Иногда нужно отработать подобный кейс, чтобы произвести какие-то манипуляции над последним файлом в каталоге.
ls -t ~/backups/* | head -1
Выдаст полный путь до файла/каталога. В примере папка с бекапами. Чтобы не ебстись и городить кишку с find, у ls есть для этого ключик для сортировки.
Ну и с помощью head, забираем имя последнего файла/каталога.
Всё, пойду дальше плавиться…
tags: #bash #linux
—
🔔
Со шрамами приходит сила
И снова здрасти. Хуй знает очевидная эта штука для тебя или нет, но я все равно ее подсвечу.
Предположим у тебя есть какой-то проект описанный в
Из того что я постоянно вижу — После сборки проекта, все собранные файлы копируются на продакшен с помощью rsync, scp или подобных утилит, ну и ранится все это дело через ssh.
Например:
1. Что-то там собралось
2. Файлы синканулись с продом
3. Запустилось если смогло
✔ Хуита! Всё делается изящнее. Ща покажу.
Используем мощности docker-compose, не привлекаем никакие rsync, scp и т.п. А сразу нативно запускаем на проде наш
Никаких лишних файлов не копируется, никаких утилит, минималистичное. Я примеры сократил, но суть ты поймешь. Не обязательно тащить на прод какие-то ямеэльки.
В штыки не воспринимай, способ с rsync и т.п. вполне годный. Но делюсь, тем, чем пользуюсь сам. У меня телеграм боты так деплоятся.
Изучай. Не отвлекаю! Если хоть одному из вас пригодится, это уже хорошо!
tags: #devops
—
🔔
И снова здрасти. Хуй знает очевидная эта штука для тебя или нет, но я все равно ее подсвечу.
Предположим у тебя есть какой-то проект описанный в
docker-compose.yml
. Вся эта чача раскатывается через пайплайны gitlab на продакшен.Из того что я постоянно вижу — После сборки проекта, все собранные файлы копируются на продакшен с помощью rsync, scp или подобных утилит, ну и ранится все это дело через ssh.
Например:
script
- билд хуилд
- rsync -avz --delete ./ user@$prod:/var/www`
- ssh user@$prod "docker compose up -d"
1. Что-то там собралось
2. Файлы синканулись с продом
3. Запустилось если смогло
✔ Хуита! Всё делается изящнее. Ща покажу.
stage: deploy
image:
name: docker/compose
script:
- docker-compose -H "ssh://root@$prod" down --remove-orphans
- docker-compose -H "ssh://root@$prod" pull
- docker-compose -H "ssh://root@$prod" up -d
Используем мощности docker-compose, не привлекаем никакие rsync, scp и т.п. А сразу нативно запускаем на проде наш
docker-compose.yml
файл.Никаких лишних файлов не копируется, никаких утилит, минималистичное. Я примеры сократил, но суть ты поймешь. Не обязательно тащить на прод какие-то ямеэльки.
В штыки не воспринимай, способ с rsync и т.п. вполне годный. Но делюсь, тем, чем пользуюсь сам. У меня телеграм боты так деплоятся.
Изучай. Не отвлекаю! Если хоть одному из вас пригодится, это уже хорошо!
tags: #devops
—
🔔
а у кого какие бест практики подобных деплоев? 👆 давайте в комментах найдем эти практики, будет всем полезно, чтоб гавно не делать впредь
скидывайте, не бойтесь, любые даже самые топорные решения
скидывайте, не бойтесь, любые даже самые топорные решения
Разыгрывать будем 👆 только среди подписчиков могзотрах, чатика и полезняшек, королевство кривых ебал — мимо. Так что не облажайся, подпишись на все три.
Сегодня подъехал экземпляр «Релиз», Лемитед блядь эдищен.
Если моя ленивая жопа завтра соизволит сходить на почту, то завтра и разыграем эту колоду среди подписчиков нашего Пантеона.
Если моя ленивая жопа завтра соизволит сходить на почту, то завтра и разыграем эту колоду среди подписчиков нашего Пантеона.
Сегодня будем искать самое длинное слово в текстовом файле. На pure bash. Зачем? Джаст фор фан, чтоб мозги подразмять. А вообще эта задачка из методички для собесов.
Создаем текстовый файл
Пишем скрипт:
В результате получаем: Самое длинное слово «хуйпиздаджигурда» и его длина 16.
Алгоритм таков: цикл проходит по каждому слову в файле, вычисляет длину текущего слова
Если знаешь способ короче, без использования внешних утилит, кидай в комменты, полайкаем.
Вечером еще чтиво подъедет. На связи!
tags: #bash
—
🔔
Создаем текстовый файл
bashdays.txt
с таким содержимым:hello world хуйпиздаджигурда bashdays комутохеровато бидон
Пишем скрипт:
#!/bin/bash
longest=0
for word in $(<bashdays.txt)
do
len=${#word}
if (( len > longest ))
then
longest=$len
longword=$word
fi
done
printf 'Самое длинное слово %s и его длина %d.\n' "$longword" "$longest"
В результате получаем: Самое длинное слово «хуйпиздаджигурда» и его длина 16.
Алгоритм таков: цикл проходит по каждому слову в файле, вычисляет длину текущего слова
len=${#word}
и сохраняет результат в переменную len
. Ну и логика больше-меньше.Если знаешь способ короче, без использования внешних утилит, кидай в комменты, полайкаем.
Вечером еще чтиво подъедет. На связи!
tags: #bash
—
🔔
🔥 Открытые консультации по Kubernetes от архитекторов Southbridge
Лекций по кубу в интернете много, а желающих потратить время и разобрать ваши вопросы — мало. Мы решили это исправить!
Southbridge — DevOps-аутсорсер, специализирующийся на k8s. Cреди экспертов — Сергей Бондарев, один из создателей флагманских курсов по Kubernetes учебного центра Слёрм.
Первая консультация пройдёт 4 июля в 17:00. Сергей и его коллеги в прямом эфире будут отвечать на все ваши вопросы и делиться best practices по эксплуатации кубов.
Для участия в консультациях мы собрали бота-помощника. В нём есть кнопка «Задать вопрос» — спросите у нас что-нибудь нужное! Без ваших вопросов ничего не случится.
Так что спрашивайте и занимайте место на нашей встрече. Это бесплатно. 🙃
Ждём вас 4 июля!
🔗 ЗАДАТЬ ВОПРОС И ПРИЙТИ НА КОНСУЛЬТАЦИЮ
Реклама ООО «Слёрм» ИНН 3652901451 erid: 2VtzqwQCwAg
Лекций по кубу в интернете много, а желающих потратить время и разобрать ваши вопросы — мало. Мы решили это исправить!
Southbridge — DevOps-аутсорсер, специализирующийся на k8s. Cреди экспертов — Сергей Бондарев, один из создателей флагманских курсов по Kubernetes учебного центра Слёрм.
Первая консультация пройдёт 4 июля в 17:00. Сергей и его коллеги в прямом эфире будут отвечать на все ваши вопросы и делиться best practices по эксплуатации кубов.
Для участия в консультациях мы собрали бота-помощника. В нём есть кнопка «Задать вопрос» — спросите у нас что-нибудь нужное! Без ваших вопросов ничего не случится.
Так что спрашивайте и занимайте место на нашей встрече. Это бесплатно. 🙃
Ждём вас 4 июля!
🔗 ЗАДАТЬ ВОПРОС И ПРИЙТИ НА КОНСУЛЬТАЦИЮ
Реклама ООО «Слёрм» ИНН 3652901451 erid: 2VtzqwQCwAg
🔥 Кишочки. Короче познавательное.
В документации для команды
Прежде чем выполнить какой-то код, интерпретатору требуется обработать его.
Нужно найти команду, аргументы, различные перенаправления. Расширить параметры, фигурные скобки, тильда, переменные подстановка результатов выполнения команд, математика, арифметика, география, литература, подстановка имен файлов и т.п.
Короче дохера всего. Полный список можешь найти в разделах SIMPLE COMMAND EXPANSION и EXPANSION выполнив:
Ну дак вот, команда
На вход
Очевидно? Совсем нет. Но вот оно так работает, чо с него взять.
Эта возможность используется по-разному, например для генерации и последующего исполнения кода.
Также если знать некоторые последовательности обработки кода, можно сгладить некоторые особенности самой обработки.
Ниже примеры. При присваивании значения переменной, приведенная конструкция с фигурными скобками не расширяется.
Расширение переменной в строке с командой
Поэтому используем
В результате получим:
Другой пример. Здесь из-за использования одинарных кавычек, переменной присваивается указанная строка, а не значение переменной.
И обработка строки делает расширение переменной один раз. Получаем значение переменной
На экране ты увидишь:
А теперь более сложный пример. Если слева от оператора перенаправления указана не корректная строка, в этом случае для перенаправления будет использована только часть строки, всё что находится слева не будет учитываться.
Это значит, что если ты откроешь файл на чтение и слева укажешь переменную содержащую нужный дескриптор, эта переменная не будет участвовать в перенаправлении.
И раз не указан дескриптор, файл будет ассоциирован со стандартным потоком ввода.
Решение. Делаем так, чтобы при первой обработке перенаправление было распознано как обычная строка и была расширена переменная. Тогда на второй обработке слева от оператора перенаправления будет стоять номер дескриптора из переменной.
В первой строке:
Круглые скобки использовались, чтобы не засорять текущую оболочку. И чтобы она не завершилась на первом примере. Из-за того что на её стандартный ввод повесили
Этот «хак» с перенаправлением можно использовать для исследований. Когда требуется определённый диапазон дескрипторов.
Почитать:
А завтра запускаем конкурс с картами. Моя ленивая жопа соизволила добраться до почты.
Хороших выходных!
tags: #bash
—
🔔
В документации для команды
eval
довольно пространное описание. Давай сегодня с ней поковыряемся.Прежде чем выполнить какой-то код, интерпретатору требуется обработать его.
Нужно найти команду, аргументы, различные перенаправления. Расширить параметры, фигурные скобки, тильда, переменные подстановка результатов выполнения команд, математика, арифметика, география, литература, подстановка имен файлов и т.п.
Короче дохера всего. Полный список можешь найти в разделах SIMPLE COMMAND EXPANSION и EXPANSION выполнив:
man 1 bash
Ну дак вот, команда
eval
запускает эту обработку кода. Но прежде чем команда eval
будет запущена, код должен быть обработан. На вход
eval
попадает код, который уже обработан и прошел проверку. Поэтому получается, что код обрабатывается два раза и только после этого выполняется.Очевидно? Совсем нет. Но вот оно так работает, чо с него взять.
Эта возможность используется по-разному, например для генерации и последующего исполнения кода.
Также если знать некоторые последовательности обработки кода, можно сгладить некоторые особенности самой обработки.
Ниже примеры. При присваивании значения переменной, приведенная конструкция с фигурными скобками не расширяется.
Расширение переменной в строке с командой
echo
происходит гораздо позже, чем расширение фигурных скобок.Поэтому используем
eval
. Первая обработка развернет переменную. Вторая, которая запустит eval
, развернет конструкцию с фигурными скобками.str={1..10}
echo $str
eval echo $str
В результате получим:
{1..10}
1 2 3 4 5 6 7 8 9 10
Другой пример. Здесь из-за использования одинарных кавычек, переменной присваивается указанная строка, а не значение переменной.
И обработка строки делает расширение переменной один раз. Получаем значение переменной
s0
. Количество обработок строки равно количеству eval
плюс один.(s0=100 ; s1='$s0' ; s2='$s1' ; echo "$s2")
(s0=100 ; s1='$s0' ; s2='$s1' ; eval echo "$s2")
(s0=100 ; s1='$s0' ; s2='$s1' ; eval eval echo "$s2")
На экране ты увидишь:
$s1
$s0
100
А теперь более сложный пример. Если слева от оператора перенаправления указана не корректная строка, в этом случае для перенаправления будет использована только часть строки, всё что находится слева не будет учитываться.
Это значит, что если ты откроешь файл на чтение и слева укажешь переменную содержащую нужный дескриптор, эта переменная не будет участвовать в перенаправлении.
И раз не указан дескриптор, файл будет ассоциирован со стандартным потоком ввода.
Решение. Делаем так, чтобы при первой обработке перенаправление было распознано как обычная строка и была расширена переменная. Тогда на второй обработке слева от оператора перенаправления будет стоять номер дескриптора из переменной.
(fd=6 ; exec "$fd"</dev/null)
(fd=6 ; eval exec "$fd</dev/null")
(fd=6 ; eval exec "$fd"\</dev/null)
(fd=6 ; eval exec "$fd"'</dev/null')
В первой строке:
/dev/null
на stdin
и пытается запустить 6.Круглые скобки использовались, чтобы не засорять текущую оболочку. И чтобы она не завершилась на первом примере. Из-за того что на её стандартный ввод повесили
/dev/null
. Проверяем какой дескриптор ассоциирован с устройством /dev/null
.bash -c 'shopt -s execfail ; fd=6 ; exec $fd</dev/null ; ls -l /proc/$$/fd'
bash -c 'shopt -s execfail ; fd=6 ; eval exec $fd\</dev/null ; ls -l /proc/$$/fd'
bash -c 'shopt -s execfail ; fd=6 ; eval exec "$fd</dev/null" ; ls -l /proc/$$/fd'
Этот «хак» с перенаправлением можно использовать для исследований. Когда требуется определённый диапазон дескрипторов.
Почитать:
man 1 bash
, разделы:# REDIRECTION
# SHELL BUILTIN COMMANDS -> eval
# SHELL BUILTIN COMMANDS -> exec
# SHELL BUILTIN COMMANDS -> shopt
А завтра запускаем конкурс с картами. Моя ленивая жопа соизволила добраться до почты.
Хороших выходных!
tags: #bash
—
🔔
Выходные заебись!
Сумма значений со стандартного ввода, или из файла.
➡️ Datamash
➡️ Awk
➡️ Dc
Последнее решение самое занимательное. И самое небезопасное, потому что данные управляют программой.
Вообще во всех трёх случаях очень желательно очищать входные данные.
Почитать:
Да будет так!
tags: #bash
—
🔔
Сумма значений со стандартного ввода, или из файла.
➡️ Datamash
seq 1000 | datamash sum 1
datamash sum 1 < <(seq 1000)
➡️ Awk
seq 1000 | awk '{sum += $1}END{print sum}'
awk '{sum += $1}END{print sum}' <(seq 1000)
➡️ Dc
seq 1000 | dc -e '0d[?+2z>a]salaxp'
dc -e '0d[?+2z>a]salaxp' < <(seq 1000)
Последнее решение самое занимательное. И самое небезопасное, потому что данные управляют программой.
Вообще во всех трёх случаях очень желательно очищать входные данные.
Почитать:
man datamash
man seq
man awk
man dc
Да будет так!
tags: #bash
—
🔔
ЕНОТ ищет таланты
Одна из самых масштабных серверных инфраструктур в России ЕНОТ от VK ищет талантливых разработчиков и SRE, готовых работать с облачными хранилищами и базами данных, облачным решением one-cloud, а также системами метрик и мониторинга.
Присоединяйтесь!
Одна из самых масштабных серверных инфраструктур в России ЕНОТ от VK ищет талантливых разработчиков и SRE, готовых работать с облачными хранилищами и базами данных, облачным решением one-cloud, а также системами метрик и мониторинга.
Присоединяйтесь!
🚜 Синий трактор едет к нам
Этот пост изобилует грубыми выражениями и, в силу своего содержания, вообще не предназначен для просмотра лицам с хрупким душевным миром.
✔ Про Gitlab!
Заебали блядь, мне чо каждый день это гавно обновлять? Ладно бы там нажал кнопку как в wordpress и забыл. А нет, надо хуеву гору телодвижений сделать.
И в 100% эта залупа с первого раза никогда не заводится, то миграции ручками надо запускать, то еще 10 версий предыдущих накатить и молиться.
В прошлый раз вообще пришлось пайплайны переписывать, поломали совместимость.
А еще соль, что при обновлении мне приходится параллельно поднимать клон сервера, на случай если обновка сделает мозги, можно будет на старую версию переключиться. Удобство через край…
И на закуску фаталити — обновку накатывать нужно поздно ночью, либо в выходные, когда разработчики в режиме AFK. Хуита какая-то!
Можно и в будни, но заебут вопросами — а когда заработает?
Этот пост изобилует грубыми выражениями и, в силу своего содержания, вообще не предназначен для просмотра лицам с хрупким душевным миром.
Заебали блядь, мне чо каждый день это гавно обновлять? Ладно бы там нажал кнопку как в wordpress и забыл. А нет, надо хуеву гору телодвижений сделать.
И в 100% эта залупа с первого раза никогда не заводится, то миграции ручками надо запускать, то еще 10 версий предыдущих накатить и молиться.
В прошлый раз вообще пришлось пайплайны переписывать, поломали совместимость.
Либо хуй пополам, либо пизда в дребезги, другого не дано.
А еще соль, что при обновлении мне приходится параллельно поднимать клон сервера, на случай если обновка сделает мозги, можно будет на старую версию переключиться. Удобство через край…
И на закуску фаталити — обновку накатывать нужно поздно ночью, либо в выходные, когда разработчики в режиме AFK. Хуита какая-то!
Можно и в будни, но заебут вопросами — а когда заработает?
...Короче я такие апд
Так, пора закончить с этими картами.
Короче, представляем ситуацию, что тебя нахуй уволили или не заплатили, а ты еще тот злой гений.
Задача — нужно применить все свои навыки заподлостроения в инфраструктуре и знатно усложнить жизнь этим гадам. У тебя есть root доступ ко всему и ты отрабатываешь две недели.
Условия — на тебя не должны подумать и взять за жопу.
Пиши в комментарии свой гениальный план. Чей коммент наберет больше реакций, тому и карты в руки.
Писать нужно не в чатик! А нажав кнопку под постом, это важно. Ну и условия розыгрыша я кидал ранее.
Итоги подведем в следующую пятницу. Доставка по РФ и Беларусь.
Пару колод отдадим вторым и третьим местам, но нужно будет подождать, на руках у меня их щас нет. Там ченить придумаем.
Но если прям чешется, можешь заказать у Кати через Авито.
Погнали сочинять! Может в будущем кто-то и воспользуется твоим гениальным планом 🥳
Короче, представляем ситуацию, что тебя нахуй уволили или не заплатили, а ты еще тот злой гений.
Задача — нужно применить все свои навыки заподлостроения в инфраструктуре и знатно усложнить жизнь этим гадам. У тебя есть root доступ ко всему и ты отрабатываешь две недели.
Условия — на тебя не должны подумать и взять за жопу.
Пиши в комментарии свой гениальный план. Чей коммент наберет больше реакций, тому и карты в руки.
Писать нужно не в чатик! А нажав кнопку под постом, это важно. Ну и условия розыгрыша я кидал ранее.
Итоги подведем в следующую пятницу. Доставка по РФ и Беларусь.
Пару колод отдадим вторым и третьим местам, но нужно будет подождать, на руках у меня их щас нет. Там ченить придумаем.
Но если прям чешется, можешь заказать у Кати через Авито.
Погнали сочинять! Может в будущем кто-то и воспользуется твоим гениальным планом 🥳
Здрасти. Существуют самописные скрипты, которые при запуске устанавливают необходимый набор программ. Этакая автоматизация на коленке, быстро, удобно, никаких ансиблов и паппетов.
Но встает вопрос, а как автоматизировать перезагрузку машины например при обновлении ядра, патчей или какого-то хитровыебанного софта?
Добавить в скрипт reboot на каждую команду? Да не, хуйня какая-то. Тут на помощь приходит reboot-required.
Ща покажу. Есть однострочник:
Первая часть понятна, обновили, апгрейднули, а дальше идет магия.
ㅤ
В квадратных скобках конструкция, которая проверяет наличие файла
Файл reboot-required создается, если система считает, что после обновления требуется перезагрузка. Если файл существует, возвращается true. А если true, то запускается -r = reboot.
Вот и вся наука. Изучай…
tags: #bash #linux
—
🔔
Но встает вопрос, а как автоматизировать перезагрузку машины например при обновлении ядра, патчей или какого-то хитровыебанного софта?
Добавить в скрипт reboot на каждую команду? Да не, хуйня какая-то. Тут на помощь приходит reboot-required.
Ща покажу. Есть однострочник:
apt update && apt -fy upgrade && [ -f /var/run/reboot-required ] && shutdown -r now
Первая часть понятна, обновили, апгрейднули, а дальше идет магия.
ㅤ
В квадратных скобках конструкция, которая проверяет наличие файла
/var/run/reboot-required
и если он есть, то выполняется перезагрузка.Файл reboot-required создается, если система считает, что после обновления требуется перезагрузка. Если файл существует, возвращается true. А если true, то запускается -r = reboot.
Вот и вся наука. Изучай…
tags: #bash #linux
—
🔔
Игнорирование больших данных и нейросетей сегодня — почти гарантия провала. Именно поэтому стоит начать погружение в востребованную сферу Data Science и понять, чем занимаются специалисты по машинному обучению и анализу данных. За 5 дней вы узнаете, как работают нейросети, и создадите свою для поиска новостей.
📌 Зарегистрируйтесь прямо сейчас и получите эксклюзивный бонус — гайд «Как пользоваться ChatGPT и Midjourney + 25 полезных нейросетей»: https://epic.st/R-UIR?erid=2VtzqvbBZiQ
Что будем делать на мини-курсе:
— Узнаем, где востребована наука о данных, и разберёмся в различиях 3 основных направлений
— Освоим азы языка Python и визуализируем данные с его помощью
— Изучим базовые конструкции языка SQL
🎁 Вас ждут подарки:
— Год бесплатного изучения английского языка
— Персональная карьерная консультация
— 5 полезных чек-листов для старта карьеры
🎉 Все участники мини-курса получат сертификат на скидку 10 000 рублей на любой курс Skillbox.
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка...
📌 Зарегистрируйтесь прямо сейчас и получите эксклюзивный бонус — гайд «Как пользоваться ChatGPT и Midjourney + 25 полезных нейросетей»: https://epic.st/R-UIR?erid=2VtzqvbBZiQ
Что будем делать на мини-курсе:
— Узнаем, где востребована наука о данных, и разберёмся в различиях 3 основных направлений
— Освоим азы языка Python и визуализируем данные с его помощью
— Изучим базовые конструкции языка SQL
🎁 Вас ждут подарки:
— Год бесплатного изучения английского языка
— Персональная карьерная консультация
— 5 полезных чек-листов для старта карьеры
🎉 Все участники мини-курса получат сертификат на скидку 10 000 рублей на любой курс Skillbox.
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка...
Такс. Вопрос из зала — как через bash скрипт запросить у пользователя пароль, но чтобы при вводе пароля отображались звездочки?
На этот счет у меня есть 2 кишки. Выбирай любую понравившуюся. Либо пиши свой вариант в комментариях, будет интересно посмотреть.
Кишка первая.
Согласен, выглядит хуёва, но вторая на визуал еще хуёвие.
В этой кишке есть нюанс, она НЕ работает с кнопкой Backspace, то есть ты не сможешь отредактировать, то что уже ввел.
Кишка вторая.
А тут уже более совершенный вариант, с рабочей кнопкой Backspace.
ㅤ
Чо делать дальше? Ну логично же, в переменную «a» записывается введенный пароль, а дальше делай с ним все что захочешь.
Вот такие пироги!
tags: #bash
—
🔔
На этот счет у меня есть 2 кишки. Выбирай любую понравившуюся. Либо пиши свой вариант в комментариях, будет интересно посмотреть.
Кишка первая.
a=''; while read -n 1 -s c; do [ "$c" = '' ] && break; echo -n '*'; a="$a$c"; done
Согласен, выглядит хуёва, но вторая на визуал еще хуёвие.
В этой кишке есть нюанс, она НЕ работает с кнопкой Backspace, то есть ты не сможешь отредактировать, то что уже ввел.
Кишка вторая.
a=''; while read -n 1 -s c; do [ "$c" = '' ] && break; if [ "$c" = $'\x7f' ]; then [ "$a" != "" ] && { a=${a:0:-1}; printf "\b \b"; }; else echo -n '*'; a="$a$c"; fi; done;
А тут уже более совершенный вариант, с рабочей кнопкой Backspace.
ㅤ
Чо делать дальше? Ну логично же, в переменную «a» записывается введенный пароль, а дальше делай с ним все что захочешь.
Вот такие пироги!
tags: #bash
—
🔔
Slack через 12 дней отключит аккаунты российских пользователей – это навсегда.
Уход Slack с российского рынка чем-то напоминает Доминика Торетто и его “последнюю гонку”. Или закрытие Sunlight.
Но тут все серьезно. Лучше не ждать 13 дней, когда Slack заблокирует ваше пространство и удалит все данные, как это случилось с тысячами команд в России.
В этот раз не пронесет. Оформить подписку с левого юрлица или оплатить зарубежной картой уже не получится.
Лучше заранее перейти на сервисы, которые точно никто не заблокирует. В идеале – развернуть мессенджер на своем сервере, в который можно перенести все ваши данные из Slack.
Мы как раз нашли такой – корпоративный мессенжер Compass.
Что он умеет:
🔹полный перенос всех данных из Slack в Compass
🔹все к чему вы привыкли в Slack: чаты, треды, реакции
🔹видеоконференции на 500+ участников
🔹интеграции со 100+ сервисами и боты
Compass можно использовать как в облаке, так и развернуть на своем сервере. А еще у сервиса открытый исходный код.
Попробуйте Compass ...
Уход Slack с российского рынка чем-то напоминает Доминика Торетто и его “последнюю гонку”. Или закрытие Sunlight.
Но тут все серьезно. Лучше не ждать 13 дней, когда Slack заблокирует ваше пространство и удалит все данные, как это случилось с тысячами команд в России.
В этот раз не пронесет. Оформить подписку с левого юрлица или оплатить зарубежной картой уже не получится.
Лучше заранее перейти на сервисы, которые точно никто не заблокирует. В идеале – развернуть мессенджер на своем сервере, в который можно перенести все ваши данные из Slack.
Мы как раз нашли такой – корпоративный мессенжер Compass.
Что он умеет:
🔹полный перенос всех данных из Slack в Compass
🔹все к чему вы привыкли в Slack: чаты, треды, реакции
🔹видеоконференции на 500+ участников
🔹интеграции со 100+ сервисами и боты
Compass можно использовать как в облаке, так и развернуть на своем сервере. А еще у сервиса открытый исходный код.
Попробуйте Compass ...