使用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()