Helcode | Хелкод | Скрипты и автоматизация
993 subscribers
52 photos
34 links
☎️ Контакты для связи: @helcodeadm
Download Telegram
Excel — это не API. Но можно сделать вид

Ваш отдел до сих пор шлёт данные в .xlsx? Вот как превратить таблицу в REST API за 5 минут:

from fastapi import FastAPI
import pandas as pd

app = FastAPI()
df = pd.read_excel("ugly_data.xlsx")

@app.get("/data")
def get_data():
return {"data": df.to_dict()}



Что это даёт?
1. Больше не нужно вручную конвертировать файлы
2. Можно подключить фронтенд напрямую
3. Автоматическая документация через /docs

Лайфхак: Добавьте авторизацию, если данные конфиденциальные.

Кто ещё ненавидит Excel, но вынужден с ним работать? Давайте вместе придумаем, как убить эту боль.

🌐 @automate_today | #python
2👍1
Хелкод нужна ваша помощь!

Дорогие коллеги, рад приветствовать всех в нашей группе! Мы преодолели отметку в 100 человек буквально за 2 недели, это невероятно мощный результат, большое, Вам, спасибо!

Мы достигаем результатов быстрее, чем ожидали изначально, но на этом останавливаться не собираемся! На данный момент единственной площадкой, где есть упоминание и ссылка на группу - Хабр, но в наших планах на ближайшее время публиковаться также на Tproger, VC.​ru и Дзен. Мы хотим и дальше развивать сообщество, делая его всё масштабнее для Вас, интереснее для Нас.

Мы запускам канал в Дзене, где будем публиковать полезные материалы. Это необходимо, чтобы больше людей узнали о нас! Но есть нюанс: чтобы статьи начали рекомендовать в ленте - нужно иметь 10 подписчиков. Если у вас есть аккаунт на Дзене - поддержите нас, пожалуйста. Это будет бесценный вклад в начало развития сообщества!

Ссылка на канал: https://dzen.ru/automate_today

Также, хотелось бы пару слов сказать о нынешних обстоятельствах и дальнейшем развитии нашего канала. В настоящее время мы пытаемся отладить нашу работу, "поставить на конвейер", так как очень много времени уходит на написание статей, постов. Это обязательно пройдет, мы вырабатываем структуру, ищем удобные инструменты и тд.

На дальнейшее развитие у нас невероятно много планов по интересному контенту, обучающим материалам и другим, не менее удивительным анонсам. Дальше - лучше! Дальше - интереснее! Спасибо всем Вам за внимание и интерес к нашему скромному проекту!
🍾1
Когда Bash быстрее Python

Вы написали "оптимизированный" парсер на Python, а он проигрывает старому доброму grep?

Задача: Найти все ошибки в логах Nginx.

🐍 Python (0.8 сек):
with open("access.log") as f:
errors = [line for line in f if "ERROR" in line]



🐚 Bash (0.02 сек):
grep "ERROR" access.log



Почему так?
- Bash не тратит время на запуск интерпретатора
- GNU-утилиты (grep, awk) оптимизированы десятилетиями
- Меньше накладных расходов

Когда в последний раз Bash спасал вам жизнь? Делитесь в комментах!

🌐 @automate_today | #bash #python
2
Автоматизируем ненависть к Jira

Устали вручную закрывать задачи после коммитов? Вот скрипт, который сделает это за вас:

import requests

# Jira API + Git hook
issue_key = "PROJ-123"
requests.post(
f"https://jira.example.com/rest/api/2/issue/{issue_key}/transitions",
json={"transition": {"id": "31"}}, # ID статуса "Resolved"
auth=("login", "password")
)



Как внедрить:
1. Добавьте в git hooks
2. Настройте автоматическое определение issue key из ветки
3. Профит!

❗️Важно: Не забудьте про обработку ошибок и логирование.

Кто ещё ненавидит трекеры задач? Какие инструменты вы используете вместо них?

🌐 @automate_today | #python
👏2
🤫 Секретные aliases Senior DevOps

Вот команды, которые есть только у избранных:

# Перезапустить предыдущую команду с sudo
alias fuck='sudo $(history -p !!)'

# Найти и убить процесс по имени
alias killme='pkill -9 -f'

# Показать топ-5 процессов по памяти
alias memekiller='ps aux | sort -nk4 | tail -n 5'



Как добавить?
1. Откройте ~/.bashrc
2. Вставьте aliases
3. Выполните source ~/.bashrc

Мой любимый alias:
alias now='date +"%T"'



Какой ваш любимый alias? Делитесь в комментах — соберём мега-коллекцию! Если тема будет интересна - добавлю в бота отдельную кнопку с выводом полезных alias!


🌐 @automate_today | #bash
🥰1
Уволить сотрудника за 1 клик

Offboarding — это боль. Автоматизируем её:

#!/bin/bash
USERNAME=$1

# Отозвать доступ
sudo usermod -L $USERNAME # Заблокировать логин
sudo rm -rf /home/$USERNAME # Удалить домашнюю директорию

