注意一下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

print

'***connected to host "%s"' % HOST

try:

f.login(user='test',passwd='123')

except

ftplib.error_perm:

print 'ERROR:cannot login anonymously'

f.quit()

return

print

'***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的实现相关推荐

  1. 用python实现计算器功能_使用python实现计算器功能

    # 实现带括号的复杂加减乘除优先级运算 # 主要运用到了正则表达式.while循环.列表的几种方法等. # 为实现要求的运算功能该代码共分为两个部分,一个是实现不带括号的加减乘除运算的函数add_su ...

  2. python include的功能_在Python的Config中增加Include功能

    在python中配置文件分析我一般都用configparser. 很好,符合我的一贯需求. 文本格式.简单.内置. 如: [db] host=localhost user=dl passwd=1234 ...

  3. python语音输入功能_“在Python中如何实现一点按钮就出现语音输入语音,输入语音后可以自动翻译为文字的程序?“python语音识别教程...

    Python用什么模块开发语音识别系统 使用YQ5969,这个语音识别模以支持1--8个咪头,还可以支持本地和识别不同需求.5米内本地识别 93%以上,云端识别率97%.这个语音识别模块可以滤除噪声. ...

  4. python实现日历功能_基于python实现简单日历

    本文实例为大家分享了python实现简单日历的具体代码,供大家参考,具体内容如下 首先要理清楚逻辑,日历的难点在于如何使用基础知识将周几与对应的日期进行对应,我这里利用了1917年1月1日为星期1,计 ...

  5. python实现日历功能_使用python生成markdown格式的日历

    文章目录 作用: 使用python生成日报中的日历 参考: 代码:# coding=utf-8 def is_leap_year(year): # 判断是否为闰年 if year % 4 == 0 a ...

  6. python去重复功能_消除Python列表重复的几种方法,python,去,一些

    做Python123平台上的列表去重题,复述题目: 去除列表中的重复元素,考虑以下几种情况: l = [1, 1, 2, 3] l = [[1], [1], [2], [3]] l = [3, 2, ...

  7. python的基本功能_二.Python的基本数据类型及常用功能

    classstr(basestring):"""str(object='') -> string Return a nice string representati ...

  8. python实现打电话功能_使用python代码调用三汇语音卡硬件拨打电话

    def push_notification_by_call(voice, worker_phone_num): """ 语音提醒 :param voice: 音频文件 : ...

  9. python好玩的代码_一行 Python 能实现什么丧心病狂的功能?

    能够把自身代码打印出来的程序,叫做Quine.下面是python的一行quine: ​有人说有分号不算一行,无分号版: 其实,如果你用程序语言的名字+quine作为关键字去搜索,你能找到各种语言实现的 ...

最新文章

  1. 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
  2. ubuntu9.10 qq自动退出修复
  3. CentOS安装GlassFish4.0 配置JDBC连接MySQL
  4. new Date('2014/04/30') 和 new Date('2014-04-30') 的区别
  5. java的mybatis批量更新_mybatis批量更新的问题
  6. redhad6.4 配置在线yum源
  7. 分治法求最大和最小值
  8. 计算机关闭窗口可以使用alt,电脑关闭窗口快捷键
  9. android 播放器全屏模式,ArtVideoPlayer 一个灵活的Android视频播放器,支持全屏,小屏播放...
  10. 北京54坐标与西安80坐标相互转换的两种方法
  11. java微信分享朋友圈_Java实现微信公众平台朋友圈分享功能详细代码
  12. C++primer——形参、局部变量和静态局部变量的差别
  13. 解决redisson超时org.redisson.client.RedisResponseTimeoutException: Redis server response timeout
  14. python输出奇数数字序列_python在一串数字中选出奇数-女性时尚流行美容健康娱乐mv-ida网...
  15. mysql的基础命令之更改密码
  16. python判别分析_二次判别分析Quadratic Discriminant Analysis(QDA)
  17. Ubuntu整个系统迁移到其他盘办法
  18. 永信至诚发起亿元创投基金 主投网络安全创业者
  19. 简述计算机网络测试和故障诊断的发展趋势,网络测试和故障诊断
  20. jade基础文档总结

热门文章

  1. vba代码编程800例_VBA编程常用“积木”过程代码Address的含义
  2. 识别哈希算法类型hash-identifier
  3. Xamarin XAML语言教程使用Visual Studio创建XAML
  4. 通过因特网连接Beaglebone Black
  5. oracle 函数参数类型,ORACLE 11g中的表值函数? (参数化视图)
  6. 计算机电缆怎么做耐压试验,ZGF直流高压发生器进行电缆耐压试验的6个步骤
  7. linux内核竞争条件漏洞,Linux内核竞争条件漏洞-导致远程代码执行
  8. python字符串和字节串有什么区别_对于Python中的字节串bytes和字符串以及转义字符的新的认识...
  9. 快捷键设置_win10自带截图工具如何使用 、设置快捷键
  10. 3D大脑图谱-Julich-Brain被称作“Google Earth of the brain”