我正在使用 SSHTunnelForwared 并使用以下代码成功进入远程服务器:
with SSHTunnelForwarder((ssh_host, ssh_port), ssh_username=ssh_user,
ssh_password=ssh_password,
remote_bind_address=("127.0.0.1", 3306)) as tunnel:
我现在想从服务器内的路径将文件读入 python。假设路径是 /home/user/file.json
如果我做类似的事情
with open('/home/user/file.json','r') as f:
data = json.loads(f)
程序抛出一个错误说:
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/file.json'
显然没有找到该文件。我需要做什么才能找到目录?我在 ssh
块内工作,因此我可以访问 tunnel
对象。
答案 0 :(得分:0)
当你连接时你不知道你所在的默认密码,所以尝试访问你的路径然后读取你的文件,希望这对你有帮助
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("5.206.0.0", username = "root", password = "root")
command = "cd /var/www/html/ && ls"
stdin, out, err = client.exec_command(command)
print "stdout: " + out.read()
也适用于 r sql :
import pymysql
import paramiko
import pandas as pd
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder
from os.path import expanduser
home = expanduser('~')
mypkey = paramiko.RSAKey.from_private_key_file(home + pkeyfilepath)
sql_hostname = 'sql_hostname'
sql_username = 'sql_username'
sql_password = 'sql_password'
sql_main_database = 'db_name'
sql_port = 3306
ssh_host = 'ssh_hostname'
ssh_user = 'ssh_username'
ssh_port = 22
sql_ip = '1.1.1.1.1'
with SSHTunnelForwarder(
(ssh_host, ssh_port),
ssh_username=ssh_user,
ssh_pkey=mypkey,
remote_bind_address=(sql_hostname, sql_port)) as tunnel:
conn = pymysql.connect(host='127.0.0.1', user=sql_username,
passwd=sql_password, db=sql_main_database,
port=tunnel.local_bind_port)
query = '''SELECT VERSION();'''
data = pd.read_sql_query(query, conn)
conn.close()