目录
前言
多台服务器同步配置文件是一个常用的需求。尤其是负载均衡下,修改一点东西可能需要同步到N台服务器上。人工同步略微有点蛋疼。
Linux有个scp复制,需要搭配expect来使用。但是说实话,我是不愿意写bash脚本的。前段日子写zabbix的监控脚本就感觉自己头皮发麻。
python有一个paramiko库同样可以实现文件分发。接下来我们就来看看如何实现。
为了方便,这里采用了json配置文件的形式。同时最终我会用pyinstaller打包成可执行文件。
python版本:3.6.8
paramiko版本:2.7.1
pyinstaller版本:3.6
开发环境:Linux Centos7
最终运行环境:Linux Centos7
安装
不用多说。
pip install paramiko
编写
工具类SFTP
里面实现了初始化、连接、断开连接、上传文件、创建目录功能。这里主要是使用了递归思路实现了文件夹的创建。
import os
import paramiko
class SFTP(object):
"""
SFTP 工具类
"""
def __init__(self, host, port, username, password):
self.host = host
self.port = port
self.username = username
self.password = password
self.manager = None
self.client = None
def connect(self):
"""
连接sftp服务器
"""
manager = paramiko.Transport((self.host, self.port))
manager.connect(username=self.username, password=self.password)
self.manager = manager
client = paramiko.SFTPClient.from_transport(manager)
self.client = client
def quit(self):
"""
断开sftp服务器连接
"""
if not self.client:
self.client.close()
if not self.manager:
self.manager.close()
def exists(self, remote_path):
"""
判断服务器上路径是否存在
:param remote_path: 服务器路径
:return:
"""
try:
self.client.stat(remote_path)
return True
except FileNotFoundError:
return False