现在已经有很多工具如 Xshell 里带的xftp 、filezilla 等工具可以上传文件到Linux系统服务器,linux 自带的 rz 都能把本地电脑文件上传到Linux系统服务器
玩下,利用python 编写脚本ftp脚本把一些文件上传上去
#!/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()
重要的在后半部分的代码,对文件的处理