Утилита touch в Linux: больше, чем просто создание файлов
Многие знают, что с помощью команды
Или даже
Но это лишь часть возможностей. Первоначально
⏳ Обновление времени доступа и изменения
Посмотреть текущее время доступа можно так:
Обновить время
Посмотреть
Точно так же можно обновить время изменения файла:
Зачем❓
1️⃣ Контроль синхронизации. Например, перед резервным копированием можно обновить метку времени файла. Это поможет убедиться, что синхронизация прошла, даже если файлы не изменились.
2️⃣ Подмена даты изменения.
Теперь дата файла — 01 декабря 2024 года, 10:05. Этот приём активно используют злоумышленники, чтобы замаскировать вредоносные файлы среди старых.
Как проверить подмену?🤔
Здесь можно увидеть не только время доступа и изменения, но и время изменения атрибутов (
Итог:
#linux
🧑💻 NetworkAdmin | ⚙️ EasyTools
Многие знают, что с помощью команды
touch можно создать пустой файл:touch file01.txt
Или даже
touch file01.txt file02.txt file03.txt
touch file0{1,2,3}.txt
Но это лишь часть возможностей. Первоначально
touch создавали для обновления времени доступа и изменения файлов.Посмотреть текущее время доступа можно так:
ls -l file01.txt --time=atime
Обновить время
touch -a file01.txt
Посмотреть
ls -l file01.txt --time=atime
Точно так же можно обновить время изменения файла:
touch -m file01.txt
Зачем
touch позволяет указать конкретную дату изменения:touch -t 202412011005 file01.txt
ls -l file01.txt
Теперь дата файла — 01 декабря 2024 года, 10:05. Этот приём активно используют злоумышленники, чтобы замаскировать вредоносные файлы среди старых.
Как проверить подмену?
stat file01.txt
Здесь можно увидеть не только время доступа и изменения, но и время изменения атрибутов (
Change) и время создания файла (Birth). Эти метки злоумышленнику подделать сложнее.Итог:
touch — это не только создание файлов. Она полезна для работы с метками времени, управления синхронизацией и даже для анализа изменений файловой системы.#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6
free -m— показывает объём доступной и используемой оперативной памяти.ps -e -o pid,args --forest— отображает дерево процессов.ps -eafw— список всех процессов с подробной информацией.top— интерактивный мониторинг процессов и ресурсов системы.kill -9 PID— принудительно завершает процесс с PID без ожидания завершения операций.kill -1 PID— перезапуск процесса с PID с перечитыванием конфигурации.
lsof /home/user1— список открытых файлов в директории
/home/user1.
lsof -p PID— показывает файлы, открытые конкретным процессом (PID).
tail /var/log/messages— последние 10 строк системного журнала.
tail /var/log/dmesg— последние 10 строк журнала загрузки ядра.
3️⃣
Информация о загрузке и устройствах
last reboot— история перезагрузок системы.
lsmod— список загруженных модулей ядра.
smartctl -i /dev/hda— проверка поддержки SMART на диске.
smartctl -A /dev/hda— статус жёсткого диска через SMART.
strace -c ls >/dev/null— список системных вызовов, выполненных командой
ls.
strace -f -e open ls >/dev/null— вызовы системных библиотек при выполнении
ls.
pstree— дерево запущенных процессов.
watch -n1 'cat /proc/interrupts'— вывод аппаратных прерываний в реальном времени.
Эти команды помогают анализировать производительность, исправлять ошибки и отслеживать процессы в реальном времени.
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥8
Sigcheck — утилита от Microsoft Sysinternals для выявления сторонних сертификатов в хранилище Windows. Она сравнивает установленные сертификаты с официальным списком доверенных корневых сертификатов Microsoft и выделяет только те, которые отсутствуют в этом списке.
Зачем это нужно?
Сторонние сертификаты могут использоваться хакеры для перехвата трафика или внедрения вредоносного кода. Чтобы предотвратить это, рекомендуется периодически проверять хранилище сертификатов.
Проверка сертификатов компьютера:
sigcheck64.exe -tv *
Проверка сертификатов пользователя:
sigcheck64.exe -tuv *
Для удаления сертификата по отпечатку используйте команду:
certutil –delstore Root <отпечаток_сертификата>
#windows #microsoft
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Если никто не помнит, когда у меня день рождения, почему это считается плохим паролем?
#юмор
🧑💻 NetworkAdmin | ⚙️ EasyTools
#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19👍8🔥1
с помощью PowerShell
Чтобы быстро установить обновления на Windows серверах, можно использовать PowerShell-модуль PSWindowsUpdate.
Из AD:
$Srvs = Get-ADComputer -SearchBase "OU=Servers,DC=test,DC=loc" -Filter {OperatingSystem -like "*Windows Server*"} | Select -ExpandProperty nameИли из текстового файла:
$Srvs = Get-Content C:\servers.txt
Invoke-WUJob -ComputerName $Srvs -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll -AutoReboot | Out-File "C:\update.log"} -RunNow -Confirm:$false -Verbose -ErrorAction IgnoreЭта команда создаст задачу планировщика с правами SYSTEM на каждом сервере. Задача скачает и установит обновления, а затем автоматически перезагрузит сервер.
Get-WUJob -ComputerName $Srvs
Этот подход позволяет централизованно управлять обновлениями и экономит время при обновлении большого числа серверов.
#windows #windowsserver #powershell
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3❤1
По умолчанию современные версии Windows отображают список локальных пользователей в левом нижнем углу экрана входа.
Это актуально только для компьютеров, не подключённых к домену Active Directory.
Как скрыть пользователей из списка?
Для этого нужно отредактировать реестр Windows:
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /t REG_DWORD /f /d 0 /v ИмяПользователя
Здесь ИмяПользователя — это имя локального пользователя, которого нужно скрыть.
Как снова показать пользователей?
Win + R → regedit).HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
#windows #microsoft
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥5
🗑️ Как добавить корзину для удалённых файлов в Linux
В Linux по умолчанию нет корзины для удалённых файлов, как в Windows. Но эту функцию можно легко добавить с помощью простого скрипта.
Шаги по настройке:
1️⃣ Создаём скрипт для удаления
В домашней директории создаём файл
2️⃣ Создаём директорию для корзины
3️⃣ Добавляем алиас для rm
Откройте файл
4️⃣ Перечитываем .bashrc
Теперь при удалении файла командой:
Файл будет перемещён в
Такой подход позволяет легко восстанавливать случайно удалённые файлы. Формат даты можно изменить по своему вкусу с помощью команды
#Linux #Bash
🧑💻 NetworkAdmin | ⚙️ EasyTools
В Linux по умолчанию нет корзины для удалённых файлов, как в Windows. Но эту функцию можно легко добавить с помощью простого скрипта.
Шаги по настройке:
В домашней директории создаём файл
trash.sh со следующим содержанием:#!/bin/sh
TRASH_DIR="/tmp/trash"
TIMESTAMP=$(date +'%d-%b-%Y-%H:%M:%S')
for i in "$@"; do
FILE=$(basename "$i")
mv "$i" "${TRASH_DIR}/${FILE}.${TIMESTAMP}"
done
mkdir /tmp/trash
Откройте файл
~/.bashrc и добавьте строку:alias rm='sh ~/trash.sh'
source ~/.bashrc
Теперь при удалении файла командой:
rm filename.txt
Файл будет перемещён в
/tmp/trash с добавлением даты и времени к имени, например:filename.txt.20-Jan-2024-15:25:05
Такой подход позволяет легко восстанавливать случайно удалённые файлы. Формат даты можно изменить по своему вкусу с помощью команды
date.#Linux #Bash
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥8👎5
🗑️ Автоочистка устаревших DNS-записей
Для поддержания актуальности DNS-зон в Active Directory рекомендуется настроить автоматическую очистку устаревших динамических записей с помощью функций Aging и Scavenging.
Настройка Aging:
1️⃣ Откройте консоль DNS (
2️⃣ Включите отображение расширенных свойств через меню "Вид" > "Дополнительно".
3️⃣ В зоне прямого просмотра выберите нужную зону, откройте ее свойства и нажмите "Aging" на вкладке "Общие".
4️⃣ Активируйте опцию "Scavenge stale resource records".
5️⃣ Установите интервалы:
— No-refresh interval: период, в течение которого обновление временной метки записи запрещено (рекомендуется половина срока аренды IP-адреса на DHCP-сервере).
— Refresh interval: период, в течение которого разрешено обновление временной метки.
Настройка Scavenging:
1️⃣ В свойствах DNS-сервера на вкладке "Дополнительно" включите "Enable automatic scavenging of stale records".
2️⃣ Укажите период, через который устаревшие записи будут удаляться после признания их таковыми.
Рекомендации:
— Проверьте, чтобы критически важные записи (серверы, сетевое оборудование) были статическими и не подлежали автоматическому удалению.
— Перед первым запуском очистки рекомендуется экспортировать текущие записи в CSV-файл с помощью PowerShell для резервного копирования:
#dns #ad #windows
🧑💻 NetworkAdmin | ⚙️ EasyTools
Для поддержания актуальности DNS-зон в Active Directory рекомендуется настроить автоматическую очистку устаревших динамических записей с помощью функций Aging и Scavenging.
Настройка Aging:
dnsmgmt.msc) на контроллере домена.— No-refresh interval: период, в течение которого обновление временной метки записи запрещено (рекомендуется половина срока аренды IP-адреса на DHCP-сервере).
— Refresh interval: период, в течение которого разрешено обновление временной метки.
Настройка Scavenging:
Рекомендации:
— Проверьте, чтобы критически важные записи (серверы, сетевое оборудование) были статическими и не подлежали автоматическому удалению.
— Перед первым запуском очистки рекомендуется экспортировать текущие записи в CSV-файл с помощью PowerShell для резервного копирования:
Get-DnsServerResourceRecord -ZoneName 'yourdomain.com' |
Select-Object HostName, Timestamp, RecordType, @{Name='RecordData';Expression={$_.RecordData.IPv4Address}} |
Export-Csv -Path "C:\Backup\DNSRecords.csv" -NoTypeInformation
#dns #ad #windows
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥5
Начинающие пользователи Linux часто указывают
#!/bin/sh в начале скриптов, не задумываясь о значении этой строки. Но есть ещё #!/bin/bash и даже #!/bin/dash.Разберёмся, что это за оболочки и когда их использовать.
— Первая стандартная оболочка Unix.
— Минимальный набор возможностей, поддержка POSIX.
— В большинстве современных систем
/bin/sh — это символическая ссылка на BASH или DASH.— Самая популярная оболочка в Linux.
— Поддерживает все возможности SH + дополнительные функции (массовое присваивание переменных, массивы, циклы
for с расширенной синтаксической поддержкой и т.д.).— POSIX-совместимость опциональна (включается флагом
--posix).— Минимальная и быстрая оболочка.
— Совместима с POSIX.
— По умолчанию
/bin/sh в Debian и Ubuntu указывает на DASH, что делает системы более быстрыми и экономными по ресурсам.Что выбрать?
▪️ SH — если нужен переносимый скрипт, который будет работать на любом POSIX-совместимом Unix-системе.
▪️ BASH — когда важен расширенный функционал и удобство, т.к. BASH есть почти во всех Linux-системах.
▪️ DASH — для лёгких скриптов, где важна скорость и минимальное использование системных ресурсов.
Если нет жёстких требований к совместимости или скорости, используйте BASH — это универсально и удобно. Но для массовых операций или запуска скриптов с частым вызовом функций быстрее будет DASH из-за его меньшего потребления ресурсов и более высокой скорости выполнения.
#linux #bash #dash
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4
Как передавать большие файлы по нестабильным каналам с минимальной нагрузкой?
Для копирования больших файлов между Windows-хостами по медленному, нестабильному или критически загруженному каналу идеально подходит протокол BITS.
Преимущества:
▪️ Автоматическая регулировка скорости передачи, чтобы не мешать другим приложениям.
▪️ Поддержка докачки даже после разрыва соединения или перезагрузки ПК.
▪️ Совместимость с SMB и HTTP.
Пример команды PowerShell:
1️⃣ Создание асинхронного задания:
2️⃣ Проверка прогресса:
3️⃣ Завершение копирования:
Используйте BITS для эффективной передачи данных без лишней нагрузки на сеть.
#bits #powershell
🧑💻 NetworkAdmin | ⚙️ EasyTools
Для копирования больших файлов между Windows-хостами по медленному, нестабильному или критически загруженному каналу идеально подходит протокол BITS.
Преимущества:
Пример команды PowerShell:
Start-BitsTransfer -Source C:\win11.vhdx -Destination \\srv\c$\image -Asynchronous -Priority low -DisplayName CopyVHDX
Get-BitsTransfer -Name CopyVHDX
Get-BitsTransfer -Name CopyVHDX | Complete-BitsTransfer
Используйте BITS для эффективной передачи данных без лишней нагрузки на сеть.
#bits #powershell
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥3
Если ищете эффективное и экономичное решение для резервного копирования, обратите внимание на bup.
Эта программа использует алгоритмы rsync для фрагментации данных и проверки контрольных сумм, а также хранит данные в формате git-репозитория.Это позволяет легко создавать инкрементные копии, экономя место, особенно если данные повторяются между разными хостами.
git clone https://github.com/bup/bup
cd bup
git checkout 0.33
apt-get build-dep bup
apt install python3-pip
pip install tornado
make && make install
export BUP_DIR=/mnt/backup
source ~/.bashrc
bup init
bup index /etc
bup save -n local-etc /etc
bup restore -C ./dest local-etc/latest/etc
#bup #backup #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
🔔 Как отправить уведомление пользователю на удалённый Windows-компьютер?
Для оповещения пользователей на удалённых компьютерах можно использовать стандартные инструменты Windows.
▪️ Команда MSG
Отправка сообщения конкретному пользователю:
Здесь username — имя пользователя, а hostname — имя удалённого сервера.
Отправка сообщения всем пользователям сервера:
Ставьте 🔥, и следующий пост будет про PowerShell скрипт.
#msg #windows #microsoft
🧑💻 NetworkAdmin | ⚙️ EasyTools
Для оповещения пользователей на удалённых компьютерах можно использовать стандартные инструменты Windows.
Команду MSG или PowerShell-скрипты.
Отправка сообщения конкретному пользователю:
MSG username /server:hostname "Сервер будет перезагружен через 10 минут. Закройте документы."
Здесь username — имя пользователя, а hostname — имя удалённого сервера.
Отправка сообщения всем пользователям сервера:
MSG * /server:hostname "Срочное сообщение всем!"
* указывает, что сообщение получат все активные пользователи сервера.Ставьте 🔥, и следующий пост будет про PowerShell скрипт.
#msg #windows #microsoft
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥68👍3👎1
🔔 Как отправить красивые уведомления через PowerShell
Для отправки уведомлений пользователям удалённых Windows-компьютеров можно использовать скрипт PowerShell RemoteSendToastNotification.ps1.
▪️ Основные функции скрипта:
• Создание уведомлений с заголовком, текстом, иконками.
• Поддержка кнопок действий (например, открыть ссылку).
• Отправка на удалённые компьютеры через PowerShell Remoting.
▪️ Пример использования:
Уведомление о перезагрузке сервера:
Интерактивное уведомление с кнопкой:
#powershell #windows #microsoft
🧑💻 NetworkAdmin | ⚙️ EasyTools
Для отправки уведомлений пользователям удалённых Windows-компьютеров можно использовать скрипт PowerShell RemoteSendToastNotification.ps1.
• Создание уведомлений с заголовком, текстом, иконками.
• Поддержка кнопок действий (например, открыть ссылку).
• Отправка на удалённые компьютеры через PowerShell Remoting.
Уведомление о перезагрузке сервера:
.\RemoteSendToastNotification.ps1 -ComputerName "hostname" `
-Title "Внимание!" `
-Message "Сервер будет перезагружен через 10 минут. Сохраните данные." `
-IconPath "C:\Images\warning.png"
Интерактивное уведомление с кнопкой:
.\RemoteSendToastNotification.ps1 -ComputerName "hostname" `
-Title "Обновление системы" `
-Message "Нажмите для подробностей." `
-ActionButton @{ "Подробнее" = "https://example.com" }
#powershell #windows #microsoft
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥5
С наступающим вас Новым годом!
Пусть он принесет вам радость, тепло и исполнение всех желаний.
Хочу сообщить, что я ухожу на небольшие каникулы до 9 января. Вернусь к вам полным сил и вдохновения!
До встречи в новом году!
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾27👍14🎄13👎1
Zabbix - мощный инструмент мониторинга, который помогает следить за состоянием ваших серверов. Одна из частых задач - мониторинг свободного места на диске. Рассмотрим сценарий: при малом количестве места на диске и сработал триггер Zabbix и нужно автоматически освободить место путем создания бэкапа файлов и перемещения их на другой сервер.
Создайте триггер, который будет срабатывать при достижении порога свободного места на диске. Например, если свободное место на /dev/sda1 меньше 10%:
{server:vfs.fs.size[/,pfree].last()}<10
#!/bin/bash
# Директория для архивирования
SOURCE_DIR="/dev/sda1/path/to/files"
BACKUP_DIR="/backup/$(date +%Y%m%d)"
REMOTE_SERVER="user@remote_server"
REMOTE_PATH="/remote/backup/path"
# Создаем директорию для бэкапа
mkdir -p $BACKUP_DIR
# Архивируем файлы старше 1 месяца
find $SOURCE_DIR -type f -mtime +30 -print0 | tar -czvf $BACKUP_DIR/backup_$(date +%Y%m%d).tar.gz --null -T -
# Переносим архив на удаленный сервер
scp $BACKUP_DIR/backup_$(date +%Y%m%d).tar.gz $REMOTE_SERVER:$REMOTE_PATH
# Удаляем файлы старше 1 месяца из исходной директории
find $SOURCE_DIR -type f -mtime +30 -delete
# Логирование
echo "Backup and cleanup completed on $(date)" >> /var/log/backup_cleanup.log
SOURCE_DIR - путь к директории на /dev/sda1, откуда будут архивироваться файлы.
BACKUP_DIR - локальная директория для временного хранения архивов.
REMOTE_SERVER и REMOTE_PATH - параметры удаленного сервера и пути, куда будут перемещаться архивы.
Перейдите в Configuration > Actions.
Создайте новое действие и настройте его так, чтобы оно выполнялось при срабатывании триггера на малое количество места.
В секции Operations укажите команду для выполнения скрипта:
/path/to/backup_noscript.sh
Этот подход помогает автоматизировать рутинные задачи и предотвращать проблемы, связанные с нехваткой места на диске.
#backup #linux #zabbix
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5
Windows позволяет быстро экспортировать установленные драйверы. Это удобно при переустановке системы или создании резервной копии.
Export-WindowsDriver –Online -Destination C:\drivers
Все сторонние драйверы вместе с файлами INF, SYS, CAT и DLL будут экспортированы в указанный каталог.
pnputil.exe /add-driver C:\drivers\*.inf /subdirs /install
Найдите имя INF-файла:
Get-WindowsDriver -Online | where {($_.ProviderName -like "Realtek") -and ($_.ClassName -like "Net")}
Экспортируйте драйвер:
pnputil.exe /export-driver oem20.inf C:\drivers\realtek
#windows #backup #powershell
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45
iVentoy - это расширение для популярного инструмента Ventoy, которое позволяет загружать и устанавливать операционные системы с ISO-образов по сети (PXE). С его помощью можно быстро развернуть ОС на нескольких машинах без необходимости использования физических носителей.
• Удобство: Не нужно создавать отдельные загрузочные диски для каждого устройства.
• Гибкость: Поддержка множества ISO-образов на одном сервере.
• Скорость: Быстрая установка благодаря сетевому развертыванию.
• Простота настройки: Легко настроить и интегрировать в существующую инфраструктуру.
wget https://github.com/ventoy/Ventoy/releases/download/v1.0.xx/ventoy-x.x.xx-linux.tar.gz
tar -xvf ventoy-x.x.xx-linux.tar.gz
cd ventoy-x.x.xx
sudo sh Ventoy2Disk.sh -i /dev/sdX
wget https://github.com/ventoy/iVentoy/releases/download/v1.0.xx/iventoy-x.x.xx.tar.gz
tar -xvf iventoy-x.x.xx.tar.gz
cp -r iventoy /path/to/ventoy/
next-server <IP-адрес вашего TFTP-сервера>;
filename "pxelinux.0";
sudo ./iventoy --start
#install #oc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Тестирование скорости интернета - важная задача для диагностики сетевых проблем и проверки качества соединения. В Windows и Linux это можно сделать прямо из командной строки, используя различные утилиты и команды. Рассмотрим, как это сделать на обеих платформах.
В Windows PowerShell можно использовать команду Measure-Command, чтобы измерить время, необходимое для загрузки файла.
Measure-Command { Invoke-WebRequest -Uri "http://speedtest.tele2.net/1MB.zip" -OutFile "1MB.zip" }
Эта команда загружает файл размером 1MB и измеряет время, за которое это происходит. На основе этого времени можно вычислить скорость загрузки.
В Windows 10 и новее wget и curl доступны из коробки.
curl -o nul -w "%{speed_download}\n" http://speedtest.tele2.net/1MB.zip
Команда curl загрузит файл и выведет скорость загрузки.
В Linux утилита wget позволяет загружать файлы из интернета и измерять скорость загрузки.
wget --output-document=/dev/null http://speedtest.tele2.net/1MB.zip
После выполнения команды wget покажет среднюю скорость загрузки.
curl также можно использовать для тестирования скорости.
curl -o /dev/null -w "\nSpeed: %{speed_download} bytes/sec\n" http://speedtest.tele2.net/1MB.zip
Эта команда загрузит файл и покажет скорость в байтах в секунду.
Утилита speedtest-cli позволяет легко тестировать скорость интернета, подключаясь к ближайшему серверу.
sudo apt install speedtest-cli
speedtest-cli
Команда выведет скорость загрузки и отдачи.
#network #windows #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Сейчас вроде бы все оживает..Но аккуратнее в следующий раз с желаниями
#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁30🤡4👍3😱1
Изменение приоритета сетевых адаптеров в Windows позволяет указать, какое соединение должно использоваться по умолчанию. Это особенно полезно, если у вас есть несколько сетевых подключений и вы хотите оптимизировать их использование.
Шаги для изменения приоритета сетевых адаптеров через PowerShell:
Get-NetIPInterface
Эта команда выведет таблицу с информацией о всех сетевых интерфейсах, включая их индекс, имя (Alias), состояние, тип интерфейса и текущую метрику (InterfaceMetric).
Set-NetIPInterface -InterfaceAlias "Имя адаптера" -InterfaceMetric 10
Замените "Имя адаптера" на имя нужного сетевого интерфейса, а 10 - на желаемое значение метрики. Например:
Set-NetIPInterface -InterfaceAlias "Ethernet" -InterfaceMetric 10
Get-NetIPInterface
Проверяем, что метрика интерфейса изменилась на нужное значение.
Изменение приоритета сетевых адаптеров - это быстрый и удобный способ управления сетевыми подключениями. Этот метод позволяет точно настраивать приоритеты и обеспечивает большую гибкость в управлении сетью без необходимости использования графического интерфейса.
#network #windows
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤2