用shell和python实现FTP自动登陆然后上传和下载

1.ftp自动登陆下载文件

-n不受.netrc文件的影响。(ftp默认为读取.netrc文件中的设定)
!是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾
binary-设置文件传输类型为binary(二进制传输)
prompt-开关交互提示(默认为ON)
close-结束FTP会话并返回命令行
quit-结束FTP会话并退出FTP(功能通bye)
mget-复制一个或多个远程文件至本地
get-复制单个远程文件到本地
put-复制一个本地文件到远程
mput-复制一个或多个本地文件到远程
hash-Toggleshash-sign(#)printingforeachdatablocktransferred(default=OFF)为每个缓冲区传输切换打印“#”(哈希标记打印)
#####从ftp服务器上的/home/data到本地的/home/databackup####
#!/bin/bash
ftp
-n<<!
open192.168.1.171
userguest123456
binary
cd/home/data
lcd/home/databackup
prompt
mget*
close
bye
!

2.ftp自动登录上传文件

####本地的/home/databackuptoftp服务器上的/home/data####
#!/bin/bash
ftp
-n<<!
open192.168.1.171
userguest123456
binary
hash
cd/home/data
lcd/home/databackup
prompt
mput*
close
bye
!

3.ftp自动登陆并下载单个文件

####ftp服务器上下载/home/data/a.shtolocal/home/databackup####
#!/bin/bash
ftp
-n<<!
open192.168.1.171
userguest123456
binary
cd/home/data
lcd/home/databackup
prompt
geta.sha.sh
close
bye
!

4.ftp自动登录并上传单个文件

####把本地/home/databachup/a.shupftp/home/databackup下####
#!/bin/bash
ftp
-n<<!
open192.168.1.171
userguest123456
binary
cd/home/data
lcd/home/databackup
prompt
puta.sha.sh
close
bye
!



5.python登陆ftp并下载

ftp登陆连接
fromftplibimportFTP#加载ftp模块
ftp=FTP()#设置变量
ftp.set_debuglevel(2)#打开调试级别2,显示详细信息
ftp.connect("IP","port")#连接的ftpsever和端口
ftp.login("user","password")#连接的用户名,密码
printftp.getwelcome()#打印出欢迎信息
ftp.cmd("xxx/xxx")#进入远程目录
bufsize=1024#设置的缓冲区大小
filename="filename.txt"#需要下载的文件
file_handle=open(filename,"wb").write#以写模式在本地打开文件
ftp.retrbinaly("RETRfilename.txt",file_handle,bufsize)#接收服务器上文件并写入本地文件
ftp.set_debuglevel(0)#关闭调试模式
ftp.quit()#退出ftp

ftp相关命令操作
ftp.cwd(pathname)#设置FTP当前操作的路径
ftp.dir()#显示目录下所有目录信息
ftp.nlst()#获取目录下的文件
ftp.mkd(pathname)#新建远程目录
ftp.pwd()#返回当前所在位置
ftp.rmd(dirname)#删除远程目录
ftp.delete(filename)#删除远程文件
ftp.rename(fromname,toname)#将fromname修改名称为toname。
ftp.storbinaly("STORfilename.txt",file_handel,bufsize)#上传目标文件
ftp.retrbinary("RETRfilename.txt",bufsize)#下载FTP文件


登陆ftp查看文件

#!/usr/bin/envpython
#_*_coding:utf8_*_
importftplib
#fromftplibimportFTP
ftp=ftplib.FTP("123.56.1.1")
ftp.login("user","passwd")
data=[]
ftp.cwd("hxy/tmp")
ftp.dir(data.append)
ftp.quit()
forlineindata:
print(line)

上传下载文件

#coding:utf-8
fromftplibimportFTP
importtime
importtarfile
#!/usr/bin/python
#-*-coding:utf-8-*-

fromftplibimportFTP

defftpconnect(host,username,password):
ftp=FTP()
#ftp.set_debuglevel(2)#打开调试级别2,显示详细信息
ftp.connect(host,21)#连接
ftp.login(username,password)#登录,如果匿名登录则用空串代替即可
returnftp

defdownloadfile(ftp,remotepath,localpath):
bufsize=1024#设置缓冲块大小
fp=open(localpath,'wb')#以写模式在本地打开文件
ftp.retrbinary('RETR'+remotepath,fp.write,bufsize)#接收服务器上文件并写入本地文件
ftp.set_debuglevel(0)#关闭调试
fp.close()#关闭文件

defuploadfile(ftp,localpath):
bufsize=1024
fp=open(localpath,'rb')
ftp.storbinary('STOR'+remotepath,fp,bufsize)#上传文件
ftp.set_debuglevel(0)
fp.close()

if__name__=="__main__":
ftp=ftpconnect("******","***","***")
downloadfile(ftp,"***")
uploadfile(ftp,"***")

ftp.quit()

本文参考:

http://www.cnblogs.com/kaituorensheng/p/4480512.html

http://www.jb51.net/article/34361.htm

http://www.jb51.cc/article/p-xpjhzrdx-um.html

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...