Python의 sshtunnel에서 전달 포트
파이톤의 sshtunnel 포장으로 포트 전송을 했습니다.
컨디션
프로비저닝
로컬 Raspi0, Sstunnel Raspi1 준비, 센서 Raspi2 준비.Raspi0에서 Raspi1까지 Sstunnel을 구축하여 플러그인 통신을 통해 Raspi2에서 데이터를 얻습니다.local_bind_port 50000, sensor포트는 12345입니다.
코드
import os
import time
from datetime import datetime, timezone
from influxdb import InfluxDBClient
from requests.api import get
import socket_client
from sshtunnel import SSHTunnelForwarder
import socket
import pickle
import numpy as np
# socket通信を組み立てる関数。引数はtunnel。
def create_client(tunnel0):
client0 = socket_client.SocketClient("127.0.0.1", tunnel0.local_bind_port)
client0.connect()
return client0
# socket通信でデータを受信する関数。
def recv_data(client1):
# サーバーからレスポンスを受ける。
response = client1.send_rcv()
data = pickle.loads(response)
return data
SENSOR_IP = {'sensor_0': '192.168.xx.xx'}
SENSOR_PORT = {'sensor_0': 12345}
HUB_IP = "10.xx.xx.xx"
LOCALBIND_PORT = 12345
with SSHTunnelForwarder((HUB_IP, 22),
ssh_host_key=None,
ssh_username="pi",
ssh_pkey="/home/pi/.ssh/public_key",
remote_bind_address=(SENSOR_IP["sensor_0"], SENSOR_PORT["sensor_0"]),
local_bind_address=("0.0.0.0", LOCALBIND_PORT)) as tunnel:
client = create_client(tunnel)
data = recv_data(client)
print(data)
Reference
이 문제에 관하여(Python의 sshtunnel에서 전달 포트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mamamajohn/articles/e75846be709e0c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)