我面臨以下問題。我在遠程服務器上有一個 PostgreSQL 資料庫。為了訪問它,我需要通過 SSH 隧道。
所以,我的測驗步驟是:
- 創建隧道
- 連接到資料庫
- 執行查詢/查詢
我可以使用 SSHLibrary 創建隧道,并且可以正常作業:
SSHLibrary.Open Connection 10.xxx.xxx.xx
SSHLibrary.Login MySSH_User MySSH_Password delay=1
SSHLibrary.Create Local SSH Tunnel 9191 ${IP_DATABASE} 22
所以我繼續使用 DatabaseLibrary 來執行連接(并且我已經檢查了所有欄位都正確):
DatabaseLibrary.Connect To Database psycopg2 ${DB_NAME} ${USER_DB} ${PASSWORD_DB} ${IP_DATABASE} ${PORT_DB}
但我收到以下錯誤:
OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "10.xxx.xxx.xx" and accepting
TCP/IP connections on port 5432?
我該如何解決?我想我需要以某種方式指定必須使用隧道來完成資料庫連接,但我不知道該怎么做。下面是完整的測驗代碼:
*** Settings ***
Library DatabaseLibrary
Library SSHLibrary
*** Variables ***
${IP_DATABASE} 10.xxx.xxx.xx
${PORT_DB} 5432
${DB_NAME} MyNameDB
${SCHEMA_DATABASE} MySchemaDB
${USER_DB} MyUserDB
${PASSWORD_DB} MyPasswordDB
*** Keywords ***
*** Test Cases ***
Connect To DB Via SSH
SSHLibrary.Open Connection 10.xxx.xxx.xx
SSHLibrary.Login MySSH_User MySSH_Password delay=1
SSHLibrary.Create Local SSH Tunnel 9191 ${IP_DATABASE} 22
Sleep 2s
DatabaseLibrary.Connect To Database psycopg2 ${DB_NAME} ${USER_DB} ${PASSWORD_DB} ${IP_DATABASE} ${PORT_DB}
我想通過使用射頻來做到這一點,有人可以幫忙嗎?非常感謝
uj5u.com熱心網友回復:
Ssh 隧道的作業方式應該是,您與另一臺主機建立 SSH 連接,并在 localhost 中公開一個 PORT,然后將流量從 localhost 中的該埠隧道傳輸到隧道端點中的 IP/PORT ..
因此,假設您在 192.168.100.10 有一臺主機,您的機器人框架正在運行,它需要連接到 192.168.50.100 中的資料庫:
如果可以直接通過 ssh 訪問 postgres:
Connect To DB Via SSH
${IP_DATABASE}= 192.168.50.100
${DB_PORT}= 5432
SSHLibrary.Open Connection ${IP_DATABASE}
SSHLibrary.Login MySSH_User MySSH_Password delay=1
SSHLibrary.Create Local SSH Tunnel ${DB_PORT} ${IP_DATABASE} ${DB_PORT}
DatabaseLibrary.Connect To Database psycopg2 ${DB_NAME} ${USER_DB} ${PASSWORD_DB} 127.0.0.1 ${PORT_DB}
現在,如果您必須使用 ssh 跳轉主機,例如,連接到一個 ssh 服務器,然后該服務器將連接到另一個運行 postgres 的服務器,您需要做的就是更改流量將轉發到的隧道 IP 地址:
Connect To DB Via SSH
${IP_DATABASE}= 192.168.50.100
${IP_SSH_JUMPHOST}= 192.168.50.1
${DB_PORT}= 5432
SSHLibrary.Open Connection ${IP_JUMPHOST}
SSHLibrary.Login MySSH_User MySSH_Password delay=1
SSHLibrary.Create Local SSH Tunnel ${DB_PORT} ${IP_DATABASE} ${DB_PORT}
DatabaseLibrary.Connect To Database psycopg2 ${DB_NAME} ${USER_DB} ${PASSWORD_DB} 127.0.0.1 ${PORT_DB}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/317115.html
標籤:数据库 PostgreSQL 机器人框架 ssh-隧道 robotsframework-sshlibrary
上一篇:按成員為每個組設定不同的過濾器
