Улучшение входа по SSH с помощью меню выбора сеанса Tmux на Linux
В этой статье мы покажем, как настроить меню выбора сеанса tmux, которое активируется при SSH-входе в удаленную Linux-систему.
В этом меню будут перечислены существующие сессии tmux и предложена возможность создания новой сессии.
Tmux, терминальный мультиплексор, позволяет управлять несколькими терминальными сессиями в одном окне.
Это особенно удобно при работе с удаленными системами по протоколу SSH.
Общепринятой практикой является автоматическое присоединение к сессии tmux при входе в систему по SSH.
А что, если вы хотите иметь больше контроля, например, иметь возможность выбирать из существующих сессий или создавать новую?
Это можно сделать с помощью Bash-скрипта.
Сначала мы создадим скрипт tmux_menu.sh со следующим содержанием.
Этот скрипт будет получать существующие сессии tmux, отображать их пользователю и позволять ему либо подключиться к одной из них, либо создать новую сессию.
🖼️ Дочитать статью
🔨 bash_help
В этой статье мы покажем, как настроить меню выбора сеанса tmux, которое активируется при SSH-входе в удаленную Linux-систему.
В этом меню будут перечислены существующие сессии tmux и предложена возможность создания новой сессии.
Tmux, терминальный мультиплексор, позволяет управлять несколькими терминальными сессиями в одном окне.
Это особенно удобно при работе с удаленными системами по протоколу SSH.
Общепринятой практикой является автоматическое присоединение к сессии tmux при входе в систему по SSH.
А что, если вы хотите иметь больше контроля, например, иметь возможность выбирать из существующих сессий или создавать новую?
Это можно сделать с помощью Bash-скрипта.
Сначала мы создадим скрипт tmux_menu.sh со следующим содержанием.
Этот скрипт будет получать существующие сессии tmux, отображать их пользователю и позволять ему либо подключиться к одной из них, либо создать новую сессию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4✍3
Анализ вируса под Linux на Bash
Скрипт довольно большой — 300+ строк, интересен скрипт тем, что не просто загружает и запускает вредоносный код, но ещё и пытается заразить другие компьютеры в сети! Анализ вредоносных программ кроме очевидной цели — изучение принципа их работы, — также может помочь с выявлением приёмов, которым вирус пытался замаскироваться и закрепиться в системе. Последнее нужно для полного удаления вредоносного кода из компьютера. Разберём построчно весь код вируса.
Устанавливаются значение переменных $SHELL и $PATH — видимо, это необходимо для работоспособности скрипта:
🖼️ Ссылка на скрипт
🔨 bash_help
Скрипт довольно большой — 300+ строк, интересен скрипт тем, что не просто загружает и запускает вредоносный код, но ещё и пытается заразить другие компьютеры в сети! Анализ вредоносных программ кроме очевидной цели — изучение принципа их работы, — также может помочь с выявлением приёмов, которым вирус пытался замаскироваться и закрепиться в системе. Последнее нужно для полного удаления вредоносного кода из компьютера. Разберём построчно весь код вируса.
Устанавливаются значение переменных $SHELL и $PATH — видимо, это необходимо для работоспособности скрипта:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍5✍3
Сравнение строк в Bash
При написании сценариев на Bash не только опытные программисты, но и новички в области командного интерпретатора Bash сталкиваются с работой со строками. Наиболее часто это необходимо при считывании команд, вводимых пользователем в качестве аргументов для исполняемого сценария, а также при обработке текстовых файлов. И один из необходимых приёмов в таком случае — это сравнение строк.
В данной статье будет рассмотрено сравнение строк Bash, а также некоторые нюансы по использованию операций сравнения и решению часто встречающихся ошибок.
Содержание статьи:
— Сравнение строк Bash
— Сравнение строк по алфавиту на Bash
— Проверка строки на пустое значение
— Выводы
🖼️ Дочитать статью
🔨 bash_help
При написании сценариев на Bash не только опытные программисты, но и новички в области командного интерпретатора Bash сталкиваются с работой со строками. Наиболее часто это необходимо при считывании команд, вводимых пользователем в качестве аргументов для исполняемого сценария, а также при обработке текстовых файлов. И один из необходимых приёмов в таком случае — это сравнение строк.
В данной статье будет рассмотрено сравнение строк Bash, а также некоторые нюансы по использованию операций сравнения и решению часто встречающихся ошибок.
Содержание статьи:
— Сравнение строк Bash
— Сравнение строк по алфавиту на Bash
— Проверка строки на пустое значение
— Выводы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥8✍3
2 полезных ресурса для сетевых и системных администраторов:
💻 Admin Guides — обучающий канал по ОС Linux & Windows.
🗣️ Admin Help — крупнейший форум для админов в Telegram.
Подпишись, чтобы не потерять.
💻 Admin Guides — обучающий канал по ОС Linux & Windows.
🗣️ Admin Help — крупнейший форум для админов в Telegram.
Подпишись, чтобы не потерять.
✍2👍2
Полезные bash/shell/perl скрипты для Linux/Unix администраторов
Это сборник полезных bash/shell/perl скрипты для Linux/Unix администраторов.
Все скрипты рассортированы по категориям сервисов и программ. Например: dns, dhcp, samba, ispconfig, other и т.д.
Большинство скриптов были найдены на просторах Интернет, некоторые написаны мной.
🐙 Перейти на Github
🔨 bash_help
Это сборник полезных bash/shell/perl скрипты для Linux/Unix администраторов.
Все скрипты рассортированы по категориям сервисов и программ. Например: dns, dhcp, samba, ispconfig, other и т.д.
Большинство скриптов были найдены на просторах Интернет, некоторые написаны мной.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥8✍3
Приглашаем на мини-курс всех, кто хочет прокачать свои навыки в направлении Python-разработки. Вы на практике познакомитесь с задачами разработчиков. Научитесь создавать полезные приложения для заработка или решения личных задач. Для 200 первых участников мини-курс доступен бесплатно: https://epic.st/mBPNOP
Кому будет полезен мини-курс:
— Тем, кто хочет попасть в IT, но сомневается, что им подойдёт эта сфера
— Тем, кто уже знает основы Python и хочет дополнить базовые знания крутой практикой
— Тем, кто жаждет карьерных перемен и развития в новой профессии
Спикер — Анастасия Борнева. Руководитель направления по исследованию данных в «Сбере». Опыт в программировании — более 9 лет. С 2018 года — эксперт по автоматизации процессов с помощью искусственного интеллекта в «Сбере».
Что будете делать:
— Разберёте базовый синтаксис языка
— Создадите бота для Telegram, который умеет переводить голос в текст
— Сделаете бота умнее — «научите» его обрабатывать фотографии
— Узнаете, как парсить сайты — собирать информацию с веб-страниц в удобные таблицы
— Напишете сайт с помощью инструмента Flask
В финале будет прямой эфир, где вы сможете обсудить практические работы и задать вопросы спикеру.
Все участники получат в подарок полезные материалы с чек-листами, гайдами, скринкастами и другими бонусами.
Откройте новые возможности!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880.
Кому будет полезен мини-курс:
— Тем, кто хочет попасть в IT, но сомневается, что им подойдёт эта сфера
— Тем, кто уже знает основы Python и хочет дополнить базовые знания крутой практикой
— Тем, кто жаждет карьерных перемен и развития в новой профессии
Спикер — Анастасия Борнева. Руководитель направления по исследованию данных в «Сбере». Опыт в программировании — более 9 лет. С 2018 года — эксперт по автоматизации процессов с помощью искусственного интеллекта в «Сбере».
Что будете делать:
— Разберёте базовый синтаксис языка
— Создадите бота для Telegram, который умеет переводить голос в текст
— Сделаете бота умнее — «научите» его обрабатывать фотографии
— Узнаете, как парсить сайты — собирать информацию с веб-страниц в удобные таблицы
— Напишете сайт с помощью инструмента Flask
В финале будет прямой эфир, где вы сможете обсудить практические работы и задать вопросы спикеру.
Все участники получат в подарок полезные материалы с чек-листами, гайдами, скринкастами и другими бонусами.
Откройте новые возможности!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880.
👍2
Три полезных BASH-скрипта для пользователей Linux
Полезные скрипты, которые пригодятся при использовании Linux-дистрибутивов. В статье вас ожидает скриншот с исходным кодом скрипта и объяснением того, что он делает. В самом конце статьи оставлю ссылку на репозитории в своем GitHub, где будут расположены готовые скрипты.
1. Очистка кэша памяти и отображение дискового пространства
2. Поиск файла в директории
3. Резервное копирование директориии с последующим сжатием
🖼️ Ознакомиться со скриптами
🔨 bash_help
Полезные скрипты, которые пригодятся при использовании Linux-дистрибутивов. В статье вас ожидает скриншот с исходным кодом скрипта и объяснением того, что он делает. В самом конце статьи оставлю ссылку на репозитории в своем GitHub, где будут расположены готовые скрипты.
1. Очистка кэша памяти и отображение дискового пространства
2. Поиск файла в директории
3. Резервное копирование директориии с последующим сжатием
Please open Telegram to view this post
VIEW IN TELEGRAM
✍7👍7🔥5😐2
Bash Scripting on Linux
Видео:
1 — Course Introduction
2 — Hello World
3 — Variables
4 — Basic Math
5 — If Statements
6 — Exit Codes
7 — While Loops
8 — Universal
9 — For Loops
...
18 — Closing/Next
📹 Плейлист на YouTube
🔨 bash_help
Видео:
1 — Course Introduction
2 — Hello World
3 — Variables
4 — Basic Math
5 — If Statements
6 — Exit Codes
7 — While Loops
8 — Universal
9 — For Loops
...
18 — Closing/Next
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍7✍3
Онлайн редакторы-компиляторы для BASH
Иногда бывает, что нет возможности писать BASH-скрипты на локальной машине. Например, у вас под рукой может оказаться устройство, на котором установлена Windows и предназначен он исключительно для оконных задач. Не хочется загромождать его WSL или чем-то подобным. При этом иногда возникает срочная необходимость написать скрипт и каким-то образом использовать его (например, передать клиенту). Время ожидания может быть ограничено, и порой даже в дороге с телефона нужно быстро что-то скомпоновать
В таких случаях можно использовать онлайн редакторы-компиляторы, отлично интегрированные с Bash:
1. Rextester
2. Mycompiler
3. Leetcode
🔨 bash_help
Иногда бывает, что нет возможности писать BASH-скрипты на локальной машине. Например, у вас под рукой может оказаться устройство, на котором установлена Windows и предназначен он исключительно для оконных задач. Не хочется загромождать его WSL или чем-то подобным. При этом иногда возникает срочная необходимость написать скрипт и каким-то образом использовать его (например, передать клиенту). Время ожидания может быть ограничено, и порой даже в дороге с телефона нужно быстро что-то скомпоновать
В таких случаях можно использовать онлайн редакторы-компиляторы, отлично интегрированные с Bash:
1. Rextester
2. Mycompiler
3. Leetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥7✍6
Главное событие весны в сфере информационной безопасности.
⚡️ Staffcop: Совершенно Безопасно ⚡️
Первая конференция, которую организовала компания Staffcop - это платформа для обмена знаниями, нетворкинга и обсуждения последних достижений в области защиты информации.
Вместе с КиберДедом (Андреем Масаловичем) мы приглашаем на день, полный инсайтов и открытий.
📍21 марта в 10:00 по МСК мы ждем на прямую трансляцию всех, кто готов взять на себя контроль над своей цифровой безопасностью.
Полная программа мероприятия и регистрация на сайте
Ждем вас!
ООО «АТОМ БЕЗОПАСНОСТЬ», ИНН 5408298569 , ОГРН 1125476195459 erid:2SDnjbrMxDW
⚡️ Staffcop: Совершенно Безопасно ⚡️
Первая конференция, которую организовала компания Staffcop - это платформа для обмена знаниями, нетворкинга и обсуждения последних достижений в области защиты информации.
Вместе с КиберДедом (Андреем Масаловичем) мы приглашаем на день, полный инсайтов и открытий.
📍21 марта в 10:00 по МСК мы ждем на прямую трансляцию всех, кто готов взять на себя контроль над своей цифровой безопасностью.
Полная программа мероприятия и регистрация на сайте
Ждем вас!
ООО «АТОМ БЕЗОПАСНОСТЬ», ИНН 5408298569 , ОГРН 1125476195459 erid:2SDnjbrMxDW
🔥4👍1
Bash скрипт, который находит публичный IP-адрес устройства, на котором запущен
# Имя скрипта: ip_info.sh
# Описание: Получает и отображает информацию об IP-адресах.
# Usage: ip_info.sh [—help] [—public] [—private] [—location] # —help — Отображает справочную информацию.
# —public — Отображает публичный IP-адрес.
# —private — Отображает частный IP-адрес.
# —location — Отображение информации о местоположении публичного IP-адреса.
🖼️ Ссылка на скрипт
🔨 bash_help
# Имя скрипта: ip_info.sh
# Описание: Получает и отображает информацию об IP-адресах.
# Usage: ip_info.sh [—help] [—public] [—private] [—location] # —help — Отображает справочную информацию.
# —public — Отображает публичный IP-адрес.
# —private — Отображает частный IP-адрес.
# —location — Отображение информации о местоположении публичного IP-адреса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥9✍5
Как отслеживать выполнение работающего bash-скрипта в Linux
Это полезный навык для контроля над вашими задачами. Вот несколько способов:
Отправка вывода в файл: Используйте
Использование `ps` и `grep`: С помощью команды
Логирование: Вставьте
Используйте `trap`: Вы можете создать собственные логи и обработчики для отслеживания ошибок или успешного выполнения.
Таким образом, вы всегда будете в курсе, что происходит с вашими скриптами и сможете быстро реагировать на любые проблемы.
🔨 bash_help
Это полезный навык для контроля над вашими задачами. Вот несколько способов:
Отправка вывода в файл: Используйте
./myscript.sh > output.txt
, чтобы записать вывод скрипта в файл. Теперь вы можете мониторить его содержимое.Использование `ps` и `grep`: С помощью команды
ps aux | grep myscript.sh
вы увидите информацию о запущенных процессах.Логирование: Вставьте
set -x
в начало скрипта, и он будет выводить каждую команду перед выполнением. Используйте `trap`: Вы можете создать собственные логи и обработчики для отслеживания ошибок или успешного выполнения.
Таким образом, вы всегда будете в курсе, что происходит с вашими скриптами и сможете быстро реагировать на любые проблемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22✍5🔥3
Кто в компах шарит?🤔
Многие до сих пор в шоке, что есть ребята, которые могут поменять термопасту на проце — и не могут заработать больше 30-40к в месяц. Вы чем вообще занимаетесь?
Вот человек просто перепродаёт б/у компы и учит других этому, ремеслу, потому что рынок - огромный, его ученики спокойно делают от 100к в месяц.
Если ты из тех, кто хочет:
🔥 иметь от 100к дополнительного дохода;
🔥 уйти с найма и работать сколько хочешь;
🔥 быстро поднять денег
Подписывайся на Диму Иванова и зарабатывай сколько хочешь, потолка нет ☝️
https://t.me/+KwoyOQWCMCcyOGNi
Многие до сих пор в шоке, что есть ребята, которые могут поменять термопасту на проце — и не могут заработать больше 30-40к в месяц. Вы чем вообще занимаетесь?
Вот человек просто перепродаёт б/у компы и учит других этому, ремеслу, потому что рынок - огромный, его ученики спокойно делают от 100к в месяц.
Если ты из тех, кто хочет:
Подписывайся на Диму Иванова и зарабатывай сколько хочешь, потолка нет ☝️
https://t.me/+KwoyOQWCMCcyOGNi
Please open Telegram to view this post
VIEW IN TELEGRAM
😐19👍2
Linux: делаем скриншот и отправляем его на электронную почту
Для успешной работы скрипта необходимо сначала установить:
— ssmtp (обязательно настроить);
— mpack;
— scrot.
🔨 bash_help
Для успешной работы скрипта необходимо сначала установить:
— ssmtp (обязательно настроить);
— mpack;
— scrot.
#!/usr/bin/env bash
# Важно! Для работы скрипта необходимо установить и настроить ssmtp, mpack и scrot
# путь к директории со скриншотами
dirpath=/home/$USER/screenshots
# проверяем наличие директории (если нет, то создаем). Делаем скриншот с названием по маске: ДД-ММ-ГГ_ЧЧ-ММ-СС.jpg
if [[ -d $dirpath ]]; then
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
else
mkdir -p "$dirpath"
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
fi
# отправляем письмо на почту
echo "Скриншот с сервера: $HOSTNAME" > $dirpath/message_body.txt
mpack -s "Скриншот" -d $dirpath/message_body.txt $screenshot your_login@mail.ru
# удаляем скриншот
rm -f $screenshot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7✍3
Скрипт для мониторинга дискового пространства в Linux
Скрипт ниже предназначен для мониторинга использования дискового пространства на указанном разделе сервера. Настраиваемые параметры включают в себя максимально допустимый процент использования дискового пространства (`MAX
Скрипт использует команду df для сбора информации об использовании диска и отправляет предупреждения по электронной почте, если текущее использование превышает заданный порог.
🔨 bash_help
Скрипт ниже предназначен для мониторинга использования дискового пространства на указанном разделе сервера. Настраиваемые параметры включают в себя максимально допустимый процент использования дискового пространства (`MAX
), адрес электронной почты для получения оповещений (
EMAIL) и целевой раздел (
PARTITION`).Скрипт использует команду df для сбора информации об использовании диска и отправляет предупреждения по электронной почте, если текущее использование превышает заданный порог.
#!/bin/bash
# Set the maximum allowed disk space usage percentage
MAX=90
# Set the email address to receive alerts
EMAIL=user@example.com
# Set the partition to monitor (change accordingly, e.g., /dev/sda1)
PARTITION=/dev/sda1
# Get the current disk usage percentage and related information
USAGE_INFO=$(df -h "$PARTITION" | awk 'NR==2 {print $5, $1, $2, $3, $4}' | tr '\n' ' ')
USAGE=$(echo "$USAGE_INFO" | awk '{print int($1)}') # Remove the percentage sign
if [ "$USAGE" -gt "$MAX" ]; then
# Send an email alert with detailed disk usage information
echo -e "Warning: Disk space usage on $PARTITION is $USAGE%.\n\nDisk Usage Information:\n$USAGE_INFO" | \
mail -s "Disk Space Alert on $HOSTNAME" "$EMAIL"
fi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥5✍4
От начальника устали, баги в коде задолбали?
Есть решение проблемы — концентрированные мемы.
@progeri — канал, на котором программисты метко шутят про рабочую рутину и делятся смешными ситуациями.
Британские ученые установили: 10 минут чтения в день поднимают настроение, учат с юмором относиться к неудачам и снижают концентрацию негатива на 961%!
Есть решение проблемы — концентрированные мемы.
@progeri — канал, на котором программисты метко шутят про рабочую рутину и делятся смешными ситуациями.
Британские ученые установили: 10 минут чтения в день поднимают настроение, учат с юмором относиться к неудачам и снижают концентрацию негатива на 961%!
👍3😐1
Мощная команда в bash —
Когда вы запускаете скрипт в bash,
1. Пример с проверкой наличия файла:
2. Пример с командой, возвращающей ненулевой код:
3. Пример с ошибкой внутри подскрипта:
Эти примеры демонстрируют, как
🔨 bash_help
set -e
Когда вы запускаете скрипт в bash,
set -e
делает ваш код более надежным и предсказуемым. Эта команда говорит оболочке "если какая-то команда в скрипте завершится неудачей (ненулевым кодом возврата), то прекрати выполнение скрипта". Вот несколько примеров использования set -e
для обеспечения стабильности ваших скриптов:1. Пример с проверкой наличия файла:
#!/bin/bash
set -e
FILE="/путь/к/вашему/файлу.txt"
# Проверяем наличие файла
if [ ! -e "$FILE" ]; then
echo "Ошибка: Файл $FILE не найден."
exit 1
fi
# Ваш код, который зависит от наличия файла
2. Пример с командой, возвращающей ненулевой код:
#!/bin/bash
set -e
# Пытаемся удалить несуществующий каталог
rmdir /несуществующий/каталог
# Если команда завершится неудачей, скрипт автоматически завершится
3. Пример с ошибкой внутри подскрипта:
#!/bin/bash
set -e
# Ваш код
(
# Подскрипт, возвращающий ненулевой код
command1
command2
command3
) || {
echo "Подскрипт завершился ошибкой."
exit 1
}
# Ваш код, который выполнится только при успешном завершении подскрипта
Эти примеры демонстрируют, как
set -e
обеспечивает немедленное завершение выполнения скрипта при обнаружении ошибок. Используйте эту команду, чтобы сделать ваши скрипты более надежными и устойчивыми к непредвиденным ситуациям!Please open Telegram to view this post
VIEW IN TELEGRAM
👍16✍8🔥7
Расширение команды Bash
В командной строке или в сценариях оболочки есть три основных способа взаимодействия команд друг с другом. Первый и второй способ — через файловый ввод-вывод через каналы и среду. Третий способ — через параметр команды. Однако, чтобы команда могла взаимодействовать с другой через параметры, она или ее результат должны быть включены в список параметров. Вот где в игру вступает расширение команд или подстановка команд. Здесь мы рассмотрим все, что вам нужно знать о подстановке команд, чтобы писать сценарии bash, как босс!
Подстановка команд — это основная функция оболочки, которая позволяет выводить одну или несколько команд на месте и использовать их, как расширение переменных, в качестве аргументов для расширения другой команды. Другими словами, результат выполнения команд помещается в недолговечную анонимную переменную и подставляется в окружающую команду.
Есть два приемлемых синтаксиса или способа выполнения подстановки команд в bash:
1. синтаксис знака доллара
2. синтаксис обратной кавычки
🖼️ Дочитать статью
🔨 bash_help
В командной строке или в сценариях оболочки есть три основных способа взаимодействия команд друг с другом. Первый и второй способ — через файловый ввод-вывод через каналы и среду. Третий способ — через параметр команды. Однако, чтобы команда могла взаимодействовать с другой через параметры, она или ее результат должны быть включены в список параметров. Вот где в игру вступает расширение команд или подстановка команд. Здесь мы рассмотрим все, что вам нужно знать о подстановке команд, чтобы писать сценарии bash, как босс!
Подстановка команд — это основная функция оболочки, которая позволяет выводить одну или несколько команд на месте и использовать их, как расширение переменных, в качестве аргументов для расширения другой команды. Другими словами, результат выполнения команд помещается в недолговечную анонимную переменную и подставляется в окружающую команду.
Есть два приемлемых синтаксиса или способа выполнения подстановки команд в bash:
1. синтаксис знака доллара
$( command )
2. синтаксис обратной кавычки
`command`
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5✍4
Bashark — инструмент пост-эксплуатации для Linux
Bashark предназначен специально для операционных систем Linux и предлагает обширный набор функций, делая его полезным для специалистов по кибербезопасности.
Благодаря Bashark, вам будет проще выполнять разнообразные задачи, связанные с эксплуатацией системы, включая сбор информации, управление процессами и файлами и многое другое.
🐙 Перейти на Github
🔨 bash_help
Bashark предназначен специально для операционных систем Linux и предлагает обширный набор функций, делая его полезным для специалистов по кибербезопасности.
Благодаря Bashark, вам будет проще выполнять разнообразные задачи, связанные с эксплуатацией системы, включая сбор информации, управление процессами и файлами и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6✍4😐2