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¬ω¬)')
ftp批量上传、删除、检查~~~
猜你喜欢
转载自www.cnblogs.com/cmbobo/p/11370725.html
今日推荐
周排行