python- FTP 实现上传文件到服务器

现在已经有很多工具如 Xshell 里带的xftp 、filezilla 等工具可以上传文件到Linux系统服务器,linux 自带的 rz 都能把本地电脑文件上传到Linux系统服务器

玩下,利用python 编写脚本ftp脚本把一些文件上传上去
python- FTP 实现上传文件到服务器_第1张图片
python- FTP 实现上传文件到服务器_第2张图片
python- FTP 实现上传文件到服务器_第3张图片
python- FTP 实现上传文件到服务器_第4张图片

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
'''
***** 将wappps.war包上传到所选择的测试环境对应的指定目录******
脚本用来在工作时从WINDOWS 上传要上传的wappps.war(想上传其他文件可以修改脚本)
可以快速的选择上传到那个环境(内蒙、湖北、广西、山东、广东),将版本上传到
指定的目录Dir_rute(根据需求可以改),这样就可以衔接各环境/bin/workgroup
存放的shell脚本version_upgrade.sh(版本自动化部署升级)
*****备注:此脚本需要将要上传的wappps.war放在同一目录下*******
'''
import ftplib
import re
import os
import sys
import socket 

#IP='10.12.3.207'
#USER_NAME='ppsnm'
#Psswd='ppsnm'
#Dir_rute='/opt/aspire/product/ppsnm/7.1.1-jboss/bin/workgroup/version_store'

IP=['10.12.3.207']
USER_NAME=['ppsnm','ppshb','ppsgx','ppsd','ppsgd']
Passwd=['ppsnm','ppshb','ppsgx','ppsd','ppsgd']
bufsize=1024    #设置缓冲块大小 
def ftp_put_file():    
    for i,j in enumerate(IP):
    print i,j
#print i 
aa=raw_input("请输入你想要获取的IP对应的数字号码")
#print aa
#print type(aa)
if aa.isdigit():
    aa=int(aa)
    if aa>i:
        print "你输入的数字超出范围"
    else:
        ip=IP[aa]
        print "你选择的IP地址是:---->",ip
else:
    print"你输入的不符合规则,请从新输入数字"    
for i,j in enumerate(USER_NAME):
    print i,j
#print i
bb=raw_input("请输入你想要获取的用户名USER_NAME对应的数字")
if bb.isdigit():
    bb=int(bb)
    if bb>i:
        print "你输入的数字超出范围"
    else:
        user_name=USER_NAME[bb]
        print "你选择的用户是:---->",user_name
else:
    print"你输入的不符合规则,请从新输入数字"    

for i,j in enumerate(Passwd):
    print i,j
cc=raw_input("请输入你想要获取的密码Passwd对应的数字")
if cc.isdigit():
    cc=int(cc)
    if cc>i:
        print "你输入的数字超出范围"
    else:
        passwd=Passwd[cc]
        print "你选择的用户密码是:--->" ,passwd
else:
    print"你输入的不符合规则,请从新输入数字"  
    
Dir_rute='/opt/aspire/product/'+user_name+'/7.1.1-jboss/bin/workgroup/version_store' #定义要上传到服务器上的路径目录(刚好这个路径用户名和服务器登入用户名一致)

try:  
    f = ftplib.FTP(ip)    ####连接ftp服务器
except (socket.error, socket.gaierror):  
    print 'ERROR:cannot reach " %s"' % ip  
    return  
print '***Connected to host "%s"' % ip  
try:  
    f.login(user_name,passwd)  ###登录ftp服务器
except ftplib.error_perm:  
    print 'ERROR: cannot login "%s"' %user_name
    f.quit()  
    return  
print '*** Logged in as "%s"'%user_name
try:  
    f.cwd(Dir_rute)  
except ftplib.error_perm:  
    print 'ERRORL cannot CD to "%s"' % Dir_rute  
    f.quit()  
    return  
print '*** Changed to "%s" folder' % Dir_rute  
try:  
    filename='wappps.war'  #需要上传的文件
    file_handle=open(filename,'rb')  ##以写模式在本地打开文件
    f.storbinary('STOR %s' %os.path.basename(filename),file_handle,bufsize)  #传一个回调函数给storbinary() 它在每接收一个二进制数据时都会被调用  
except ftplib.error_perm:  
    print 'ERROR: cannot read file "%s"' % filename  
    os.unlink(FILE)  
else:  
    print '*** ftp up "%s" to CWD ok' % filename  
f.quit()  
return  
if __name__ == '__main__':
ftp_put_file() 

重要的在后半部分的代码,对文件的处理

你可能感兴趣的:(Python)