Helcode | Хелкод | Скрипты и автоматизация
993 subscribers
52 photos
34 links
☎️ Контакты для связи: @helcodeadm
Download Telegram
🛠 Почему IT-специалисты помешаны на автоматизации?

Потому что:
- Время ≠ деньги. Время — это возможности
- Рутина — это не работа, а кража вашего потенциала

⚙️ 3 причины начать сегодня:
1️⃣ Один скрипт = десятки часов в год
2️⃣ Меньше человеческих ошибок — код не перепутает даты и не забудет прo sudo
3️⃣ Можно спать спокойно — процессы работают без вас

⚙️ Самые простые точки входа:
1️⃣ Резервное копирование (tar, rsync)
2️⃣ Очистка логов (logrotate)
3️⃣ Массовая обработка файлов (rename, ffmpeg)

Философия:
«Если задача повторяется >3 раз — она должна быть автоматизирована»
👍1
🛠 Когда автоматизация не нужна? 3 случая, когда скрипты – лишние
⚙️ Автоматизировать ≠ всегда хорошо:

1. Разовые задачи – если делать 1 раз, скрипт может занять больше времени.
2. Слишком сложные процессы – иногда проще сделать вручную.
3. Критичные к ошибкам этапы – если цена ошибки высока, контроль важнее скорости.

Был ли у вас опыт, когда автоматизация только мешала?
🛠 5 однострочников PowerShell, которые заменят ручную работу
💻 Коротко и мощно:

 # Получить список всех установленных программ:  
Get-WmiObject -Class Win32_Product | Select-Object Name, Version

2. # Найти все файлы >100 МБ:
Get-ChildItem -Path C:\ -Recurse -File | Where-Object { $_.Length -gt 100MB }

3. # Остановить службу и запретить её запуск:
Set-Service -Name "SomeService" -StartupType Disabled -Status Stopped

4. # Удалить файлы старше 30 дней:
Get-ChildItem -Path "C:\Logs\*" -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item

5. # Проверить, кто сейчас в сети (ARP-таблица):
arp -a


💬 Какой командой пользуетесь чаще всего? Делитесь в комментариях!
🛠 Как автоматизировать рутину? 3 реальных кейса с PowerShell
⚙️ Примеры из жизни:

1. Ежедневный бэкап папки (сжимает в ZIP и копирует на сервер).
2. Массовое переименование сотен файлов (например, добавление даты в имя).
3. Автоматическая проверка свободного места на диске + отправка уведомления в Telegram.

📌 Фишка: PowerShell + Task Scheduler = полная автономность.
🔗 Нужны подробности по какому-то сценарию? Пишите в комментах!
🛠 Скрипт-пакетник: 5 функций для повседневных задач
📁 Готовый модуль для ваших .ps1 файлов:

 1. Проверка доступности сайта  
function Test-Site { param($url) (Test-NetConnection -ComputerName $url -Port 443).TcpTestSucceeded }

# 2. Поиск дубликатов файлов по хешу
function Find-Duplicates { param($path) Get-ChildItem $path -File | Group-Object -Property Length | Where-Object { $_.Count -gt 1 } }

# 3. Отправка уведомления в Telegram (нужен bot token)
function Send-Telegram { param($text, $chatID) Invoke-RestMethod -Uri "https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=$chatID&text=$text" }

# 4. Автозапуск программы с правами админа
function Start-AsAdmin { param($exePath) Start-Process -FilePath $exePath -Verb RunAs }

# 5. Логирование в файл с датой
function Write-Log { param($msg) "$(Get-Date -Format 'yyyy-MM-dd HH:mm') | $msg" | Out-File -Append "C:\logs\script.log" }


🚀 Какую функцию добавите в свой арсенал?
1
🛠 Готовый Bash-скрипт для мониторинга сервера:
# Скрипт проверяет место на диске, нагрузку и память

ALERT=90 # Порог для алерта (%)

# Проверка диска
df -h | awk -v alert=$ALERT '$5+0 > alert {print "Диск почти полон:", $0}'

# Проверка памяти
free -m | awk 'NR==2 {if ($3/$2 * 100 > 85) print "Мало свободной памяти!"}'

# Проверка нагрузки
uptime | awk -F 'load average:' '{print "Нагрузка:", $2}'


🚀 Как использовать:
1. Сохраните как monitor.sh
2. Дайте права: chmod +x monitor.sh
3. Добавьте в crontab -e:
*/10 * * * * /path/to/monitor.sh >> /var/log/monitor.log
1
🛠 Готовый Python-скрипт для мониторинга сайтов

 requests  
import time

sites = ['https://google.com', 'https://youtube.com'] # Ваши сайты

while True:
for url in sites:
try:
response = requests.get(url, timeout=5)
print(f'{url} — OK ({response.status_code})')
except:
print(f'{url} — ERROR!')
time.sleep(60) # Проверка каждую минуту


