Windows: Запуск скриптов с правами администратора
Каждый Windows-админ сталкивался с ситуацией: нужен скрипт, который должен работать с правами администратора. Настроить службы, поправить реестр или перезапустить системный процесс без UAC-подтверждения? Можно автоматизировать.
▪️ Проблема
По умолчанию Python-скрипты запускаются от имени обычного пользователя. Это ограничивает работу с системными настройками и требует «ручного» запуска через правый клик.
▪️ Решение — библиотека pyuac
Пример кода:
▪️ Как это помогает
Скрипт сам проверяет уровень прав. Если они недостаточные — перезапускает себя с UAC-запросом. Минимум действий от пользователя, максимум автоматизации.
🧠 Для админа: такой приём пригодится для сервисных скриптов и утилит, которые должны работать «бесшовно».
#Windows #Python #SysAdmin #Automation
Каждый Windows-админ сталкивался с ситуацией: нужен скрипт, который должен работать с правами администратора. Настроить службы, поправить реестр или перезапустить системный процесс без UAC-подтверждения? Можно автоматизировать.
▪️ Проблема
По умолчанию Python-скрипты запускаются от имени обычного пользователя. Это ограничивает работу с системными настройками и требует «ручного» запуска через правый клик.
▪️ Решение — библиотека pyuac
Пример кода:
from pyuac import isUserAdmin, runAsAdmin
def main():
print("Я запущен как админ!")
if __name__ == "__main__":
if not isUserAdmin():
runAsAdmin()
else:
main()
▪️ Как это помогает
Скрипт сам проверяет уровень прав. Если они недостаточные — перезапускает себя с UAC-запросом. Минимум действий от пользователя, максимум автоматизации.
🧠 Для админа: такой приём пригодится для сервисных скриптов и утилит, которые должны работать «бесшовно».
#Windows #Python #SysAdmin #Automation
Linux: "Служба" своими руками. Пишем systemd unit-файл
Хватит запускать важные скрипты "руками" через nohup ./script.sh &. Путь инженера — превратить любой скрипт или приложение в управляемую службу. В современном Linux это делается через systemd unit-файлы.
Задача: Превратим простой Python веб-сервер в службу my-app.service.
1. Ваш скрипт (для примера /opt/my-app/app.py):
Python
2. Создаем unit-файл: sudo nano /etc/systemd/system/my-app.service
Ini, TOML
3. Запускаем и "включаем" службу:
Bash
Взгляд архитектора: Вы не просто "запустили скрипт". Вы декларативно описали его жизненный цикл. Теперь ОС сама следит за ним, перезапускает при сбоях (Restart=on-failure), запускает в нужном порядке (After=network.target) и от имени нужного пользователя. Это первый шаг к построению отказоустойчивых (self-healing) систем.
#linux #systemd #python #automation #devops #гайд #скрипты
Хватит запускать важные скрипты "руками" через nohup ./script.sh &. Путь инженера — превратить любой скрипт или приложение в управляемую службу. В современном Linux это делается через systemd unit-файлы.
Задача: Превратим простой Python веб-сервер в службу my-app.service.
1. Ваш скрипт (для примера /opt/my-app/app.py):
Python
#!/usr/bin/env python3
# Простой веб-сервер
from http.server import HTTPServer, BaseHTTPRequestHandler
class SimpleHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello from Admin Future!')
httpd = HTTPServer(('0.0.0.0', 8000), SimpleHandler)
httpd.serve_forever()
2. Создаем unit-файл: sudo nano /etc/systemd/system/my-app.service
Ini, TOML
[Unit]
Description=My Simple Python Web App
After=network.target
[Service]
Type=simple
# Запускаем от имени 'www-data' для безопасности
User=www-data
Group=www-data
# Указываем путь к нашему скрипту
ExecStart=/usr/bin/python3 /opt/my-app/app.py
# Автоматический перезапуск в случае сбоя
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
3. Запускаем и "включаем" службу:
Bash
# Перечитать конфиги, чтобы systemd увидел новый файл
sudo systemctl daemon-reload
# Запускаем службу
sudo systemctl start my-app
# Проверяем статус
sudo systemctl status my-app
# Включаем автозапуск при загрузке ОС
sudo systemctl enable my-app
Взгляд архитектора: Вы не просто "запустили скрипт". Вы декларативно описали его жизненный цикл. Теперь ОС сама следит за ним, перезапускает при сбоях (Restart=on-failure), запускает в нужном порядке (After=network.target) и от имени нужного пользователя. Это первый шаг к построению отказоустойчивых (self-healing) систем.
#linux #systemd #python #automation #devops #гайд #скрипты
👍4
AI-промпт: "Напиши и ОБЪЯСНИ мне этот RegEx"
Регулярные выражения (RegEx) — это язык, на котором 90% админов не говорят, а 10% — думают. Это чистая магия для парсинга логов, Nginx-конфигов или валидации данных. Но писать их — боль.
AI — идеальный переводчик с "человеческого" на "RegEx".
Плохой промпт: регулярка для IP-адреса Результат: \b(?:\d{1,3}\.){3}\d{1,3}\b (А почему? А 256.999.1.1 подойдет?)
Архитектурный промпт (для ChatGPT/Gemini/Copilot):
Взгляд архитектора: AI не просто дал вам "рыбу". Он научил вас. Вы получили не просто RegEx, а полную документацию к нему. Архитектор не использует "черные ящики", которые он скопировал со Stack Overflow. Он понимает, как работает каждый компонент его системы, даже если это RegEx, сгенерированный AI.
#ai4admin #regex #bash #python #automation #промпты #sre
Регулярные выражения (RegEx) — это язык, на котором 90% админов не говорят, а 10% — думают. Это чистая магия для парсинга логов, Nginx-конфигов или валидации данных. Но писать их — боль.
AI — идеальный переводчик с "человеческого" на "RegEx".
Плохой промпт: регулярка для IP-адреса Результат: \b(?:\d{1,3}\.){3}\d{1,3}\b (А почему? А 256.999.1.1 подойдет?)
Архитектурный промпт (для ChatGPT/Gemini/Copilot):
Выступи в роли эксперта по RegEx и инженера по парсингу логов.
Мне нужен RegEx-паттерн, который находит и извлекает (captures) IPv4-адреса.
Требования:
1. Паттерн должен валидировать каждый октет (от 0 до 255).
2. Он НЕ должен находить невалидные адреса (например, 999.999.999.999).
Формат ответа:
1. Паттерн: [Сам RegEx-паттерн]
2. Объяснение: Предоставь построчное объяснение, что делает каждая группа и каждый символ в паттерне (`\b`, `(?:`, `(25[0-5]|... )` и т.д.).
3. Пример для `grep`: Как использовать этот паттерн с `grep -E`.
4. Пример для `Python`: Как использовать этот паттерн в Python-скрипте.
Взгляд архитектора: AI не просто дал вам "рыбу". Он научил вас. Вы получили не просто RegEx, а полную документацию к нему. Архитектор не использует "черные ящики", которые он скопировал со Stack Overflow. Он понимает, как работает каждый компонент его системы, даже если это RegEx, сгенерированный AI.
#ai4admin #regex #bash #python #automation #промпты #sre
❤2
🤖 Python-скрипт: Проверяем сроки действия SSL-сертификатов
Забыть продлить SSL — классический факап, после которого "лежит" прод. Давайте автоматизируем проверку.
Этот скрипт проверяет список доменов и пишет в Telegram, если сертификат истекает меньше чем через 7 дней.
Код (ssl_checker.py):
Как запустить:
* Получите токен у @BotFather.
* Вставьте свои домены.
* Добавьте в Systemd Timer (как мы учили в прошлом посте 😉) или в Cron на ежедневный запуск.
Теперь вы узнаете о просроченном сертификате раньше, чем ваши пользователи.
#python #ssl #automation #scripting #ai4admin
Забыть продлить SSL — классический факап, после которого "лежит" прод. Давайте автоматизируем проверку.
Этот скрипт проверяет список доменов и пишет в Telegram, если сертификат истекает меньше чем через 7 дней.
Код (ssl_checker.py):
import ssl
import socket
import datetime
import requests
# Настройки
DOMAINS = ['google.com', 'yoursite.ru']
TG_TOKEN = 'ВАШ_ТОКЕН_БОТА'
CHAT_ID = 'ВАШ_CHAT_ID'
DAYS_ALERT = 7
def send_tg(message):
url = f"https://api.telegram.org/bot{TG_TOKEN}/sendMessage"
requests.post(url, data={"chat_id": CHAT_ID, "text": message})
def check_ssl(domain):
context = ssl.create_default_context()
conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=domain)
conn.connect((domain, 443))
cert = conn.getpeercert()
expire_date = datetime.datetime.strptime(cert['notAfter'], r"%b %d %H:%M:%S %Y %Z")
days_left = (expire_date - datetime.datetime.now()).days
if days_left < DAYS_ALERT:
return f"⚠️ {domain}: осталось {days_left} дн!"
return None
report = []
for d in DOMAINS:
try:
res = check_ssl(d)
if res: report.append(res)
except Exception as e:
report.append(f"❌ Ошибка {d}: {str(e)}")
if report:
send_tg("\n".join(report))
Как запустить:
* Получите токен у @BotFather.
* Вставьте свои домены.
* Добавьте в Systemd Timer (как мы учили в прошлом посте 😉) или в Cron на ежедневный запуск.
Теперь вы узнаете о просроченном сертификате раньше, чем ваши пользователи.
#python #ssl #automation #scripting #ai4admin
🥴2
🐍 Python: Мгновенный веб-сервер для передачи файлов
Ситуация: Нужно срочно скачать файл с вашего компьютера на телефон или другой ноутбук в той же Wi-Fi сети. Настраивать Samba/FTP/Nginx долго. Флешку искать лень.
Если у вас установлен Python (а он есть почти везде), у вас уже есть веб-сервер.
Запуск (в папке с файлами):
Теперь с любого устройства в сети заходите на http://IP-ВАШЕГО-ПК:8000. Вы увидите список файлов папки. Кликаем — качаем.
Чтобы остановить: `Ctrl+C` . Просто, гениально и работает везде (Linux, Windows, macOS).
#python #network #lifehack #webserver #cli #sharing
Ситуация: Нужно срочно скачать файл с вашего компьютера на телефон или другой ноутбук в той же Wi-Fi сети. Настраивать Samba/FTP/Nginx долго. Флешку искать лень.
Если у вас установлен Python (а он есть почти везде), у вас уже есть веб-сервер.
Запуск (в папке с файлами):
# Python 3
python3 -m http.server 8000
Теперь с любого устройства в сети заходите на http://IP-ВАШЕГО-ПК:8000. Вы увидите список файлов папки. Кликаем — качаем.
Чтобы остановить: `Ctrl+C` . Просто, гениально и работает везде (Linux, Windows, macOS).
#python #network #lifehack #webserver #cli #sharing
🔥5👍2❤1