Excel — это не API. Но можно сделать вид
Ваш отдел до сих пор шлёт данные в .xlsx? Вот как превратить таблицу в REST API за 5 минут:
Что это даёт?
1. Больше не нужно вручную конвертировать файлы
2. Можно подключить фронтенд напрямую
3. Автоматическая документация через /docs
Лайфхак: Добавьте авторизацию, если данные конфиденциальные.
Кто ещё ненавидит Excel, но вынужден с ним работать? Давайте вместе придумаем, как убить эту боль.
🌐 @automate_today | #python
Ваш отдел до сих пор шлёт данные в .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
Также, хотелось бы пару слов сказать о нынешних обстоятельствах и дальнейшем развитии нашего канала. В настоящее время мы пытаемся отладить нашу работу, "поставить на конвейер", так как очень много времени уходит на написание статей, постов. Это обязательно пройдет, мы вырабатываем структуру, ищем удобные инструменты и тд.
На дальнейшее развитие у нас невероятно много планов по интересному контенту, обучающим материалам и другим, не менее удивительным анонсам. Дальше - лучше! Дальше - интереснее! Спасибо всем Вам за внимание и интерес к нашему скромному проекту!
Дорогие коллеги, рад приветствовать всех в нашей группе! Мы преодолели отметку в 100 человек буквально за 2 недели, это невероятно мощный результат, большое, Вам, спасибо!
Мы достигаем результатов быстрее, чем ожидали изначально, но на этом останавливаться не собираемся! На данный момент единственной площадкой, где есть упоминание и ссылка на группу - Хабр, но в наших планах на ближайшее время публиковаться также на Tproger, VC.ru и Дзен. Мы хотим и дальше развивать сообщество, делая его всё масштабнее для Вас, интереснее для Нас.
Мы запускам канал в Дзене, где будем публиковать полезные материалы. Это необходимо, чтобы больше людей узнали о нас! Но есть нюанс: чтобы статьи начали рекомендовать в ленте - нужно иметь 10 подписчиков. Если у вас есть аккаунт на Дзене - поддержите нас, пожалуйста. Это будет бесценный вклад в начало развития сообщества!
Ссылка на канал: https://dzen.ru/automate_today
Также, хотелось бы пару слов сказать о нынешних обстоятельствах и дальнейшем развитии нашего канала. В настоящее время мы пытаемся отладить нашу работу, "поставить на конвейер", так как очень много времени уходит на написание статей, постов. Это обязательно пройдет, мы вырабатываем структуру, ищем удобные инструменты и тд.
На дальнейшее развитие у нас невероятно много планов по интересному контенту, обучающим материалам и другим, не менее удивительным анонсам. Дальше - лучше! Дальше - интереснее! Спасибо всем Вам за внимание и интерес к нашему скромному проекту!
🍾1
Когда Bash быстрее Python
Вы написали "оптимизированный" парсер на Python, а он проигрывает старому доброму grep?
Задача: Найти все ошибки в логах Nginx.
🐍 Python (0.8 сек):
🐚 Bash (0.02 сек):
Почему так?
- Bash не тратит время на запуск интерпретатора
- GNU-утилиты (grep, awk) оптимизированы десятилетиями
- Меньше накладных расходов
Когда в последний раз Bash спасал вам жизнь? Делитесь в комментах!
🌐 @automate_today | #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
Устали вручную закрывать задачи после коммитов? Вот скрипт, который сделает это за вас:
❓Как внедрить:
1. Добавьте в git hooks
2. Настройте автоматическое определение issue key из ветки
3. Профит!
❗️Важно: Не забудьте про обработку ошибок и логирование.
Кто ещё ненавидит трекеры задач? Какие инструменты вы используете вместо них?
🌐 @automate_today | #python
Устали вручную закрывать задачи после коммитов? Вот скрипт, который сделает это за вас:
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
Вот команды, которые есть только у избранных:
Как добавить?
1. Откройте ~/.bashrc
2. Вставьте aliases
3. Выполните source ~/.bashrc
Мой любимый alias:
Какой ваш любимый alias? Делитесь в комментах — соберём мега-коллекцию! Если тема будет интересна - добавлю в бота отдельную кнопку с выводом полезных alias!
🌐 @automate_today | #bash
Вот команды, которые есть только у избранных:
# Перезапустить предыдущую команду с 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 — это боль. Автоматизируем её:
Важные доработки:
1. Добавьте проверку прав
2. Архивируйте данные вместо удаления
3. Уведомление в корпоративный чат
⚠️ Это демонстрационный пример! Не используйте в проде без доработок.
Кто автоматизировал HR-процессы? Делитесь легальными способами.
🌐 @automate_today | #bash
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
👎3❤1
ChatGPT пишет документацию вместо вас
Генерируете описание функций вручную? Вот как автоматизировать:
Вывод:
Советы:
1. Добавьте ваши стандарты документации в промпт
2. Проверяйте результат перед коммитом
3. Настройте как git hook
Кто уже использует ИИ для документирования? Какие подводные камни заметили?
🌐 @automate_today | #python
Генерируете описание функций вручную? Вот как автоматизировать:
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-бота:
Что можно добавить:
1. Кнопки вместо команд
2. Интеграцию с вашей базой знаний
3. Обратную связь по ответам
Какие вопросы вам надоело повторять? Давайте вместе напишем идеального бота!
🌐 @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-однострочник спасёт вас:
Доработки для параноиков:
1. Шифрование бэкапа
2. Отправка на внешний носитель
3. Проверка целостности
Какой ваш must-have скрипт на случай БП? Делитесь в комментах!
🌐 @automate_today | #bash
Если завтра отключат интернет, этот 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 году
Как защитить продакшен:
Образовательный метод:
Вы сталкивались с "удалением всего"? Как спасали систему?
🌐 @automate_today | #bash
Даже в 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 — это "бомба замедленного действия". Пример:
Правила выживания:
- Всегда заключайте переменные в кавычки:
- Используйте
Какие грабли с кавычками/переменными вас подводили?
🌐 @automate_today | #bash
Проблема:
- Неквотированные переменные в bash — это "бомба замедленного действия". Пример:
files="*.txt"
rm $files # Удалит ВСЕ .txt файлы, даже если вы хотели один!
Правила выживания:
- Всегда заключайте переменные в кавычки:
rm "$files" # Удалит только файл с именем "*.txt"
- Используйте
printf вместо echo — он предсказуемее: printf '%s\n' "$VAR" # Не сломается на спецсимволах
Какие грабли с кавычками/переменными вас подводили?
🌐 @automate_today | #bash
👍3
Автоматизация без техдолга: как писать скрипты, которые проживут 5 лет
Антипаттерны:
- Хардкод путей (
- Зависимость от версий (
- Молчаливые падения (
Как делать правильно:
1. Конфиги в
2. Параметризация через
3. Явные проверки:
По каким принципам вы проектируете долгоживущие скрипты?
🌐 @automate_today | #bash
Антипаттерны:
- Хардкод путей (
/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 — это грех
Разница:
-
-
Пример катастрофы:
Когда использовать
Только для интерактивных скриптов с цветным выводом.
Какие ещё PowerShell-антипаттерны вас раздражают?
🌐 @automate_today | #powershell
Разница:
-
Write-Host — выводит текст напрямую в консоль (нельзя перенаправить в файл!). -
Write-Output — попадает в конвейер (pipeline), работает с >, |. Пример катастрофы:
# Так логи НЕ сохранятся:
Write-Host "Error!" | Out-File log.txt # Пустой файл
Когда использовать
Write-Host: Только для интерактивных скриптов с цветным выводом.
Какие ещё PowerShell-антипаттерны вас раздражают?
🌐 @automate_today | #powershell
👍3⚡1
Systemd для Python-скриптов: гайд
Зачем это нужно:
- Автозапуск при загрузке.
- Автоматический перезапуск при падении.
- Централизованное логирование через
Шаблон сервиса:
Как включить:
Какие скрипты вы запускаете через systemd?
🌐 @automate_today
Зачем это нужно:
- Автозапуск при загрузке.
- Автоматический перезапуск при падении.
- Централизованное логирование через
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 ГБ):
Советы:
- Если нужно только последние ошибки:
- Для сложных фильтров —
Какие инструменты вы используете для анализа логов?
🌐 @automate_today | #bash
Бенчмарк (лог 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: как не сломать систему
Типичные ошибки:
-
- Отсутствие
Правильный workflow:
1. Создать окружение:
2. Фиксировать зависимости:
3. Восстанавливать:
Как вы управляете зависимостями в Python?
🌐 @automate_today | #bash
Типичные ошибки:
-
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:
- Для Windows:
Скорость (тест 10 ГБ файлов):
-
-
Какой формат архива вы предпочитаете и почему?
🌐 @automate_today | #bash
Кейсы:
- Для 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 (есть везде):
2. Awk (для простых случаев):
Когда точно нужен
- Глубокий поиск:
- Форматирование:
Какие хаки для работы с JSON в CLI вы знаете?
🌐 @automate_today | #bash
Альтернативы:
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
👍3❤1
Почему автоматизация — это новая грамотность в IT?
Скрипты — как умение читать и писать для IT-специалиста.
Философия "ленивого админа":
"Лучше потратить 3 часа на скрипт, чем 30 минут каждый день на рутину."
➖ Bash-пример для очистки логов:
Что теряет тот, кто не автоматизирует:
- Время (часы ручной работы)
- Надёжность (человеческие ошибки)
- Карьерные возможности (автоматизация = конкурентное преимущество)
Вы уже автоматизировали свою рутину? Делитесь в комментариях!
🌐 @automate_today | #bash
Скрипты — как умение читать и писать для IT-специалиста.
Философия "ленивого админа":
"Лучше потратить 3 часа на скрипт, чем 30 минут каждый день на рутину."
➖ Bash-пример для очистки логов:
find /var/log -type f -mtime +7 -delete
Что теряет тот, кто не автоматизирует:
- Время (часы ручной работы)
- Надёжность (человеческие ошибки)
- Карьерные возможности (автоматизация = конкурентное преимущество)
Вы уже автоматизировали свою рутину? Делитесь в комментариях!
🌐 @automate_today | #bash
💯6
ТОП-3 языка для автоматизации в 2025
1. Bash — "швейцарский нож" админа
Для: серверных задач, CI/CD
Не для: сложной логики
2. Python — универсальный автомат
Для: анализа данных, API, кросс-платформенных решений
3. PowerShell — король Windows
Для: Active Directory, облачных сервисов
Какой язык используете чаще?
🌐 @automate_today | #python #powershell #bash
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