ftp批量上传、删除、检查~~~

  1 import os
  2 import sys
  3 import xlrd
  4 import subprocess
  5 from ftplib import FTP
  6 from tqdm import tqdm
  7 
  8 if not os.path.exists(os.getcwd()+"\\麦田网络运维信息档案.xls"):
  9     print('程序所在目录必须放个"麦田网络运维信息档案.xls"')
 10     input()
 11     sys.exit()
 12 excel = xlrd.open_workbook('麦田网络运维信息档案.xls')
 13 table = excel.sheets()[0]
 14 ip_dic = {}
 15 for i in range(table.nrows):
 16     tmp = []
 17     tmp.append(table.cell(i, 1).value.strip())
 18     if len(table.cell(i, 3).value.strip().split('.')) == 4:
 19         ip = table.cell(i, 3).value.strip()
 20         ip = ip.split('.')
 21         ip = ip[0:3]
 22         ip.append('252')
 23         ip = '.'.join(ip)
 24         tmp.append(ip)
 25         ip_dic[i] = tmp
 26     else:
 27         continue
 28 
 29 
 30 def ping(ip):
 31     ret = subprocess.getoutput('ping -n 2 -l 0 -w 1000 {}'.format(ip))
 32     return 'ms' in ret
 33 
 34 def ftpconnect(host, username, password):
 35     ftp = FTP()
 36     ftp.encoding = 'GB18030'
 37     ftp.connect(host, 21)
 38     ftp.login(username, password)
 39     file_list = []
 40     ftp.dir("", file_list.append)
 41     filename = '\n'.join(file_list)
 42     if '共享文件夹' in filename:
 43         ftp.cwd('/共享文件夹')
 44     elif '店内共享' in filename:
 45         ftp.cwd('/店内共享')
 46     else:
 47         raise RuntimeError('directory error')
 48     return ftp
 49 
 50 
 51 def uploadfile(ftp, remotepath, localpath):
 52     bufsize = 1024
 53     fp = open(localpath, 'rb')
 54     ftp.storbinary('STOR '+remotepath, fp, bufsize)
 55     ftp.set_debuglevel(2)
 56 
 57     fp.close()
 58 
 59 
 60 def up_start(ip, filename):
 61     ftp = ftpconnect(ip, "admin", "admin")
 62     file_list = []
 63     ftp.dir("", file_list.append)
 64     ll = '\n'.join(file_list)
 65     print(ll)
 66     if ' '+filename in ll:
 67         ftp.delete(filename)
 68     uploadfile(ftp, "./" + filename, os.getcwd()+"\\"+filename)
 69     ftp.close()
 70 
 71 
 72 def check_start(ip, filename):
 73     ftp = ftpconnect(ip, "admin", "admin")
 74     file_list = []
 75     ftp.dir("", file_list.append)
 76     ll = '\n'.join(file_list)
 77     print(ll)
 78     if ' '+filename in ll:
 79         ftp.close()
 80         return True
 81     ftp.close()
 82     return False
 83 
 84 
 85 def delete_start(ip, filename):
 86     ftp = ftpconnect(ip, "admin", "admin")
 87     file_list = []
 88     ftp.dir("", file_list.append)
 89     ll = '\n'.join(file_list)
 90     if ' '+filename in ll:
 91         ftp.delete(filename)
 92         ftp.close()
 93         return True
 94     ftp.close()
 95     return False
 96 
 97 
 98 def upload(flnm):
 99     error = []
