python向windows服务器上传文件(夹)
本人需求分析: 需要从本地将某个指定目录下的文件夹上传至服务器的某个指定目录下。
这次思路是采用python的 paramiko 库。paramiko是基于SSH用于连接远程服务器并执行相关操作。ssh是一个协议,OpenSSH是其中一个开源实现,本次实践就需要在服务器上下载OpenSSH,通过这个工具开启SSH服务。
但是由于是windows系统,因此Linux系统的OpenSSH不可用,我们可以通过github下载OpenSSH for windows,下载最新版本就可以。 下载链接:github-OpenSSH
安装步骤
- 下载后解压至服务器的路径C:\Program Files\OpenSSH下,这是官方要求的路径,不按照这个路径解压可能会出现问题(我也是看别人这么说),解压结果如下:
-
打开cmd,在路径C:\Program Files\OpenSSH下输入指令
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
-
设置服务自动启动并启动服务:
sc config sshd start= auto
net start sshd
到此服务已经安装完毕,默认端口是22,默认用户名密码为Window账户名和密码,当然防火墙还是要设置对应端口允许通讯。不过我购买的云服务器,端口22默认是加入安全组的。
使用paramiko
-
首先安装paramiko库
pip3 install paramiko
-
简单测试是否能正常使用,如果没有报错则连接成功 - import paramiko
-
- username = '***' # 用户名为administrator
- password = '***' # 密码为远程链接时所需要的密码(云服务器实例密码)
-
- transport = paramiko.Transport("127.94.106.73", 22)#获取Transport实例,其中22为端口号
- transport.connect(username=username, password=password) # 建立连接
- transport.close()
复制代码
- 简单的往服务器上上传一个文件
- import paramiko
- username = '***'
- password = '***'
- transport = paramiko.Transport("127.94.106.73", 22)#获取Transport实例
- transport.connect(username=username, password=password) # 建立连接
- # 获取SFTP实例
- sftp = paramiko.SFTPClient.from_transport(transport)
- # 设置上传的本地/远程文件路径
- localpath = "E:\\实验室\\Gblog\\Gblog-sqf\\123.txt"
- remotepath = "C:\\my\\123.txt"
- # 执行上传动作
- sftp.put(localpath, remotepath)
- transport.close()
复制代码
我们在本地这个路径下创建一个文本文件
运行完代码后,我们可以看到服务器上对应路径下产生了一个一样内容的文件
到目前位置,从本地向windows服务器上传文件就完成了。 |