文章内容

2022/4/8 18:53:23,作 者: 黄兵

Python 如何使用 SSH 上传文件

最近项目上需要将采集到的数据上传到服务器,采集使用的是 Python 爬虫,所以考虑怎么使用 Python 将文件上传到 Ubuntu 服务器。

在 Python 中我们可以使用 Paramiko 库,具体代码示例:

import paramiko

@staticmethod
def update_files_to_ubuntu_server():
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect("host", username="root", password="pass")
    sftp = ssh.open_sftp()
    log_file_path = path.join(os.getcwd(), 'files/test.log')
    sftp.put(log_file_path, "/var/CDN/test.log")
    sftp.close()
    ssh.close()

这里有几点需要注意:

当我们不想使用 known_hosts 文件的时候(也就是提示是否信任该主机),我们直接使用 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 不会出现这个问题。

询问是否信任该主机示例截图:


sftp.put(sent_file,receive_file) 第一个参数是需要发送的文件,必须是单个文件,不能是目录,第二参数,接收文件也必须具体到文件名,不能是目录,否则会报错:

raise IOError(errno.EACCES, text)`PermissionError: [Errno 13] **Permission denied**`


参考资料:

1、How to copy a file to a remote server in Python using SCP or SSH?

2、python paramiko giving error "Permission denied [Errno 13]" on windows server on using sftp

3、Verify host key with pysftp


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Python 如何使用 SSH 上传文件

分享到:

发表评论

评论列表