def create_remote_dir(remote_path): #创建远程文件路径 ssh = paramiko.SSHClient()#创建ssh链接实列 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#创建白名单,默认不询问 ssh.connect('192.168.56.111', 22, 'root', 'root')#连接服务器 ssh.exec_command('mkdir -p ' + remote_path) #在远端创建remote_path路径文件 ssh.close() def upload_sftp(sftp, table, partition_date, files_path): """上传文件至sftp""" sftp_path = "/data/sftp/sftpsyx/upload/%s/%s/" % (table, partition_date) local_dir = "/home/zhengjianfeng/ljh/hive/tmp/%s/%s/" % (table, partition_date) create_remote_dir(sftp_path) for file_path in files_path: file_name = file_path.split('/')[-1] logger.info("上传文件: %s 至:%s" % (local_dir+file_name, sftp_path+file_name)) for i in range(10): upload_res = sftp.put(local_dir + file_name, sftp_path + file_name) if upload_res: break else: time.sleep(2) logger.info("上传成功!")
时间: 2024-04-05 14:32:24 浏览: 98
这段代码是用Python实现的上传文件至sftp服务器的功能,主要包含两个函数:create_remote_dir和upload_sftp。create_remote_dir函数是用于创建远程文件路径的,它使用paramiko模块进行SSH连接,然后通过执行命令来创建对应的远程路径。upload_sftp函数则是用于上传文件至sftp服务器的,它使用了sftp.put方法将本地文件上传至sftp服务器指定路径下。其中,sftp_path是指定的上传路径,local_dir是本地路径,files_path则是需要上传的文件路径列表。在上传文件时,如果上传失败,则会进行多次重试,以确保上传成功。
相关问题
如何使用Python编写代码来远程控制另一台计算机并创建一个新的目录?
在Python中,你可以使用`paramiko`库来实现远程SSH连接,并通过`os`模块来创建新的目录。`paramiko`是一个用于处理SSH协议的Python客户端库。以下是一个简单的示例:
首先,你需要安装`paramiko`库,如果还没有安装,可以使用pip命令:
```bash
pip install paramiko
```
然后,编写Python代码如下:
```python
import paramiko
def create_directory_remotely(host, username, password, directory_path):
# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 接受所有主机key
try:
# 连接到远程服务器
ssh.connect(hostname=host,
username=username,
password=password,
timeout=5) # 可能需要调整超时时间
# 切换到目标目录
remote_dir = ssh.invoke_shell()
remote_dir.send(f"cd {directory_path}\n") # 发送指令改变工作目录
# 创建新目录
remote_dir.send("mkdir new_directory\n")
remote_dir.recv(999) # 等待确认信息
print(f"Directory '{directory_path}/new_directory' created successfully.")
except Exception as e:
print(f"Failed to create directory: {e}")
finally:
# 关闭连接
if ssh.get_transport().is_active():
ssh.close()
# 调用函数
create_directory_remotely('your_host_address', 'your_username', 'your_password', '/path/to/parent/directory')
```
在这个例子中,你需要将`your_host_address`、`your_username`、`your_password`替换为你想要远程访问的计算机的实际信息。
阅读全文