最近稍微学习了下python中的paramiko这个模块,发现他的功能还是很强大的,他的上传和下载功能十分适合运维人员的一些日常工作的需要,不 废话了,下面直接上代码了,先说下环境,本文是在centos6的环境下,python的版本是2.6.5,如果你没配好环境,可以看我写的http://www.50rescue.com/index.php/archives/10/ 这里来配置好环境,建议你一定要按照好easy_inatall 这个工具,在学习中,感觉离不开她 了,呵呵。。。。
贴别提醒:论坛的编辑器我不太会使用,我把源代码复制在文本文件里,传了上来,需要的可以下载:
下面是上传的代码:
- [root@centos6 python]# clear
- [root@centos6 python]# cat paramiko-upload.py
- #!/usr/bin/env python
- import paramiko
- import os
- import datetime
- hostname='74.63.229.*'
- username='root'
- password='abc123'
- port=22
- local_dir='/tmp/'
- remote_dir='/tmp/test/'
- if __name__=="__main__":
- # try:
- t=paramiko.Transport((hostname,port))
- t.connect(username=username,password=password)
- sftp=paramiko.SFTPClient.from_transport(t)
- # files=sftp.listdir(dir_path)
- files=os.listdir(local_dir)
- for f in files:
- print''
- print'#########################################'
- print'Beginning to upload file %s ' % datetime.datetime.now()
- print'Uploading file:',os.path.join(local_dir,f)
- # sftp.get(os.path.join(dir_path,f),os.path.join(local_path,f))
- sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
- print'Upload file success %s ' % datetime.datetime.now()
- print ''
- print '##########################################'
- #except Exception:
- # print "error!"
- t.close()
- [root@centos6 python]#
下面是下载功能的代码:
- [root@centos6 python]# cat paramiko-download.py
- #!/usr/bin/env python
- import paramiko
- import os
- import datetime
- hostname='74.63.229.*'
- username='root'
- password='abc123'
- port=22
- local_dir='/tmp/'
- remote_dir='/tmp/test/'
- if __name__=="__main__":
- # try:
- t=paramiko.Transport((hostname,port))
- t.connect(username=username,password=password)
- sftp=paramiko.SFTPClient.from_transport(t)
- # files=sftp.listdir(dir_path)
- files=sftp.listdir(remote_dir)
- for f in files:
- print ''
- print '#########################################'
- print 'Beginning to download file from %s %s ' % (hostname,datetime.datetime.now())
- print 'Downloading file:',os.path.join(remote_dir,f)
- sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f))
- # sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
- print'Download file success %s ' % datetime.datetime.now()
- print''
- print'##########################################'
- #except Exception:
- # print "error!"
- t.close()
- [root@centos6 python]#
呵呵,代码比较简陋,异常处理也没加,只是自己学习中用的,如果要做成产品的话,还需要好多改进的地方,希望和大家一起进步。。。