首页 / 知识
如何使用SCP或SSH将文件复制到Python中的远程服务器?
2023-04-15 16:32:00

How to copy a file to a remote server in Python using SCP or SSH?我在本地计算机上有一个文本文件,它由在cron中运行的每日Python脚本生成。 我想添加一些代码,以便通过SSH将该文件安全地发送到我的服务器。 要使用Paramiko库在Python中执行此操作(即不通过subprocess.Popen或类似方法包装scp),您可以执行以下操作:
(您可能希望处理未知主机,错误,创建所需的任何目录,等等)。 如果你想要简单的方法,这应该工作。 你首先想要".close()"这个文件,所以你知道它是从Python刷新到磁盘的。
您需要生成(在源计算机上)并预先安装(在目标计算机上)ssh密钥,以便scp自动使用您的公共ssh密钥进行身份验证(换句话说,因此您的脚本不会要求输入密码) 。 ssh-keygen示例 您可能使用子进程模块。像这样的东西:
其中 模块文档包含您可能希望与此操作一起执行的错误检查示例。 确保您已设置正确的凭据,以便可以在计算机之间执行无人值守的无密码scp。有一个stackoverflow问题已经存在。 有几种不同的方法可以解决这个问题: 每种方法都有自己的怪癖。如果要包装"ssh","scp"或"rsync"等系统命令,则需要设置SSH密钥以启用无密码登录。您可以使用Paramiko或其他库在脚本中嵌入密码,但您可能会发现缺少文档令人沮丧,特别是如果您不熟悉SSH连接的基础知识(例如 - 密钥交换,代理等)。毫无疑问,SSH密钥几乎总是比这类东西的密码更好。 注意:如果您计划通过SSH传输文件,它很难击败rsync,特别是如果替代方案是普通的旧scp。 我已经使用了Paramiko来关注更换系统调用,但由于易于使用和直接熟悉,我发现自己被回归到包装的命令。你可能会有所不同。我不久前给了海螺一次,但它并没有吸引我。 如果选择系统调用路径,Python提供了一系列选项,如os.system或命令/子进程模块。如果使用版本2.4+,我会使用子进程模块。 达到了同样的问题,但不是"黑客"或模拟命令行: 在这里找到这个答案。
您可以执行类似的操作,以处理主机密钥检查
您可以使用专为此设计的vassal包。 你所需要的只是安装vassal并做
此外,它将为您节省身份验证凭据,而无需一次又一次地键入它们。 如果您不想使用SSL证书,请尝试此操作:
我使用sshfs通过ssh挂载远程目录,并使用shutil复制文件:
然后在python中:
此方法的优点是,如果要生成数据而不是本地缓存并发送单个大文件,则可以流式传输数据。 一个非常简单的方法如下:
不需要python库(只有操作系统),它的工作原理 使用外部资源paramiko;
通过子进程调用
查看本地网络中的python copy文件(linux - > linux) 有点hacky,但以下应该工作:)
|
最新内容
相关内容
linux计算机的命令?
linux计算机的命令?,系统,工作,信息,设备,技术,命令,网站,管理,灵活,基础,linux查看路径命令linux命令如果记不得,可以使用man命令来查看某个命vim运行linux命令?
vim运行linux命令?,系统,工作,信息,地址,命令,标准,时间,情况,工具,基础,linux系统中如何进入退出vim编辑器,方法及区别先按ESC,再输入冒号,在输linux下并行运行命令?
linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linuxlinux下并行运行命令?
linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linuxlinux命令行后台运行?
linux命令行后台运行?,服务,状态,标准,暂停,命令,后台,连续,地方,工作,方法,linux中如何把一个进程放在后台运行可见,nohup 的使用是十分方便的linux用计算器的命令?
linux用计算器的命令?,代码,环境,情况,异常,工具,数据,位置,平台,精密,设计,求在linux环境下用QT编写一个非常简单的计算器计算器包括加,减,乘脚本运行linux命令?
脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,linux下shell脚本命令PS1 主提示符,在特权用户下,默认的主提示符是#,在linux进程运行命令?
linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作命文件复制命令linux?
文件复制命令linux?,系统,地址,文件,目录,位置,工具,命令,目标,文件名,源文件,linux下怎样复制文件并且重命名文件?1、.命令格式:mv [选项] 源文linux显示运行命令?
linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如何查看linux服务器运行状态?1、linux怎么查看服务器状态?我们一起linux运行vim命令?
linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令,如何使用Linux系统中的Vim编辑器1、vim编辑器的三种模式:一般模式linux监控命令运行?
linux监控命令运行?,系统,工作,地址,信息,工具,情况,标准,环境,命令,状态,linux服务器监控的几个方法和命令uptime 该命令直观的显示了服务器