🚀 Как использовать:
1. Поставьте зависимости: pip install requests
2. Добавьте свои сайты в список sites
3. Запустите: python monitor.​py
👍1
🛠 Почему мы выбрали Telegram, а не GitHub для базы скриптов?

Когда мы задумались о создании базы скриптов для автоматизации, перед нами встал вопрос: где её разместить? GitHub — очевидный выбор для хранения кода, но мы остановились на Telegram. Вот почему:

1. Доступность и простота
Telegram — это мессенджер, который есть у всех. Не нужно разбираться с Git, регистрироваться на GitHub или изучать интерфейс репозиториев. Достаточно открыть бота, выбрать нужный скрипт и получить его в пару кликов.

2. Мгновенная выдача
Бот умеет отправлять скрипты как в виде текста, так и файлами с готовыми расширениями (.py, .sh, .ps1). В GitHub пришлось бы искать, копировать или скачивать целый репозиторий.

3. Поддержка сообщества
Telegram позволяет быстро получать обратную связь: можно задать вопрос, предложить улучшение или попросить помощь прямо в чате. На GitHub это требует создания issues или PR, что не всегда удобно для новичков.

4. Каталогизация и поиск
В боте скрипты разбиты по категориям и языкам, а поиск работает по ключевым словам. В GitHub поиск менее гибкий, особенно если скрипты разбросаны по разным репозиториям.

5. Подписка и обновления
Подписавшись на канал, вы всегда в курсе новых скриптов и обновлений. В GitHub нужно следить за репозиторием вручную или настраивать уведомления.

GitHub — отлично, но не для всего
GitHub незаменим для больших проектов, совместной разработки и контроля версий. Но для быстрого доступа к полезным скриптам Telegram показался более удобным вариантом и, я искренне надеюсь, что с выбором мы не прогадали...

⚙️ Попробуйте нашего бота — возможно, он будет вашим надёжным помощником в автоматизации.
🔥1
🛠 Основные принципы автоматизации

1️⃣ KISS (Keep It Simple) – чем проще, тем надежнее.

2️⃣ Логирование – всегда записывайте ошибки и успехи. По логам вы сможете отследить всё и вся, рано или поздно они очень пригодятся.

3️⃣ Идемпотентность – скрипт должен работать одинаково при повторе. Разный результат - неверно написанный скрипт (если, конечно, скрипт не подразумевает разный результат).

4️⃣ Безопасность – не храните пароли в коде, используйте переменные окружения.

5️⃣ Документация – даже однострочник должен быть понятен через месяц. Неважно в каком формате, комментарии или README.txt - представление должно быть.
🤝1
🤖 Когда стоит автоматизировать?

Автоматизация оправдана, если:

1. Частые повторения – рутинные задачи (бэкапы, логи).
2. Сложные процессы – деплой, тестирование.
3. Минимизация ошибок – скрипт выполняется точнее человека.
4. Интеграция – связка разных систем (API + БД + уведомления).

⚠️ Осторожно: Не автоматизируйте то, что делаете 1-2 раза в год.
👍1
⚙️ 5 простых Python-скриптов, которые сэкономят вам час в день

Время — самый ценный ресурс, автоматизировав одну задачу вы можете сэкономить уйму времени. Вот несколько скриптов, которые помогут его сохранить:

- Автоматическая сортировка файлов – скрипт, который раскладывает файлы по папкам (документы, картинки, архивы).
- Парсер уведомлений из Telegram – фильтрует важные сообщения и записывает в таблицу.  **Бот для скачивания видео с YouTube** – отправляешь ссылку, получаешь файл.
- Напоминание о перерывах – скрипт, который блокирует экран каждые 50 минут.
- Автоответчик в почте – сортирует входящие письма и отправляет шаблонные ответы.
Bash vs Python: что выбрать для автоматизации?

🐧 Bash – идеален для:

- Быстрой обработки файлов (grepsedawk).
- Автоматизации серверных задач (бэкапы, логи, cron).
- Работы с CLI-утилитами без лишних зависимостей.

🐍 Python – лучше для:

- Сложной логики (API, парсинг сайтов, машинное обучение).
- Кросс-платформенных скриптов (Windows/Linux/macOS).
- Гибкости и читаемости кода.

📌 Вывод:

- Если задача простая и для Linux – Bash.
- Если сложная или под разные ОС – Python.
Какой язык предпочитаете вы?
Супер-полезные CLI-инструменты

🔧 Ускоряем работу в терминале

1. jq – обработка JSON:

   curl https://api.example.com/data | jq '.items[] | .title'



2. fzf – быстрый поиск файлов:

   find ~/projects | fzf



3. htop – мониторинг процессов с удобным интерфейсом.

