def generate_userdata_base64(environment, build_user): script = '#!/bin/bash\n\n' for user, info in users.items(): if user != build_user: continue if environment not in info['environments']: continue script += 'useradd %s\n' % user script += 'echo "%s ALL = NOPASSWD: ALL" > /etc/sudoers.d/%s\n' % (user, user) script += 'chmod 440 /etc/sudoers.d/%s\n' % user script += 'mkdir /home/%s/.ssh\n' % user script += 'chown %s:%s /home/%s/.ssh\n' % (user, user, user) script += 'chmod 700 /home/%s/.ssh\n' % user script += 'touch /home/%s/.ssh/authorized_keys\n' % user for key in info['ssh_keys']: script += 'echo "%s" >> /home/%s/.ssh/authorized_keys\n' % (key, user) script += 'echo -e "Host github.com\\n\\tStrictHostKeyChecking no\\n" >> /home/%s/.ssh/config\n' % user script += 'echo -e "Host bitbucket.org\\n\\tStrictHostKeyChecking no\\n" >> /home/%s/.ssh/config\n' % user script += '' script += 'chown %s:%s /home/%s/.ssh/*\n' % (user, user, user) script += 'chmod 600 /home/%s/.ssh/*\n' % user script += 'yum update -y\n' script += 'resize2fs /dev/sda1\n' return base64.b64encode(script)
cj.load(ignore_discard=True, ignore_expires=True) except Exception: """create a cookie file""" cj.save(ignore_discard=True, ignore_expires=True) opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) login = lambda: login_emuch(opener, username, passwd, logger) enter = lambda: enter_emuch(opener, login, logger) creditd = lambda: (not enter()) or get_credit(opener, logger) cjsaved = lambda: cj.save(ignore_discard=True, ignore_expires=True) return [creditd, cjsaved] def debug_log(log, file=sys.stdout): msg = time.strftime('%Y-%m-%d,%H:%M:%S # ',time.localtime(time.time())) + log print(msg, file=file) if '__main__' == __name__: from config import users tasks = [] for k, v in users.items(): vv = mk_tasks(k, v, logger=debug_log) tasks.extend(vv) for t in tasks: t()
print('-' * 50) print(time.strftime('%y-%m-%d %H:%M:%S', time.localtime(time.time()))) print('当前处理账户名为:{}'.format(user)) driver = webdriver.Chrome() driver.get(url) get_mobile_code(driver, paras['mobile'], model, lb) find_and_fill(driver, '//*[@id="name"]', user) find_and_fill(driver, '//*[@id="identNo"]', paras['identNo']) find_and_fill(driver, '//*[@id="cardvalue0"]', paras['cardvalue0']) choose_bank(driver, paras['location']) handle_coindate(driver) phoneCaptchaNo = input('请输入手机验证码, 按回车键确认(如果还未收到短信,请等到短信之后再输入):\n') find_and_fill(driver, '//*[@id="phoneCaptchaNo"]', phoneCaptchaNo) find_and_click(driver, '//*[@id="infosubmit"]') time.sleep(2) # driver.close() if __name__ == '__main__': print('本工具仅作为技术交流之用,请勿滥用!') print('目前本软件仅能实现半自动化') print('目前版本的软件仅支持农行预约的省份') print("------读取自动识别验证码模型和标签------") model = load_model('ABC/CaptchaHandler/output/cnn.model') lb = pickle.loads( open('ABC/CaptchaHandler/output/cnn_lb.pickle', "rb").read()) url = input('输入本次预约界面的网址,按回车键确认:\n') # url = 'https://eapply.abchina.com/coin/coin/CoinRequest?issueid=I049&t=1576767405981' for user, paras in users.items(): auto_work(user, paras, model, lb, url)