Подключиться к прокси (SOCKS) базы данных в Python - PullRequest
2 голосов
/ 23 октября 2019

Я пытаюсь подключиться к базе данных, для которой требуется прокси (socks) , чтобы установить соединение. Если я использую прокси-соединение вручную, я могу подключиться, но мне нужно подключить сценарий к прокси (носки) машины, чтобы сделать это SELECT

СКРИПТ

import socket
import socks
import requests
import pymssql

socks.set_default_proxy(socks.SOCKS5, "138.34.133.155", 1080, True, 'user','password')
socket.socket = socks.socksocket

server = '172.43.56.89'
username = 'user'
password = 'password'
database = 'dbname'

conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database))

cursor = conn.cursor()

cursor.execute("SELECT column FROM table")

row = cursor.fetchall()

conn.close()

for i in row:
    print(i)

ВЫХОД

Traceback (последний вызов был последним): файл "connection.py", строка 15, в conn = reports.get (pymssql.connect (host = server, user = username, password = password, database)= база данных)) Файл «src \ pymssql.pyx», строка 642, в pymssql.connect pymssql.OperationalError: (20009, «Ошибка DB-Lib 20009, уровень серьезности 9: \ nНе доступно для подключения: Adaptive Server недоступен или не работает»существовать (172.43.56.89:1433)\nNet-Lib ошибка при неизвестной ошибке (10060) \ n ')

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Я думаю, что вариант - смонтировать локальный туннельный носок с переадресацией портов, отобразить порт вашей базы данных и действовать так, как если бы ваш сервер был локальным.

Это действительно эффективно, если вы используете свой питонсценарий на компьютере Unix.

Что-то вроде этого системного вызова (для 3306 mariaDB):

ssh -L 3306:localhost:3306 user@x.x.x.x

Сначала вы запускаете SSH, затем вы говорите ему включить портпереадресация с порта 3306 на порт localhost:3306 сервера, к которому вы подключаетесь через user@IP.

При этом каждый запрос с вашего local machine:3306 будет отправляться на ваш сервер MariaDB:3306, позволяяВы должны использовать его, как если бы вы, где на сервере.

0 голосов
/ 28 октября 2019

Если вы не хотите взламывать исходный код pymssql, существуют внешние инструменты, которые перенаправляют весь трафик TCP через прокси-сервер socks, например FreeCap для Windows, RedSocks для Linux и Proximac для macOS.

...