我希望通过 Python 中的 VPN 访问 SQL 数据库。
一切都在服务器端配置好了。我可以在笔记本电脑上使用 Visual Studio,配置 ODBC 驱动程序并设置 ODBC 数据源,并且我能够使用 WatchGuard Mobile 作为 VPN 客户端(使用凭据)从该设置访问该数据库。
就 Python 而言,我应该能够使用包 pyodbc
连接到数据库,但我不确定首先如何连接到 VPN。我已经看过包 openvpn-api
和 socket
,但我不熟悉这些,因此不确定它们是否真的是我应该查看的以解决该问题的包。
我只去过
import openvpn_api
v = openvpn_api.VPN(HOST, PORT)
v.connect()
## Output
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/environment/openvpn-api/openvpn_api/vpn.py", line 73, in connect
raise errors.ConnectError(str(e)) from None
openvpn_api.util.errors.ConnectError: timed out
和
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.recv(1024)
## Output
b'HTTP/1.1 400 Bad Request\r\nDate: Tue, 12 Jan 2021 18:59:29 GMT\r\nContent-Type: text/html\r\nContent-Length: 138\r\nConnection: close\r\n\r\n<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor="white">\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n'
如果您提供有关 socket
+ pyodbc
方法是否合理的任何反馈,以及有关 socket
或更合适的包以连接到 VPN 的任何帮助或资源,我将不胜感激。< /p>
答案 0 :(得分:1)
我认为您根本不需要在 Python 中与 VPN 交互。您应该能够使用安装在笔记本电脑上的单独 VPN 客户端连接到 VPN。我假设此 VPN 连接允许您访问 SQL Server 所在的网络。
一旦您通过 VPN 客户端连接到 VPN,您的笔记本电脑应该能够访问 SQL Server,并且您可以通过 ODBC 连接到它。
import pyodc
server = 'YourSQLServerName'
driver = '{ODBC Driver 11 for SQL Server}' # depends on what driver you have installed
database = 'YourSQLDatabaseName'
# pyodbc can also list the ODBC you have installed
# drivers = pyodbc.drivers()
# trusted_connection will use your local credentials
##assuming a separate username and password isn't required (security is provided by the VPN)
connection = pyodbc.connect(driver=driver, server=server, database=database, trusted_connection='yes')
cursor = connection.cursor()