# Уведомить HR
echo "$USERNAME уволен. Доступ отозван." | mail -s "Offboarding" hr@company.com



Важные доработки:

1. Добавьте проверку прав
2. Архивируйте данные вместо удаления
3. Уведомление в корпоративный чат

⚠️ Это демонстрационный пример! Не используйте в проде без доработок.

Кто автоматизировал HR-процессы? Делитесь легальными способами.


🌐 @automate_today | #bash
👎31
ChatGPT пишет документацию вместо вас

Генерируете описание функций вручную? Вот как автоматизировать:

import openai

code = """
def calculate_sum(a, b):
return a + b
"""

response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Напиши docstring для Python-функции: {code}"}]
)

print(response.choices[0].message.content)



Вывод:
"""
Calculates the sum of two numbers.

Args:
a (int): First number.
b (int): Second number.

Returns:
int: The sum of a and b.
"""



Советы:
1. Добавьте ваши стандарты документации в промпт
2. Проверяйте результат перед коммитом
3. Настройте как git hook

Кто уже использует ИИ для документирования? Какие подводные камни заметили?

🌐 @automate_today | #python
Бот для ответов на однотипные вопросы

Надоело 100 раз объяснять, как развернуть стенд? Создайте Telegram-бота:

from telegram import Update
from telegram.ext import Application, CommandHandler

async def faq(update: Update, context):
await update.message.reply_text(
"Вот ответы на частые вопросы:\n"
"1. Как развернуть стенд? /deploy\n"
"2. Где логи? /logs\n"
)

app = Application.builder().token("TOKEN").build()
app.add_handler(CommandHandler("faq", faq))
app.run_polling()



Что можно добавить:
1. Кнопки вместо команд
2. Интеграцию с вашей базой знаний
3. Обратную связь по ответам

Какие вопросы вам надоело повторять? Давайте вместе напишем идеального бота!

🌐 @automate_today | #python
👍3
Скрипт для апокалипсиса

Если завтра отключат интернет, этот bash-однострочник спасёт вас:

#!/bin/bash
# 1. Найти все сервера в сети
nmap -sn 192.168.1.0/24 > network_scan.txt

# 2. Проверить доступность портов
while read ip; do nc -zv $ip 22 80 443; done < network_scan.txt

# 3. Заархивировать важное
tar -czvf backup_$(date +%s).tar.gz ~/Documents /etc



Доработки для параноиков:
1. Шифрование бэкапа
2. Отправка на внешний носитель
3. Проверка целостности

Какой ваш must-have скрипт на случай БП? Делитесь в комментах!

🌐 @automate_today | #bash
👍5
sudo rm -rf /: Почему эту команду до сих пор не удалили?

Даже в 2024 году rm -rf / остаётся легальной командой в Linux — просто теперь она требует --no-preserve-root. Но почему? Потому что иногда админам намеренно нужно "сжечь мосты" (тестовые стенды, инстансы с критичными багами).

Как защитить продакшен:
alias rm='rm -i' — спрашивает подтверждение перед каждым удалением.
chattr +i /critical_dir — делает папку неизменяемой даже для root.

Образовательный метод:
   echo 'Ало, ты серьёзно?! Добавь --no-preserve-root, если осознаёшь последствия.' > /usr/local/bin/rm  
chmod +x /usr/local/bin/rm # Кастомный "rm" с проверкой


Вы сталкивались с "удалением всего"? Как спасали систему?

🌐 @automate_today | #bash
👍3
echo $​VAR — опасная строка в bash-скриптах

Проблема:
- Неквотированные переменные в bash — это "бомба замедленного действия". Пример:
files="*.txt"  
rm $files # Удалит ВСЕ .txt файлы, даже если вы хотели один!



Правила выживания:
- Всегда заключайте переменные в кавычки:

  rm "$files"  # Удалит только файл с именем "*.txt"


- Используйте printf вместо echo — он предсказуемее:

  printf '%s\n' "$VAR"  # Не сломается на спецсимволах



Какие грабли с кавычками/переменными вас подводили?

🌐 @automate_today | #bash
👍3
Автоматизация без техдолга: как писать скрипты, которые проживут 5 лет

Антипаттерны:
- Хардкод путей (/home/user/script.sh).
- Зависимость от версий (python3.6 вместо python3).
- Молчаливые падения (curl без --fail).

Как делать правильно:
1. Конфиги в ~/.config/ — путь стандартизирован для всех Linux-приложений.
2. Параметризация через getopts (bash) или argparse (Python):
   while getopts "c:" opt; do  
case $opt in
c) CONFIG_FILE="$OPTARG" ;;
esac
done


3. Явные проверки:
   [[ -f "$FILE" ]] || { echo "ERROR: $FILE не существует"; exit 1; }


По каким принципам вы проектируете долгоживущие скрипты?

🌐 @automate_today | #bash
2
PowerShell: Почему Write-Host — это грех

