Admin Future
242 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Windows: Запуск скриптов с правами администратора

Каждый 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

#!/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):

Выступи в роли эксперта по 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):

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 (а он есть почти везде), у вас уже есть веб-сервер.

Запуск (в папке с файлами):


# Python 3
python3 -m http.server 8000

Теперь с любого устройства в сети заходите на http://IP-ВАШЕГО-ПК:8000. Вы увидите список файлов папки. Кликаем — качаем.

Чтобы остановить: `Ctrl+C` . Просто, гениально и работает везде (Linux, Windows, macOS).

#python #network #lifehack #webserver #cli #sharing
🔥5👍21