#!/usr/bin/python
# -*- coding:utf-8 -*-
#ftp.py
# [email protected]
#this script is used to do some operations more convenient via ftp
#1.[p]upload many files in the same time,show md5s
#2.[g]download many files in the same time,show md5s
#3.[l]list all the files on ftp site
#4.[f]search a file on ftp site,return True or Flase
#5.[h]show help info
#add upload and download operations 20111210 version0.1
#add md5sum after ops 20120308 version0.2
import sys,os,ftplib,socket
CONST_HOST = "ip"
CONST_USERNAME = "username"
CONST_PWD = "pwd"
CONST_BUFFER_SIZE = 8192
COLOR_NONE = "33[m"
COLOR_GREEN = "33[01;32m"
COLOR_RED = "33[01;31m"
COLOR_YELLOW = "33[01;33m"
def connect():
try:
ftp = ftplib.FTP(CONST_HOST)
ftp.login(CONST_USERNAME,CONST_PWD)
return ftp
except socket.error,socket.gaierror:
print("FTP is unavailable,please check the host,username and password!")
sys.exit(0)
def disconnect(ftp):
ftp.quit()
def upload(ftp, filepath):
f = open(filepath, "rb")
file_name = os.path.split(filepath)[-1]
try:
ftp.storbinary('STOR %s'%file_name, f, CONST_BUFFER_SIZE)
except ftplib.error_perm:
return False
return True
def download(ftp, filename):
f = open(filename,"wb").write
try:
ftp.retrbinary("RETR %s"%filename, f, CONST_BUFFER_SIZE)
except ftplib.error_perm:
return False
return True
def list(ftp):
ftp.dir()
def find(ftp,filename):
ftp_f_list = ftp.nlst()
if filename in ftp_f_list:
return True
else:
return False
def help():
print("help info:")
print("[./ftp.py l]t show the file list of the ftp site ")
print("[./ftp.py f filenamA filenameB]t check if the file is in the ftp site")
print("[./ftp.py p filenameA filenameB]t upload file into ftp site")
print("[./ftp.py g filenameA filenameB]t get file from ftp site")
print("[./ftp.py h]t show help info")
print("other params are invalid")
def main():
args = sys.argv[1:]
if len(args) == 0:
print("Params needed!")
sys.exit(0)
ftp = connect()
success_list = []
failed_list = []
if args[0] == "p":
f_list = args[1:]
for up_file in f_list:
if not os.path.exists(up_file):
print(("UPLOAD: %s " COLOR_RED "FAILED" COLOR_NONE " :file not exist")%up_file)
continue
elif not os.path.isfile(up_file):
print(("UPLOAD: %s " COLOR_RED "FAILED" COLOR_NONE " :%s is not a file")%(up_file,up_file))
continue
if upload(ftp, up_file):
success_list.append(up_file)
else:
failed_list.append(up_file)
if len(success_list)