Разница:
- Write-Host — выводит текст напрямую в консоль (нельзя перенаправить в файл!).
- Write-Output — попадает в конвейер (pipeline), работает с >, |.

Пример катастрофы:
# Так логи НЕ сохранятся:
Write-Host "Error!" | Out-File log.txt # Пустой файл



Когда использовать Write-Host:
Только для интерактивных скриптов с цветным выводом.

Какие ещё PowerShell-антипаттерны вас раздражают?

🌐 @automate_today | #powershell
👍31
Systemd для Python-скриптов: гайд

Зачем это нужно:
- Автозапуск при загрузке.
- Автоматический перезапуск при падении.
- Централизованное логирование через journalctl.

Шаблон сервиса:
[Unit]  
Description=My Python Bot
After=network.target

[Service]
User=botuser
WorkingDirectory=/opt/bot
ExecStart=/usr/bin/python3 -u bot.py
Restart=always
Environment="API_KEY=secret"

[Install]
WantedBy=multi-user.target



Как включить:
sudo systemctl daemon-reload  
sudo systemctl enable --now mybot



Какие скрипты вы запускаете через systemd?


🌐 @automate_today
2👍2
Оптимизация поиска в логах: grep, awk, или что-то третье?

Бенчмарк (лог 10 ГБ):

| Метод | Время | Память |
|-----------------------------|-----------|------------|
| grep "ERROR" | 12 сек | 1.2 ГБ |
| awk '/ERROR/' | 8 сек | 0.8 ГБ |
| rg "ERROR" (ripgrep) | 3 сек | 0.3 ГБ |


Советы:

- Если нужно только последние ошибки:

  tail -n 10000 huge.log | grep -C 5 "ERROR"  # Контекст 5 строк


- Для сложных фильтров — jq для JSON-логов:

  cat app.log | jq 'select(.level == "ERROR")'  



Какие инструменты вы используете для анализа логов?

🌐 @automate_today | #bash
👍3
Виртуальные окружения Python: как не сломать систему

Типичные ошибки:
- sudo pip install — ломает системные пакеты (например, apt перестаёт работать).
- Отсутствие requirements.txt — "а вот у меня работает!".

Правильный workflow:

1. Создать окружение:


   python -m venv .venv  
source .venv/bin/activate


2. Фиксировать зависимости:

   pip freeze > requirements.txt  


3. Восстанавливать:

   pip install -r requirements.txt  



Как вы управляете зависимостями в Python?


🌐 @automate_today | #bash
👍1
Битва архивов: tar.gz vs zip под микроскопом

Кейсы:

- Для Linux:

  tar czvf backup.tar.gz --exclude="*.tmp" /data  # Сжимает + сохраняет права


- Для Windows:

  zip -r backup.zip /data -x "*.tmp"  # Читается в Проводнике



Скорость (тест 10 ГБ файлов):

- tar + gzip — 2 мин, коэффициент сжатия ~70%.
- zip — 3 мин, коэффициент ~65%.

Какой формат архива вы предпочитаете и почему?

🌐 @automate_today | #bash
👍3🤔2
Парсинг JSON в bash: когда jq — это overkill

Альтернативы:


1. Python (есть везде):

   echo '{"user": "admin"}' | python3 -c "import json, sys; print(json.load(sys.stdin)['user'])"  


2. Awk (для простых случаев):

   echo '{"error": "404"}' | awk -F'"' '{print $4}'  # → 404



Когда точно нужен jq:
- Глубокий поиск: .data.items[] | select(.id == 42)
- Форматирование: jq '.' unformatted.json

Какие хаки для работы с JSON в CLI вы знаете?


🌐 @automate_today | #bash
👍31
Почему автоматизация — это новая грамотность в IT?

Скрипты — как умение читать и писать для IT-специалиста.

Философия "ленивого админа":
"Лучше потратить 3 часа на скрипт, чем 30 минут каждый день на рутину."
Bash-пример для очистки логов:
find /var/log -type f -mtime +7 -delete



Что теряет тот, кто не автоматизирует:
- Время (часы ручной работы)
- Надёжность (человеческие ошибки)
- Карьерные возможности (автоматизация = конкурентное преимущество)

Вы уже автоматизировали свою рутину? Делитесь в комментариях!

🌐 @automate_today | #bash
💯6
ТОП-3 языка для автоматизации в 2025

1. Bash — "швейцарский нож" админа
Для: серверных задач, CI/CD
Не для: сложной логики
# Мониторинг места на диске
df -h | awk '$5 > 80 {print "ALERT: " $6 " is " $5}'



2. Python — универсальный автомат
Для: анализа данных, API, кросс-платформенных решений
# Автопроверка сайта
import requests
if requests.get("https://example.com").status_code != 200:
print("Сайт лежит!")



3. PowerShell — король Windows
Для: Active Directory, облачных сервисов
# Поиск неактивных пользователей
Get-ADUser -Filter {LastLogonDate -lt (Get-Date).AddDays(-90)}



Какой язык используете чаще?

🌐 @automate_today | #python #powershell #bash
2🤔1🦄1