使用python paramiko模块将本地文件上传到远程主机的指定目录

使用python paramiko模块将本地文件上传到远程主机的指定目录

这个代码首先定义了本地文件名和远程文件名,然后使用datetime模块获取当前日期和时间,并使用字符串格式化功能生成了远程目录和文件名。在这个示例中,远程目录是/path/to/remote/directory/年份/月份/日期/,文件名是小时-分钟-秒数.txt

接下来,定义了远程主机的参数,包括主机名、端口、用户名和密码。然后,创建了一个SSH客户端,并使用connect方法连接到远程主机。在连接到远程主机之后,创建了一个SFTP客户端。

在上传文件之前,使用try-except语句检查远程目录是否存在。如果目录不存在,则使用SFTP客户端的mkdir方法创建目录。最后,使用put方法将本地文件上传到远程主机指定的目录和文件名。最后,关闭了SFTP客户端和SSH客户端。

import os
import paramiko
import datetime

# 定义本地文件名和远程文件名
local_filename = "1.txt"
now = datetime.datetime.now()
remote_directory = f"/path/to/remote/directory/{now.year}/{now.month}/{now.day}/"
remote_filename = f"{now.hour}-{now.minute}-{now.second}.txt"

# 定义远程主机参数
hostname = "10.1.1.1"
port = 22
username = "admin"
password = "password"

# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程主机
ssh.connect(hostname=hostname, port=port, username=username, password=password)

# 创建SFTP客户端
sftp = ssh.open_sftp()

# 创建远程目录
try:
    sftp.stat(remote_directory)
except IOError:
    sftp.mkdir(remote_directory)

# 上传文件
sftp.put(local_filename, remote_directory + remote_filename)

# 关闭SFTP客户端和SSH客户端
sftp.close()
ssh.close()

 

posted @ 2023-07-01 12:47  ken-yu  阅读(442)  评论(0编辑  收藏  举报