📌 Совет: Добавьте алиасы в ~/.bashrc:
```bash
alias ll='ls -la'
alias gs='git status'
Параллельное выполнение задач с concurrent.futures

concurrent.futures — это модуль в Python для параллельного выполнения задач.

Проблема: Скрипт работает медленно из-за последовательных запросов.
Решение:
import concurrent.futures
import requests

urls = ['https://example.com/1', 'https://example.com/2']

def fetch(url):
return requests.get(url).status_code

with concurrent.futures.ThreadPoolExecutor() as executor:
results = executor.map(fetch, urls) # Параллельные запросы

print(list(results)) # [200, 200]

Важное уточнение: Для CPU-задач используйте ProcessPoolExecutor.
Bash: перенаправление вывода + логирование
Проблема: Как сохранить вывод команды и одновременно видеть его в терминале?
Решение:
 Пишет в файл и выводит на экран
command | tee -a log.txt

# Логировать stdout и stderr в разные файлы
command > >(tee stdout.log) 2> >(tee stderr.log >&2)

💡 Применение: Дебаг скриптов, сбор логов.

🌐 @automate_today | #bash
Bash: массовая обработка файлов через find + xargs
Проблема: Нужно удалить/переименовать 1000 файлов.
Решение:
 Удалить все .tmp файлы старше 7 дней
find /path -name "*.tmp" -mtime +7 -print0 | xargs -0 rm -f

# Переименовать .jpg → .png (GNU parallel для многопоточности)
find . -name "*.jpg" | parallel 'mv {} {.}.png'


Важно: -print0 и -0 защищают от пробелов в именах.

🌐 @automate_today | #bash
Парсинг JSON и API-запросы
Проблема: Как работать с JSON в PowerShell?
Пример:
# JSON → Объект
$data = '{"name": "Viktor", "age": 24}' | ConvertFrom-Json
Write-Output $data.name # Viktor)

# Запрос к API
$response = Invoke-RestMethod -Uri 'https://api.example.com/users'
$response.users | ForEach-Object { $_.email }

📌 Где использовать: Автоматизация Azure, веб-скрапинг.

🌐 @automate_today | #powershell
🛠 Фильтрация процессов и служб
Проблема: Нужно найти и убить «зависший» процесс.
Решение:
 Найти процесс по имени
Get-Process notepad | Stop-Process -Force

# Перезапустить службу
Restart-Service -Name "wuauserv" -Force


❗️ Важно: Для сложных условий используйте Where-Object:
Get-Process | Where-Object { $_.CPU -gt 50 }


🌐 @automate_today | #powershell
🐧 Работа с файлами как в Linux
Проблема: Иногда очень не хватает grep/sed в Windows.
Аналоги:
 Аналог grep
Select-String -Path "C:\logs\*.txt" -Pattern "ERROR"

# Аналог sed (замена текста)
(Get-Content file.txt) -replace 'old', 'new' | Set-Content file.txt

# Рекурсивный поиск файлов
Get-ChildItem -Recurse -Include *.log | Where-Object { $_.Length -gt 1MB }


🔧 Бонус: Установите choco install grep sed через Chocolatey для родных GNU-утилит.

🌐 @automate_today | #bash
Новые скрипты добавлены в бота! Теперь автоматизировать рутину стало еще проще.

Что нового:


✔️ Проверка открытых портов (Bash) - быстрый скан сети на уязвимости
✔️ Сбор системной информации (Python) - полные данные о конфигурации ПК
✔️ Управление AD (PowerShell) - работа с пользователями, группами и политиками
✔️ Мониторинг подозрительных процессов (PowerShell) - контроль безопасности в реальном времени
✔️ Инвентаризационный отчет (PowerShell) - детальная HTML-статистика системы
✔️ Массовая установка Chocolatey (PowerShell) - автоматический деплой софта
✔️ Удаленный аудит парка машин (PowerShell) - централизованный сбор данных

Все скрипты:

- Готовы к использованию
- С подробным описанием
- С обработкой ошибок

Попробуйте прямо сейчас в нашем боте: @ScriptGeniusBot

🌐 @automate_today
👍3
Почему subprocess.​run() в Python — это грубая сила?

Многие разработчики используют subprocess.​run() для вызова внешних команд, не задумываясь о блокировке основного потока. Это как перекрыть дорогу, чтобы пропустить одного пешехода.

Пример проблемы:
#Блокирующий вызов
result = subprocess.run(["dd", "if=/dev/zero", "of=test.img", "bs=1M", "count=1000"],
capture_output=True)
print("Готово") # Выполнится только после завершения dd


Асинхронная альтернатива:
async def create_disk_image():
proc = await asyncio.create_subprocess_exec(
"dd", "if=/dev/zero", "of=test.img", "bs=1M", "count=1000"
)
await proc.wait()
print("Готово") # Пока dd работает, можно делать другие задачи

asyncio.run(create_disk_image())


Производительность:
- 10 последовательных subprocess.run(): 12.3 сек
- 10 параллельных asyncio.create_subprocess_exec(): 3.1 сек

Совет: Для CPU-bound задач лучше multiprocessing, для I/O-bound — asyncio.

👉 Как вы обрабатываете внешние команды? Поделитесь примерами!

🌐 @automate_today | #python
👍2