def rsync_fortress(): command = 'ssh root@%s -o ConnectTimeout=5 "python /opt/cmdb-script/rsync_backup.py"' % ( configs.FORTRESS_HOST, ) try: status, output = commands.getstatusoutput(command) if status != 0: logger.error(output) return False, output logger.info(output) return True, output except Exception, e: logger.error(str(e)) return False, str(e)
def excute(self, **kwargs): ip = kwargs.get('ip', '') hostname = kwargs.get('hostname', '') if not ip or not hostname: return False, u'ip和hostname不能为空' command = 'ssh root@%s -o ConnectTimeout=2 "/usr/bin/python /opt/cmdb-script/change_hostname.py %s %s"' % ( configs.FORTRESS_HOST, hostname, ip) logger.info(command) try: status, output = commands.getstatusoutput(command) if status != 0: logger.error(output) return False, output logger.info(output) result_dict = json.loads(output) if result_dict['success']: msg = "change %s hostname to %s success" % (ip, hostname) logger.info(msg) else: msg = "change %s hostname to %s error: %s" % ( ip, hostname, result_dict['msg']) logger.info(msg) return True, output except Exception, e: logger.error(str(e)) return False, str(e)
def excute(self, **kwargs): username = kwargs.get('username', '') email = kwargs.get('email', '') users = User.objects.filter(username=username) if len(users) <= 0: return False, u'用户不存在' user = users[0] state, msg = FortressOps().addFortressUser(username, email) # 添加用户成功,则生成ssh免密密钥对 if state: create_ssh_key(email, user.id, username) logger.info("task:" + msg) # 同步堡垒机数据 rsync_fortress() return state, msg
def delUserKey(self, ip, role, username): command = 'ssh root@%s -o ConnectTimeout=2 "/usr/bin/python %s/auth.ssh_key.py del %s %s %s"' % ( configs.FORTRESS_HOST, configs.REMOTE_CMDB_DIR, ip, role, username) logger.info(command) try: status, output = commands.getstatusoutput(command) if status != 0: logger.error(output) return False, output logger.info(output) result_dict = json.loads(output)[0] if result_dict['success'] == "true": return True, result_dict['msg'] return False, result_dict['msg'] except Exception, e: logger.error("add user key:" + str(e)) return False, str(e)
def addFortressUser(self, username, email): m = md5() m.update(username + str(time.time())) password = m.hexdigest()[0:20] command = 'ssh root@%s -o ConnectTimeout=2 "/bin/sh %s/fortress/create.sh %s %s"' % ( configs.FORTRESS_HOST, configs.REMOTE_CMDB_DIR, username, password) logger.info(command) try: status, output = commands.getstatusoutput(command) if status != 0: logger.error(output) return False, output logger.info(output) content = u'已为你开通堡垒机账号<br/>用户名为:' + username + u'<br/>密码为:' + password + u"<br/>堡垒机使用方式见:http://wiki.mwbyd.cn/pages/viewpage.action?pageId=6334750<br/>" \ + u"如有疑问请联系陈绍东,邮箱:[email protected],手机号:15921777942" send_mail(u'堡垒机开通通知', '', configs.EMAIL_USER, [email], html_message=content) return True, output except Exception, e: logger.error(str(e)) return False, str(e)