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_path
;scp.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 !')
可以看看效果:
是不是很简单😁#附上�源码