python实现scp功能_转python实现ftp,scp的实现
注意一下spawn的用法
child
ssh =
pexpect.spawn('ssh %s@%s "%s"' % (user, ip,
cmd))
# -*- coding: utf-8 -*-
#!/usr/bin/python
#Filename:copyfile.py
import os,shutil
def mycopy(srcpath,dstpath):
if not os.path.exists(srcpath):
print "srcpath not exist!"
if not os.path.exists(dstpath):
print "dstpath not exist!"
for root,dirs,files in os.walk(srcpath,True):
for eachfile in files:
shutil.copy(os.path.join(root,eachfile),dstpath)
srcpath='e:\\pic'
dstpath='f:\\pictotal'
mycopy(srcpath,dstpath)
运行这个脚本,去f盘看看:
sqldb =
localpath+database //获取database名字
if os.path.exists(sqldb):
os.chmod(sqldb,stat.S_IRWXU) //如果database存在,直接改为可读写格式
else: //如果不存在,则远程登录服务器去提取
child =
pexpect.spawn("scp severA@ip:/path/"+database+"
"+localpath) //拷贝到本地目录
child.expect("serverA@ip's password:")
child.sendline("password")
child.interact()
os.chmod(sqldb,stat.S_IRWXU) //把复制到本地的database改为可读写格式
Python 编程中使用ftplib模块的FTP对象,可以进行方便的实现FTP客户端功能,简易的流程如下:
# FTP操作基本流程示意 FTP.connect(服务器地址,端口,超时时间) # 连接服务器 FTP.login(用户名,用户密码)
# 用户登录 FTP.cwd(路径)
# 设置要操作FTP文件夹路径 FTP.nlst()
# 获得目录下文件 FTP.retrbinary(文件名,回调函数)
# 下载FTP上的文件 FTP.delete(文件名)
# 删除FTP文件 ftp.storbinary(文件名, 文件对象)
# 上传FTP文件 ftp.quit()
# 退出FTP服务器
connect(服务器地址,端口[,超时]) :连接FTP服务器地址。
login(用户名,用户密码) :进行FTP登陆,然后才能对文件进行操作。
cwd(路径) :设置ftp的当前操作的路径
nlst() :获得当前路径下的所有文件及文件夹名。
retrbinary(FTP上文件名,处理回调函数名) :将ftp上的文件保存到本机上。
delete(文件名) :用于删除文件。
storbinary(文件名称, 文件对象) :用于上传文件。
quit() :退出ftp服务器并断开连接。
具体的用法如以下例子:
# 例:FTP编程
fromftplibimportFTP
ftp=FTP()
timeout=30
port=21
)# 连接FTP服务器
)# 登录
printftp.getwelcome()# 获得欢迎信息
)# 设置FTP路径
list=ftp.nlst()# 获得目录列表
fornameinlist:
print(name)# 打印文件名字
path='d:/data/'+name# 文件保存路径
f=open(path,'wb')# 打开要保存文件
filename='RETR '+name# 保存FTP文件
ftp.retrbinary(filename,f.write)# 保存FTP上的文件
ftp.delete(name)# 删除FTP文件
ftp.storbinary('STOR '+filename,open(path,'rb'))# 上传FTP文件
ftp.quit()# 退出FTP服务器
再增加个完整模板:
#!/usr/bin/python
# -*- coding: utf-8 -*-
importftplib
importos
importsocket
HOST='ftp.mozilla.org'
DIRN='pub/mozilla.org/webtools'
FILE='bugzilla-3.6.7.tar.gz'
defmain():
try:
f=ftplib.FTP(HOST)
except(socket.error,socket.gaierror):
print'ERROR:cannot reach " %s"'%HOST
return
print'***Connected to host "%s"'%HOST
try:
f.login()
exceptftplib.error_perm:
print'ERROR: cannot login anonymously'
f.quit()
return
print'*** Logged in as "anonymously"'
try:
f.cwd(DIRN)
exceptftplib.error_perm:
print'ERRORL cannot CD to "%s"'%DIRN
f.quit()
return
print'*** Changed to "%s" folder'%DIRN
try:
#传一个回调函数给retrbinary() 它在每接收一个二进制数据时都会被调用
f.retrbinary('RETR %s'%FILE,open(FILE,'wb').write)
exceptftplib.error_perm:
print'ERROR: cannot read file "%s"'%FILE
os.unlink(FILE)
else:
print'*** Downloaded "%s" to CWD'%FILE
f.quit()
return
if__name__=='__main__':
main()
模板基础上进行例子:
importos
importsys
importftplib
importsocket
##################################################################
# sign in the ftp server and download the log file.
# 登陆生产服务器下载日志
#################################################################
defgetServerLog(dir,fileName,host,userName,password):
ifos.path.exists(fileName):
print'****the file '+fileName+' has already exist! The file will be over writed'
#connect
try:
f=ftplib.FTP(host)
except(socket.error,socket.gaierror),e:
print'----ERROR:cannot reach '+host
printe
returnFalse
#login
try:
f.login(user=userName,passwd=password)
exceptftplib.error_perm,e:
print'----ERROR:cannot login to server '+host
printe
f.quit()
returnFalse
print'****Logged in as '+userName+' to server '+host
#change folder
try:
f.cwd(dir)
exceptftplib.error_perm,e:
print'----ERROR:cannot CD to %s on %s'%(dir,host)
printe
f.quit()
returnFalse
print'**** changed to %s folder on %s'%(dir,host)
#get file
try:
f.retrbinary('RETR %s'%fileName,open(fileName,'wb').write)
exceptftplib.error_perm,e:
print'----ERROR:cannot read file %s on %s'%(fileName,host)
printe
os.unlink(fileName)
returnFalse
else:
print'****Downloaded '+fileName+' from '+host+' to '+os.getcwd()
f.quit()
returnTrue
if__name__=="__main__":
getServerLog("/userhome/root/other/temp","a.out","10.10.10.10","root","password")
print'****done'
python ftp的实现例子
import ftplib
import os
import socket
HOST='192.168.30.109'
FILE='test'
def main():
try:
f=ftplib.FTP(HOST)
except
(socket.error,socket.gaierror),e:
print 'ERROR:cannot reach "%s"'% HOST
return
'***connected to host "%s"' % HOST
try:
f.login(user='test',passwd='123')
except
ftplib.error_perm:
print 'ERROR:cannot login anonymously'
f.quit()
return
'***Logged in as "test""'
try:
f.retrbinary('RETR %s' % FILE,open(FILE,'wb').write)
except
ftplib.error_perm:
print 'ERROR:cannot read file "%s"' % FILE
os.unlink(FILE)
else:
print '***Downloaded "%s" to CWD' % FILE
return
try:
f.storbinary('STOR %s' % FILE,open(FILE,'rb'))
except
ftplib.error_perm:
print 'ERROR:cannot up file "%s"' % FILE
os.unlink(FILE)
else:
print '***upload "%s" to ftp' % FILE
f.quit()
return
if __name__=='__main__':
main()
python实现scp功能_转python实现ftp,scp的实现相关推荐
- 用python实现计算器功能_使用python实现计算器功能
# 实现带括号的复杂加减乘除优先级运算 # 主要运用到了正则表达式.while循环.列表的几种方法等. # 为实现要求的运算功能该代码共分为两个部分,一个是实现不带括号的加减乘除运算的函数add_su ...
- python include的功能_在Python的Config中增加Include功能
在python中配置文件分析我一般都用configparser. 很好,符合我的一贯需求. 文本格式.简单.内置. 如: [db] host=localhost user=dl passwd=1234 ...
- python语音输入功能_“在Python中如何实现一点按钮就出现语音输入语音,输入语音后可以自动翻译为文字的程序?“python语音识别教程...
Python用什么模块开发语音识别系统 使用YQ5969,这个语音识别模以支持1--8个咪头,还可以支持本地和识别不同需求.5米内本地识别 93%以上,云端识别率97%.这个语音识别模块可以滤除噪声. ...
- python实现日历功能_基于python实现简单日历
本文实例为大家分享了python实现简单日历的具体代码,供大家参考,具体内容如下 首先要理清楚逻辑,日历的难点在于如何使用基础知识将周几与对应的日期进行对应,我这里利用了1917年1月1日为星期1,计 ...
- python实现日历功能_使用python生成markdown格式的日历
文章目录 作用: 使用python生成日报中的日历 参考: 代码:# coding=utf-8 def is_leap_year(year): # 判断是否为闰年 if year % 4 == 0 a ...
- python去重复功能_消除Python列表重复的几种方法,python,去,一些
做Python123平台上的列表去重题,复述题目: 去除列表中的重复元素,考虑以下几种情况: l = [1, 1, 2, 3] l = [[1], [1], [2], [3]] l = [3, 2, ...
- python的基本功能_二.Python的基本数据类型及常用功能
classstr(basestring):"""str(object='') -> string Return a nice string representati ...
- python实现打电话功能_使用python代码调用三汇语音卡硬件拨打电话
def push_notification_by_call(voice, worker_phone_num): """ 语音提醒 :param voice: 音频文件 : ...
- python好玩的代码_一行 Python 能实现什么丧心病狂的功能?
能够把自身代码打印出来的程序,叫做Quine.下面是python的一行quine: 有人说有分号不算一行,无分号版: 其实,如果你用程序语言的名字+quine作为关键字去搜索,你能找到各种语言实现的 ...
最新文章
- 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
- ubuntu9.10 qq自动退出修复
- CentOS安装GlassFish4.0 配置JDBC连接MySQL
- new Date('2014/04/30') 和 new Date('2014-04-30') 的区别
- java的mybatis批量更新_mybatis批量更新的问题
- redhad6.4 配置在线yum源
- 分治法求最大和最小值
- 计算机关闭窗口可以使用alt,电脑关闭窗口快捷键
- android 播放器全屏模式,ArtVideoPlayer 一个灵活的Android视频播放器,支持全屏,小屏播放...
- 北京54坐标与西安80坐标相互转换的两种方法
- java微信分享朋友圈_Java实现微信公众平台朋友圈分享功能详细代码
- C++primer——形参、局部变量和静态局部变量的差别
- 解决redisson超时org.redisson.client.RedisResponseTimeoutException: Redis server response timeout
- python输出奇数数字序列_python在一串数字中选出奇数-女性时尚流行美容健康娱乐mv-ida网...
- mysql的基础命令之更改密码
- python判别分析_二次判别分析Quadratic Discriminant Analysis(QDA)
- Ubuntu整个系统迁移到其他盘办法
- 永信至诚发起亿元创投基金 主投网络安全创业者
- 简述计算机网络测试和故障诊断的发展趋势,网络测试和故障诊断
- jade基础文档总结
热门文章
- vba代码编程800例_VBA编程常用“积木”过程代码Address的含义
- 识别哈希算法类型hash-identifier
- Xamarin XAML语言教程使用Visual Studio创建XAML
- 通过因特网连接Beaglebone Black
- oracle 函数参数类型,ORACLE 11g中的表值函数? (参数化视图)
- 计算机电缆怎么做耐压试验,ZGF直流高压发生器进行电缆耐压试验的6个步骤
- linux内核竞争条件漏洞,Linux内核竞争条件漏洞-导致远程代码执行
- python字符串和字节串有什么区别_对于Python中的字节串bytes和字符串以及转义字符的新的认识...
- 快捷键设置_win10自带截图工具如何使用 、设置快捷键
- 3D大脑图谱-Julich-Brain被称作“Google Earth of the brain”