Files
trueconf_bot/lk/test_sql.py

77 lines
3.2 KiB
Python

#!/usr/bin/env python3
# /opt/trueconf_bot/test_secure_connect.py
import sys
import os
import pymssql
# Добавляем путь к проекту для корректных импортов конфигурации
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
try:
print("🔄 Загружаем конфигурацию и выгружаем секреты из Passwork...")
import config.config as config
except ImportError as e:
print(f"❌ Ошибка импорта config.py: {e}")
sys.exit(1)
def main():
# Технические параметры целевого сервера
SERVER = '172.16.20.203'
DATABASE = 'iskmdax_model'
# Извлекаем данные из автоматически загруженного пула
USER = getattr(config, 'DB_USER', None)
PASSWORD = getattr(config, 'DB_PASSWORD', None)
if not USER or not PASSWORD:
print("❌ Ошибка: Учетные данные для подключения к БД не найдены в Passwork!")
sys.exit(1)
print(f"🔌 Устанавливаем ЗАЩИЩЕННОЕ соединение (encryption='require')...")
print(f" Сервер: {SERVER}")
print(f" База: {DATABASE}")
print(f" Логин: [ДАННЫЕ СКРЫТЫ]")
print("-" * 60)
try:
conn = pymssql.connect(
server=SERVER,
user=USER,
password=PASSWORD,
database=DATABASE,
charset='cp1251',
encryption='require' # Строгое требование SSL/TLS
)
cursor = conn.cursor()
print("✅ Защищенное TLS/SSL соединение с сервером успешно установлено!")
# Проверочный SQL-запрос
query = "SELECT TOP(5) * FROM dbo.Layer;"
print(f"🏃 Выполняем тестовый запрос: {query}\n")
cursor.execute(query)
rows = cursor.fetchall()
if rows:
print(f"🎯 Успешно получено строк: {len(rows)}")
for idx, row in enumerate(rows, 1):
# Печатаем содержимое строки как есть
print(f" 🔹 Строка #{idx}: {row}")
else:
print("📭 Запрос выполнен успешно, но целевая таблица оказалась пустой.")
conn.close()
print("\n🏁 Тест защищенного соединения завершен успешно!")
except Exception as e:
print(f"\n❌ Ошибка подключения или выполнения запроса!")
error_msg = str(e)
if "Login failed" in error_msg or "18456" in error_msg:
print("Детали: Ошибка аутентификации (проверьте корректность учетных данных в Passwork).")
else:
print(f"Детали: {error_msg}")
sys.exit(1)
if __name__ == "__main__":
main()