Ansible — это мощный инструмент автоматизации, и если стандартных модулей недостаточно, можно легко писать свои модули на Python.
from ansible.module_utils.basic import AnsibleModule
def run_module():
module_args = dict(
some_list=dict(type='list', required=True)
)
result = dict(output=[])
module = AnsibleModule(
argument_spec=module_args,
supports_check_mode=True
)
if module.check_mode:
module.exit_json(**result)
if len(module.params['some_list']) <= 1:
module.fail_json(msg='some_list needs more than 1 item', **result)
for item in module.params['some_list']:
result['output'].append({"value": item, "extra": "n/a"})
module.exit_json(**result)
def main():
run_module()
if __name__ == '__main__':
main()
☝️ Этот модуль принимает список, проверяет его длину и возвращает обработанный результат. Это базовый пример, который можно расширять под любые задачи.
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍14❤6🔥2👏1
astor 🟠 Преобразует AST → Python-код (unparsing)🟠 Удобна для автогенерации и модификации кода🟠 Поддерживает сохранение форматирования и комментариев (частично)
pip install astor
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4
import os
def bulk_rename(folder_path, old_name_part, new_name_part):
if not os.path.isdir(folder_path):
raise NotADirectoryError(f"Путь «{folder_path}» не найден")
for filename in os.listdir(folder_path):
if old_name_part in filename:
new_filename = filename.replace(old_name_part, new_name_part)
old_full = os.path.join(folder_path, filename)
new_full = os.path.join(folder_path, new_filename)
# Пропускаем, если имена совпадают
if old_full == new_full:
print(f"Пропущено (имена совпадают): {filename}")
continue
try:
os.rename(old_full, new_full)
print(f"Переименовано: {filename} → {new_filename}")
except OSError as e:
print(f"Ошибка при переименовании {filename}: {e}")
if __name__ == "__main__":
folder = '/path/to/your/folder'
bulk_rename(folder, 'old_part', 'new_part')
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍5❤3
dill 🟠 Работает там, где pickle падает🟠 Подходит для multiprocessing с функциями без глобального контекста🟠 Можно сохранить/восстановить сессию (dill.dump_session())
pip install dill
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍3
Bot-EveryDay-master.zip
78.7 KB
aiogram postgresql #telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥18👍7👏2
tonview-bot-main.zip
37.9 KB
aiogram, aiohttp sqlalchemy #telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤10😁4👏3👍2
h2o 🟠 Встроенный AutoML: подбор моделей, стэкинг, тюнинг🟠 Поддержка GBM, Random Forest, GLM, XGBoost, Deep Learning🟠 Интерфейс через Python, R, Web UI или REST API🟠 Умеет работать распределённо (кластер), обрабатывать сотни ГБ/ТБ данных
pip install h2o
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🥰2
opencv-python, numpyimport cv2
cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
body_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_fullbody.xml")
while True:
_, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, width, height) in faces:
cv2.rectangle(frame, (x, y), (x + width, y + height), (255, 0, 0), 3)
cv2.imshow("Camera", frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍13
optuna🟠 Поддерживает scikit-learn, PyTorch, XGBoost, LightGBM, и любые кастомные модели🟠 Быстрый поиск за счёт pruning (обрезания неудачных вариантов на ранней стадии)🟠 Простое API: пишешь целевую функцию и указываешь диапазоны параметров🟠 Поддержка распределённой оптимизации и визуализации
pip install optuna
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤3👍2🤩1
Constructor-Telegram-Bots-master.zip
129.3 KB
django postgresql #telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤6👍5
dtreeviz 🟠 Показывает, как данные проходят через узлы🟠 Поддерживает sklearn, xgboost, lightgbm🟠 Интерактивные графики с подписями, распределениями и split‑значениями
pip install dtreeviz
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤5👍4
boto3, botocore, subprocess, datetime import subprocess
import boto3
import datetime
from botocore.exceptions import NoCredentialsError
# Configuration
DB_HOST = 'localhost'
DB_USER = 'your_db_user'
DB_PASSWORD = 'your_db_password'
DB_NAME = 'your_db_name'
S3_BUCKET_NAME = 'your-s3-bucket-name'
S3_REGION = 'us-west-2'
def backup_database():
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
backup_file = f"{DB_NAME}_backup_{timestamp}.sql"
dump_command = f"mysqldump -h {DB_HOST} -u {DB_USER} -p{DB_PASSWORD} {DB_NAME} > {backup_file}"
process = subprocess.Popen(dump_command, shell=True)
process.wait()
if process.returncode == 0:
print(f"Database backup successful: {backup_file}")
upload_to_s3(backup_file)
else:
print("Database backup failed.")
def upload_to_s3(file_name):
s3 = boto3.client('s3', region_name=S3_REGION)
try:
s3.upload_file(file_name, S3_BUCKET_NAME, file_name)
print(f"Backup file uploaded to S3: s3://{S3_BUCKET_NAME}/{file_name}")
except FileNotFoundError:
print("The backup file was not found.")
except NoCredentialsError:
print("AWS credentials not available.")
if __name__ == "__main__":
backup_database()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥3
ormarАсинхронный (async/await) — идеально для современных API
Модели основаны на pydantic — автоматическая валидация
Простой синтаксис, похож на Django ORM
pip install ormar
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
piccolo 🟠 Асинхронный, быстрый и лёгкий🟠 Встроенная система миграций🟠 Поддержка FastAPI🟠 Удобный CLI (piccolo команды)
pip install piccolo
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2😁1
ssl, socket, datetimeimport ssl
import socket
from datetime import datetime
def check_ssl_expiry(hostname):
context = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as conn:
with context.wrap_socket(conn, server_hostname=hostname) as sock:
cert = sock.getpeercert()
expiry_date = datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z')
days_to_expiry = (expiry_date - datetime.now()).days
print(f"SSL Certificate for {hostname} expires in {days_to_expiry} days.")
if __name__ == "__main__":
check_ssl_expiry("example.com")
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4❤2🥰2
paramikoimport paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("your_server_ip", username="user", password="pass")
stdin, stdout, stderr = ssh.exec_command("ls -l")
print(stdout.read().decode())
ssh.close()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍3🔥1😁1
peewee
🟠 Очень простой и понятный синтаксис🟠 Поддержка миграций (pwiz, playhouse.migrate)🟠 Поддерживает связи (ForeignKey, ManyToMany)🟠 Есть расширения (playhouse) для кэша, сигналов, миграций и др.
pip install peewee
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
pandas, matplotlib, seaborn, ydata-profilingfrom sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
def train_evaluate_models(X, y):
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize models
models = {
'Random Forest': RandomForestClassifier(),
'Logistic Regression': LogisticRegression()
}
results = {}
# Train and evaluate each model
for name, model in models.items():
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
results[name] = {
'accuracy': accuracy_score(y_test, y_pred),
'precision': precision_score(y_test, y_pred, average='weighted'),
'recall': recall_score(y_test, y_pred, average='weighted'),
'f1': f1_score(y_test, y_pred, average='weighted')
}
return results
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥4😁3
wapiti 🟠 Обнаруживает десятки уязвимостей🟠 Работает через spidering или с предоставленным URL-списком🟠 Поддержка cookie, прокси, POST-запросов🟠 Можно использовать как CLI, так и через Python-код
pip install wapiti3
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥5👍3
dnspython, argparse, socket git clone https://github.com/mschwager/fierce.git
cd fierce
pip install dnspython==1.16.0
from fierce import Fierce
f = Fierce(domain="example.com", traverse=10, wide=True, subdomains=["www","mail","api"])
f.run()
print("\n".join(f.all_hosts))
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4❤2🥰2
🟠 Предназначен для pre‑scanner фаз (как подбор адресов перед nmap, nessus).🟠 Работает через прямой DNS‑брютфорс, попытки zone‑transfer.🟠 Можно сканить соседние IP‑сети (--traverse, --wide), фильтровать домены (--search).🟠 Поддерживает опции HTTP‑подключения (--connect) к найденным хостам.🟠 CLI-инструмент, но встроен в экосистему Python (установлен через pip).
pip install fierce
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3👍2