Ejemplo n.º 1
0
def equip_api(request):  #下面客户传来的数据接收并存库
    result = {"statue": "error", "data": ""}
    if request.method == "POST":
        requestData = request.POST
        hostname = requestData.get("hostname")
        mac = requestData.get("mac")
        ip = request.META["REMOTE_ADDR"]
        system_type = requestData.get("version")
        memory = requestData.get("memory")
        disk = requestData.get("disk")
        cpu_count = requestData.get("cpu_count")
        system_version = requestData.get("system")
        try:
            eq = Equipment()
            eq.hostname = hostname
            eq.mac = mac
            eq.ip = ip
            eq.sys_type = system_type
            eq.memory = memory
            eq.disk = disk
            eq.cpu_count = cpu_count
            eq.sys_version = system_version
            eq.save()
        except Exception as e:
            result["data"] = str(e)
        else:
            result["statue"] = "success"
            result["data"] = "your data is saved"
    else:
        result["data"] = "request must be post"
    return JsonResponse(result)
Ejemplo n.º 2
0
def add_eq(request):
    for i in range(100):
        e = Equipment()
        e.hostname = "localhost_%s" % i
        e.IP = "192.168.1.%s" % (i + 2)
        e.System = random.choice([
            "win7_32",
            "win7_64",
            "centos.6_32",
            "centos.7",
        ])
        e.Statue = random.choice(["True", "False"])
        e.Mac = random.choice(["00:0c:29:92:85:4e", "00:0c:29:5b:2a:a1"])
        e.user = "******"
        e.Password = "******"
        e.save()
    return JsonResponse({"statue": "ahh"})
Ejemplo n.º 3
0
def eq_add(request):
    result = {"state": "error", "data": ""}
    if request.method == "POST":
        data = request.POST
        ip = data.get("ip")
        port = data.get("port")
        user = data.get("username")
        password = data.get("password")
        if ip and port and user and password:
            eq = Equipment()
            eq.IP = ip
            eq.User = user
            eq.Password = password
            try:
                trans = paramiko.Transport(ip, port)
                trans.connect(username=user, password=password)
                sftp = paramiko.SFTPClient.from_transport(trans)
                ssh = paramiko.SSHClient()
                ssh._transport = trans
                stdin, stdout, stderr = ssh.exec_command("mkdir CMDBClient")
                sftp.put("sftpDir/getData.py", "/root/CMDBClient/getData.py")
                sftp.put("sftpDir/sendData.py", "/root/CMDBClient/sendData.py")
                sftp.put("sftpDir/main.py", "/root/CMDBClient/main.py")
                stdin, stdout, stderr = ssh.exec_command(
                    "python /root/CMDBClient/main.py")
                trans.close()
                result["state"] = "success"
                result["data"] = "操作成功!"
                eq.Statue = "True"
            except Exception as e:
                eq.Statue = "False"
                result["data"] = "远程连接错误:%s" % e
            finally:
                eq.save()
        else:
            result["data"] = "IP、port、user、password不能为空,请检查"
    else:
        result["data"] = "请求错误,请刷新重试"
    return JsonResponse(result)
Ejemplo n.º 4
0
def server_add(request):
    '''
    服务器添加方法,根据ip、port、username、password对服务器操作:远程登录、脚本上传、脚本远程执行
    :param request:
    :return:
    '''
    result = {'status':'error','data':''}
    if request.method == 'POST':
        ip = request.POST.get('ip')
        port = request.POST.get('port')
        username = request.POST.get('username')
        password = request.POST.get('password')
        print ip,port,username,password
        if ip and port and username and password:
            #save db
            equipment = Equipment()
            equipment.ip = ip
            equipment.port = port
            equipment.username = username
            equipment.password = password
            equipment.save()
            #连接远程虚拟机
            connect = connect_server(ip,port,username,password)
            if connect['status'] == 'success':
                trans = connect['data']
                # 用于文件上传和下载的sftp服务
                sftp = paramiko.SFTPClient.from_transport(trans)
                # 远程执行命令服务
                ssh = paramiko.SSHClient()
                ssh._transport = trans
                # 创建目录
                stdin,stdout,stderr = ssh.exec_command('mkdir CMDBClient')
                time.sleep(1)
                # 上传文件
                sftp.put('sftpDir/getData.py','CMDBClient/getData.py')
                sftp.put('sftpDir/sendData.py', 'CMDBClient/sendData.py')
                sftp.put('sftpDir/main.py', 'CMDBClient/main.py')
                # 调用脚本
                stdin,stdout,stderr = ssh.exec_command('python CMDBClient/main.py')
                trans.close()
                # 连接成功状态记录到数据库
                equipment = Equipment.objects.get(ip=ip)
                equipment.status = 'True'
                equipment.save()
            else:
                result['data'] = connect['data']
                # 连接失败状态记录到数据库
                equipment = Equipment.objects.get(ip = ip)
                equipment.status = 'False'
                equipment.save()
        else:
            result['data'] = 'ip and port and username and password not be null'
    else:
        result['data'] = 'your request must be post'
    return JsonResponse(result)