#! /bin/bash
# Сброс всех переменных, которые может использовать система
# Очистка экрана терминала
clear
unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage
while getopts iv name
do
case $name in
i)iopt=1;;
v)vopt=1;;
*)echo "Invalid arg";;
esac
done
if [[ ! -z $iopt ]]
then
{
wd=$(pwd)
basename "$(test -L "$0" && readlink "$0" || echo "$0")" > /tmp/scriptname
scriptname=$(echo -e -n $wd/ && cat /tmp/scriptname)
su -c "cp $scriptname /usr/bin/monitor" root && echo "Congratulations! Script Installed, now run monitor Command" || echo "Installation failed"
}
fi
if [[ ! -z $vopt ]]
then
{
echo -e
}
fi
if [[ $# -eq 0 ]]
then
{
# Определение переменной tecreset
tecreset=$(tput sgr0)
# Проверка подключения к Интернету
ping -c 1 google.com &> /dev/null && echo -e '\E[32m'"Internet: $tecreset Connected" || echo -e '\E[32m'"Internet: $tecreset Disconnected"
# Определение типа ОС
os=$(uname -o)
echo -e '\E[32m'"Operating System Type :" $tecreset $os
# Определение версии и названия выпуска ОС
cat /etc/os-release | grep 'NAME\|VERSION' | grep -v 'VERSION_ID' | grep -v 'PRETTY_NAME' > /tmp/osrelease
echo -n -e '\E[32m'"OS Name :" $tecreset && cat /tmp/osrelease | grep -v "VERSION" | cut -f2 -d\"
echo -n -e '\E[32m'"OS Version :" $tecreset && cat /tmp/osrelease | grep -v "NAME" | cut -f2 -d\"
# Проверка архитектуры
architecture=$(uname -m)
echo -e '\E[32m'"Architecture :" $tecreset $architecture
# Проверка выпуска ядра
kernelrelease=$(uname -r)
echo -e '\E[32m'"Kernel Release :" $tecreset $kernelrelease
# Определение имени хоста
echo -e '\E[32m'"Hostname :" $tecreset $HOSTNAME
# Определение внутреннего IP
internalip=$(hostname -I)
echo -e '\E[32m'"Internal IP :" $tecreset $internalip
# Определение публичного IP
externalip=$(curl -s ipecho.net/plain;echo)
echo -e '\E[32m'"External IP : $tecreset "$externalip
# Проверка DNS
nameservers=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}')
echo -e '\E[32m'"Name Servers :" $tecreset $nameservers
# Проверка вошедших в систему пользователей
who>/tmp/who
echo -e '\E[32m'"Logged In users :" $tecreset && cat /tmp/who
# Мониторинг использования ОЗУ и SWAP
free -h | grep -v + > /tmp/ramcache
echo -e '\E[32m'"Ram Usages :" $tecreset
cat /tmp/ramcache | grep -v "Swap"
echo -e '\E[32m'"Swap Usages :" $tecreset
cat /tmp/ramcache | grep -v "Mem"
# Мониторинг использование диска
df -h| grep 'Filesystem\|/dev/sda*' > /tmp/diskusage
echo -e '\E[32m'"Disk Usages :" $tecreset
cat /tmp/diskusage
# Проверка средней нагрузки
loadaverage=$(top -n 1 -b | grep "load average:" | awk '{print $10 $11 $12}')
echo -e '\E[32m'"Load Average :" $tecreset $loadaverage
# Определение длительности сеанса работы ОС
tecuptime=$(uptime | awk '{print $3,$4}' | cut -f1 -d,)
echo -e '\E[32m'"System Uptime Days/(HH:MM) :" $tecreset $tecuptime
# Сброс значений переменных
unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage
# Удаление временных файлов
rm /tmp/osrelease /tmp/who /tmp/ramcache /tmp/diskusage
}
fi
shift $(($OPTIND -1))
chmod 755 monitor.sh
./monitor.sh -i
root
. После завершения установки скрипта, для его запуска требуется просто выполнить команду monitor
./path/to/script/monitor.sh
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7✍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3✍2😐1
Полный контроль над Kubernetes через мониторинг и логи
⚡️Хотите уверенно выявлять сбои, мониторить метрики и быстро находить ошибки в k8s? За 12 часов теории и 44 часа практики вы не только освоите широкий стек инструментов, но и best practices по ним.
⚡️Курс «Мониторинг и логирование инфраструктуры в Kubernetes» — быстрый способ научиться выстраивать эффективную систему мониторинга. На обучении вы поймёте:
- Как обеспечить долгосрочное хранение метрик распределённо месяцы и годы для анализа динамики и сравнения графиков
- Какие метрики стоит собирать с помощью Prometheus
- Как визуализировать мониторинг с помощью Grafana и как грамотно настроить алерты
☄️Старт — 7 июля. Прямо сейчас по промокоду LETO2025 вы можете занять место со скидкой ❗️50%❗️
*промокод вводится при оформлении оплаты
Вводите в эксплуатацию мониторинг и логирование инфраструктуры в k8s сразу после курса и станьте ещё востребованнее на рынке IT.
👉🏻Смотреть программу и применить скидку
⚡️Хотите уверенно выявлять сбои, мониторить метрики и быстро находить ошибки в k8s? За 12 часов теории и 44 часа практики вы не только освоите широкий стек инструментов, но и best practices по ним.
⚡️Курс «Мониторинг и логирование инфраструктуры в Kubernetes» — быстрый способ научиться выстраивать эффективную систему мониторинга. На обучении вы поймёте:
- Как обеспечить долгосрочное хранение метрик распределённо месяцы и годы для анализа динамики и сравнения графиков
- Какие метрики стоит собирать с помощью Prometheus
- Как визуализировать мониторинг с помощью Grafana и как грамотно настроить алерты
☄️Старт — 7 июля. Прямо сейчас по промокоду LETO2025 вы можете занять место со скидкой ❗️50%❗️
*промокод вводится при оформлении оплаты
Вводите в эксплуатацию мониторинг и логирование инфраструктуры в k8s сразу после курса и станьте ещё востребованнее на рынке IT.
👉🏻Смотреть программу и применить скидку
✍2👍1
В этом кратком руководстве вы увидите, как сравнивать строки в сценариях оболочки Bash.
if [ "$string1" == "$string2" ]
if [ "$string1" == "This is my string" ]
#!/bin/bash
string1="MyString"
string2="MyString"
if [ "$string1" == "$string2" ]
then
echo "Equal Strings"
else
echo "Strings not equal"
fi
Между
[
и именем переменной и оператором равенства ==
должен быть пробел. Если вы пропустите здесь какой-либо пробел, вы увидите ошибку типа «ожидается унарный оператор» или отсутствие «]
».if [ "$string1" != "Not MyString" ]
#!/bin/bash
string1="MyString"
if [ "$string1" != "Not MyString" ]
then
echo "Not Equal Strings"
else
echo "Strings equal"
fi
if [ -z "$VAR" ]
-z
фактически проверяет, равна ли длина переменной нулю или нет. Если переменная не установлена или она пуста (равна « »), длина будет равна нулю и, следовательно, условие вернет true.Полный пример:
#!/bin/bash
string1=
string2=""
if [ -z "$string1" ]
then
echo "Null Strings"
fi
if [ -z "$string2"]
then
echo "Empty String"
fi
if
с двойными скобками, например:if [[ "$string1" == "My String" ]]
if [ $string1 == "My String" ]
$string1
пуста или не определена в приведенном выше коде, эта строка станет эквивалентной if
[ == "$string2" ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5✍4
Работать и не уставать, достигать цели, но делать это в кайф - реально!
Как научиться делать дела и не выгорать?
Психолог взрослого человека — канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам.
▪️ Как научиться отвлекаться от работы и отдыхать?
▪️ Как совместить кучу рабочих задач и время с семьей?
▪️ Как справиться с прокрастинацией?
▪️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит?
Подписывайтесь на канал @vadimpetrovpsi и научитесь работать без упахивания, выгорания и ущерба для личной жизни!
👨🏻💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс по выходу из апатии.
Как научиться делать дела и не выгорать?
Психолог взрослого человека — канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам.
▪️ Как научиться отвлекаться от работы и отдыхать?
▪️ Как совместить кучу рабочих задач и время с семьей?
▪️ Как справиться с прокрастинацией?
▪️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит?
Подписывайтесь на канал @vadimpetrovpsi и научитесь работать без упахивания, выгорания и ущерба для личной жизни!
👨🏻💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс по выходу из апатии.
✍3🔥2👍1
sudo apt update
sudo apt install certbot
sudo certbot certonly --standalone -d project.com -d www.project.com
sudo certbot certificates
--standalone
означает, что Certbot временно поднимет собственный сервер на 80 порту для валидации домена. Проверьте, что порт 80 не занят! Иначе ничего не заработает.sudo systemctl stop nginx
systemctl list-timers | grep certbot
sudo certbot renew --dry-run
Certbot dry-run was successful.
journalctl -u certbot.service --no-pager --since "2 days ago"
sudo systemctl stop certbot.timer
sudo systemctl disable certbot.timer
sudo crontab -e
0 0 1 * * /usr/bin/certbot renew --standalone --quiet
which certbot
#!/bin/bash
APP_PATH="/home/projects/project"
DOMAIN="project.com"
FULL_CHAIN_SRC="/etc/letsencrypt/live/${DOMAIN}/fullchain.pem"
PRIVATE_KEY_SRC="/etc/letsencrypt/live/${DOMAIN}/privkey.pem"
FULL_CHAIN_DIST="${APP_PATH}/volumes/etc/ssl/certs/project_com.full.crt"
PRIVATE_KEY_DIST="${APP_PATH}/volumes/etc/ssl/private/project_com.key"
echo "Starting script execution: $(date "+%Y-%m-%d %H:%M:%S")"
echo "Stopping the service..."
systemctl stop my-project.service
echo "Renewing the certificates..."
/usr/bin/certbot renew --standalone --quiet
/usr/bin/certbot certificates
echo "Copying the certificates to the project..."
cp -f "$FULL_CHAIN_SRC" "$FULL_CHAIN_DIST"
cp -f "$PRIVATE_KEY_SRC" "$PRIVATE_KEY_DIST"
echo "Setting correct permissions for the certificates..."
chmod 644 "$FULL_CHAIN_DIST"
chmod 644 "$PRIVATE_KEY_DIST"
echo "Running the service..."
systemctl start my-project.service
echo "End of script execution: $(date "+%Y-%m-%d %H:%M:%S")"
0 0 1 * * sh /home/projects/project/cert-renew.sh >> /var/log/project-cert-renew.log 2>&1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥8✍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6✍3🔥2
network_discovery.sh
— поиск устройств в сети (ping
, arp
, быстрая портовая разведка)port_scanner.sh
— подробный портскан через nmap
, masscan
vulnerability_scanner.sh
— скрипты nmap
, nikto
, sqlmap
, слабые паролиsystem_info.sh
— вывод сведений об ОС, железе, конфигурации, защитеattack_tools.sh
— брутфорс и активные тесты (опционально, с предупреждением)nmap
, masscan
— сканеры портовhydra
, john
— проверка паролейnikto
, sqlmap
— уязвимости веба и SQLettercap
, aircrack-ng
— сетевые проверкиconfigs/language.conf
или на первом запуске.Please open Telegram to view this post
VIEW IN TELEGRAM
👍7✍4🔥2
😳 Стыдно за ваш пайплайн? Исправьте это за 3 недели
Ваши пайплайны нестабильны, а на собеседованиях теряетесь без практики? Приглашаем вас на практикум для инженеров: будем решать реальные задачи и шлифовать пайплайны с фидбэком от эксперта.
Всего за 3 недели практикума вы:
👉 Решите 3 реальных кейса — CI для проекта на Python, пересборка проекта с включением изменений, траблшутинг
👉 Получите фидбэк от эксперта — Вячеслав Федосеев (TeamLead DevOps в «Честный знак», 20+ лет в IT) разберёт ваши решения и ошибки
👉 Будете тренироваться на best practices — только практика с реальными инженерными задачами
👉 Сможете учиться без отрыва от работы — 1 задача в неделю
👉 Оформите портфолио для собеседования — решения останутся у вас в репозитории, чтобы сразу показать на собеседовании
☑️ Станете увереннее и поймёте, как пайплайн работает изнутри
❗️Для инженеров с опытом от 1 года, знакомых с Git и GitLab CI, которым не хватает практики и фидбэка.
Ознакомиться с программой и присоединиться к обучению — по ссылке
Ваши пайплайны нестабильны, а на собеседованиях теряетесь без практики? Приглашаем вас на практикум для инженеров: будем решать реальные задачи и шлифовать пайплайны с фидбэком от эксперта.
Всего за 3 недели практикума вы:
👉 Решите 3 реальных кейса — CI для проекта на Python, пересборка проекта с включением изменений, траблшутинг
👉 Получите фидбэк от эксперта — Вячеслав Федосеев (TeamLead DevOps в «Честный знак», 20+ лет в IT) разберёт ваши решения и ошибки
👉 Будете тренироваться на best practices — только практика с реальными инженерными задачами
👉 Сможете учиться без отрыва от работы — 1 задача в неделю
👉 Оформите портфолио для собеседования — решения останутся у вас в репозитории, чтобы сразу показать на собеседовании
☑️ Станете увереннее и поймёте, как пайплайн работает изнутри
❗️Для инженеров с опытом от 1 года, знакомых с Git и GitLab CI, которым не хватает практики и фидбэка.
Ознакомиться с программой и присоединиться к обучению — по ссылке
✍1👍1😐1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8✍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Пишем для тех, кто на «ты» с IT. Облачные технологии, цифровая трансформация, вебинары, кейсы из бизнеса и реальные сценарии работы IaaS, 1С, VDI, GPU и не только.
Подборка материалов:
— Тестирование 1С на разных платформах: AlmaLinux, Ubuntu, Windows
— AMD или Intel, Windows или Ubuntu: что выбрать для работы с 1С
— Как использовать WebUI для Nginx
— Исправление ошибок RDP в Windows
— Как правильно хранить бэкапы, чтобы оставить их «живыми»
— Как защитить сервер от шифровальщиков и не потерять данные
— Развертывание сервера 1С на Astra Linux
⛅️ Присоединяйся к mClouds — здесь пишут инженеры, а не маркетологи. Без воды и заезженных штампов. Только практический IT-контент, который помогает расти в профессии.
#реклама
О рекламодателе
Подборка материалов:
— Тестирование 1С на разных платформах: AlmaLinux, Ubuntu, Windows
— AMD или Intel, Windows или Ubuntu: что выбрать для работы с 1С
— Как использовать WebUI для Nginx
— Исправление ошибок RDP в Windows
— Как правильно хранить бэкапы, чтобы оставить их «живыми»
— Как защитить сервер от шифровальщиков и не потерять данные
— Развертывание сервера 1С на Astra Linux
#реклама
О рекламодателе
Please open Telegram to view this post
VIEW IN TELEGRAM
✍2👍2🔥1😐1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7✍3🔥3
Освоите методы мониторинга черного и белого ящика на открытом уроке «Мониторинг распределенных систем»
Зачем нужен мониторинг в распределенных системах и в каких случаях он критичен?
Изучите на практике как правильно ставить задачи для мониторинга, чтобы получать полезные и точные данные
✅ Управляй доступностью и надёжностью в ведущих компаниях: стань экспертом SRE!
SRE — это не просто тренд, а стандарт управления IT-инфраструктурой в крупных компаниях. Хочешь играть по правилам, а не тушить пожары?
⬆️ Протестируй курс «SRE практики и инструменты» на открытом уроке
https://tglink.io/70625c2754fb?erid=2W5zFJGJo6p
#реклама
О рекламодателе
Зачем нужен мониторинг в распределенных системах и в каких случаях он критичен?
Изучите на практике как правильно ставить задачи для мониторинга, чтобы получать полезные и точные данные
✅ Управляй доступностью и надёжностью в ведущих компаниях: стань экспертом SRE!
SRE — это не просто тренд, а стандарт управления IT-инфраструктурой в крупных компаниях. Хочешь играть по правилам, а не тушить пожары?
⬆️ Протестируй курс «SRE практики и инструменты» на открытом уроке
https://tglink.io/70625c2754fb?erid=2W5zFJGJo6p
#реклама
О рекламодателе
✍2
|
- он позволяет отправлять вывод одной команды в другую. К примеру, команда ls
выводит список файлов в директории и команда grep
возвращает результаты поиска по заданным параметром. С помощью пайпа эти две команды можно скомбинировать - например если вам нужно найти в директории конкретный файл (в данном случае - некую аудиозапись, которая начинается как recording010101
:ls | grep recording010101
*
- звездочка. К примеру, если нужно удалить все файлы, которые начинаются на слово recording01
, то можно ввести следующую команду:rm recording01*
Это может быть очень полезным при написании скриптов, которые удаляют по крону старые логи или файлы аудио-записей. Но с данной командой нужно быть очень аккуратным - если забыть проставить критерии поиска, то команда вида
rm *
удалит всё содержимое директории.>
. Сценариев использования масса, как пример приведу вывод команды ls
в текстовый файл (ниже) - если у вас в директории очень большое количество файлов, то, для общего понимания что же именно в ней находится будет проще работать с текстовым файлом или же можно запустить рекурсивный скрипт с занесением содержимого всех каталогов в текстовые, например:ls > testfile.txt
~
. Просто введите cd ~
и вы попадете в директорию /home/user
.&
.Если хотите запустить, к примеру, Wireshark в бэкграунде, необходимо написать
wireshark &
- по умолчанию Bash запускает каждую программу в текущем терминале. Поэтому это может очень пригодиться, если вам нужно выполнять какую-то программу и все ещё пользоваться тем же терминалом. А если нужно запустить Wireshark через какое-то время, то можно воспользоваться командой &&
- к примеру, sleep 360 && wireshark
- это запустит wireshark
через 6 минут. Сама команда sleep
не делает ничего, это, грубо говоря, просто условный таймер.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11✍4😐4🔥3
«…У меня всё работает локально» — и вот ты уже второй час копаешься в логах Jenkins, а выкатка задерживается…😬
Команды, которые автоматизируют CI/CD, не зависят от ручных сборок и человеческого фактора. Их инженеры спят спокойно и при этом ценятся выше — потому что стабильный пайплайн экономит часы работы всей команды.
👉🏻21 июля стартует курс «CI/CD с Jenkins», на котором вы поймёте, как автоматизировать процесс интеграции и поставки, сократить количество багов и ускорить релизы.
Вы научитесь:
🔵 настраивать Jenkins с нуля — от плагинов до облачных агентов;
🔵 писать надёжные пайплайны и понимать, почему они сломались;
🔵 деплоить в Kubernetes — чтобы ваш код летел в прод, а не в ошибки.
Пройдете путь от настройки первого плагина и создания простого пайплайна до Jenkins as code и внедрения в Kubernetes. Без лишней теории, только то, что используют в топовых командах.
❗️По промокоду LETO2025 на курс действует скидка 50%
Успейте забрать обучение с выгодой и вывести свои навыки автоматизации на уровень, за который платят больше.
➡️ Занять место со скидкой
Команды, которые автоматизируют CI/CD, не зависят от ручных сборок и человеческого фактора. Их инженеры спят спокойно и при этом ценятся выше — потому что стабильный пайплайн экономит часы работы всей команды.
👉🏻21 июля стартует курс «CI/CD с Jenkins», на котором вы поймёте, как автоматизировать процесс интеграции и поставки, сократить количество багов и ускорить релизы.
Вы научитесь:
🔵 настраивать Jenkins с нуля — от плагинов до облачных агентов;
🔵 писать надёжные пайплайны и понимать, почему они сломались;
🔵 деплоить в Kubernetes — чтобы ваш код летел в прод, а не в ошибки.
Пройдете путь от настройки первого плагина и создания простого пайплайна до Jenkins as code и внедрения в Kubernetes. Без лишней теории, только то, что используют в топовых командах.
❗️По промокоду LETO2025 на курс действует скидка 50%
Успейте забрать обучение с выгодой и вывести свои навыки автоматизации на уровень, за который платят больше.
➡️ Занять место со скидкой
✍2
$()
, {}
, []
, $(( ))
, ${}
, ()
и [[ ]]
.Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8✍6
Forwarded from 1337
Победителей будет много, а для участия нужны лишь пара кликов:
1. Подписаться на Рифмы и Панчи, 1337 и на Техно.
2. Нажать «Участвовать» под этим постом
Что по призам:
1 место - Iphone 16 Pro
2 место - PS5 Slim
3 место - Nintendo Switch 2
4-10 места - 10 000 рублей на карту
Победителей определим 21 июля в 18:00 МСК. Всем удачи!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5✍4🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
✍9👍4🔥3
--write
результат можно записать в файл.Please open Telegram to view this post
VIEW IN TELEGRAM
✍2👍2