Python的scp小工具

scp简单实现

scp是我们在shell上经常使用的命令,用来远程传输文件。python上也能做到scp的功能,需要依赖以下库:

pip install paramiko
pip install scpclient

实际实现也就几行代码:

#创建ssh访问
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#允许连接不在know_hosts文件中的主机
ssh.connect(hostname, port=22, username=zhangsan, password=password)#远程访问的服务器信息

#创建scp
with closing(scpclient.Write(ssh.get_transport(), remote_path=remote_path)) as scp:
scp.send_file(local_filename, preserve_times=True, remote_filename=remote_filename)

其中,ssh.connect()中需要指定远程访问的服务器的ip端口,用户名以及密码;scpclient.Write()中指定远程服务器的路径remote_pathscp.send_file()中指定本地传输的文件名(全路径),远程主机的文件名remote_filename。大概就是这些地方需要注意的。

进阶小工具

小工具的目的是能够好用,所以我增加了几个cli命令,可以在运行工具的时候输入本地路径以及文件名。当然cli命令是可以增加的:

parser = argparse.ArgumentParser(description='scp function for .pkg between two servers')
parser.add_argument('--path', type=str, dest='path',default = os.path.dirname(os.path.realpath(__file__)),help='pkg path:default is current path')
parser.add_argument('--file', type=str, dest='file',default = None, help='pkg filename: must be specified !')

可以看看效果:
scpy
是不是很简单😁#附上源码

个人分析,欢迎指正,若转载请注明出处!