100     pass_list = []
101     for i in tqdm(ip_dic):
102         if not ping(ip_dic[i][1]):
103             error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
104             os.system('cls')
105             print('\n上传成功:' + ' '.join(pass_list))
106             print('\n上传失败:' + ' '.join(error) + '\n')
107             if not i+1 > len(ip_dic):
108                 print('上传中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
109             continue
110         try:
111             up_start(ip_dic[i][1], flnm)
112         except  Exception:
113             error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
114             os.system('cls')
115             print('\n上传成功:' + ' '.join(pass_list))
116             print('\n上传失败:' + ' '.join(error) + '\n')
117             if not i+1 > len(ip_dic):
118                 print('上传中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
119             continue
120         pass_list.append(ip_dic[i][0])
121         os.system('cls')
122         print('\n上传成功:' + ' '.join(pass_list))
123         print('\n上传失败:' + ' '.join(error) + '\n')
124         if not i + 1 > len(ip_dic):
125             print('上传中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
126 
127 
128 def check(flnm):
129     error = []
130     pass_list = []
131     for i in tqdm(ip_dic):
132         if not ping(ip_dic[i][1]):
133             error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
134             os.system('cls')
135             print('\n文件存在:' + ' '.join(pass_list))
136             print('\n文件不存在:' + ' '.join(error) + '\n')
137             if not i+1 > len(ip_dic):
138                 print('检查中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
139             continue
140         try:
141             if check_start(ip_dic[i][1], flnm):
142                 pass_list.append(ip_dic[i][0])
143             else:
144                 error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
145         except  Exception:
146             error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
147             os.system('cls')
148             print('\n文件存在:' + ' '.join(pass_list))
149             print('\n文件不存在:' + ' '.join(error) + '\n')
150             if not i+1 > len(ip_dic):
151                 print('检查中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
152             continue
153         os.system('cls')
154         print('\n文件存在:' + ' '.join(pass_list))
155         print('\n文件不存在:' + ' '.join(error) + '\n')
156         if not i + 1 > len(ip_dic):
157             print('检查中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
158 
159 
160 def delete(flnm):
161     error = []
162     pass_list = []
163     for i in tqdm(ip_dic):
164         if not ping(ip_dic[i][1]):
165             error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
166             os.system('cls')
167             print('\n删除成功:' + ' '.join(pass_list))
168             print('\n删除失败:' + ' '.join(error) + '\n')
169             if not i+1 > len(ip_dic):
170                 print('删除中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
171             continue
172         try:
173             if delete_start(ip_dic[i][1], flnm):
174                 pass_list.append(ip_dic[i][0])
175             else:
176                 error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
177         except  Exception:
178             error.append(ip_dic[i][0] + '(' + ip_dic[i][1] + ')')
179             os.system('cls')
180             print('\n删除成功:' + ' '.join(pass_list))
181             print('\n删除失败:' + ' '.join(error) + '\n')
182             if not i+1 > len(ip_dic):
183                 print('删除中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
184             continue
185         os.system('cls')
186         print('\n删除成功:' + ' '.join(pass_list))
187         print('\n删除失败:' + ' '.join(error) + '\n')
188         if not i + 1 > len(ip_dic):
189             print('删除中:' + ip_dic[i + 1][0] + '(' + ip_dic[i + 1][1] + ')')
190 
191 
192 note ='''上传文件到所有店共享根目录输入:upload 程序同级目录中要上传的文件名
193 在所有店共享根目录删除文件输入:delete 要删除的文件名
194 在所有店共享根目录中检查是否存在某文件名的文件输入:check 要检查是否存在的文件名
195 !!!文件名中不要包含空格!!!\n'''
196 print(note)
197 while True:
198     command = input('bobo>')
199     if command.strip() == '':
200             continue
201     if command.strip() == 'help' or command.strip() == '?':
202         print(note)
203         continue
204     if len(command.split()) == 2:
205         print(command.strip().split()[0])
206         if command.strip().split()[0] == "upload" and not os.path.exists(os.getcwd()+"\\"+command.strip().split()[1]):
207             print('没这文件啊~~~')
208             continue
209         if command.strip().split()[0] == "upload" and os.path.exists(os.getcwd()+"\\"+command.strip().split()[1]):
210             upload(command.strip().split()[1])
211             continue
212         if command.strip().split()[0] == "check":
213             print(command.strip().split()[1])
214             check(command.strip().split()[1])
215             continue
216         if command.strip().split()[0] == "delete":
217             delete(command.strip().split()[1])
218             continue
219     print('输的都不对(lll¬ω¬)')

猜你喜欢

转载自www.cnblogs.com/cmbobo/p/11370725.html