【NetDevops】网络自动化运维--1获取用户基本信息
一、我们创建名为NetDevOps的Django工程
二、修改settings文件(连接数据库)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'netdevops',
'USER': 'forgeek',
'PASSWORD': 'xxxxxx',
'HOST': '172.16.127.128',
'PORT': '',
'OPTIONS': {},
'init_command': 'SET storage_engine=INNODB,'
'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";',
}
}
三、简单介绍一下本功能模型原理
四、开始撸代码:
- Mysql配置
# 创建mysql帐号(这里的帐号信息要与settings配置文件中连接数据库的配置信息保持一致)mysql> alter user 'forgeek'@'%' identified with mysql_native_password by 'xxxx';# 设置forgeek帐号密码永不过期
mysql> alter user 'forgeek'@'%' identified by 'xxxx' password expire never;# 授权(这里由于测试环境我这边分配权限比较大,大家可以根据自己情况设置)grant all privileges on *.* to 'forgeek'@'%';# 刷新权限mysql> flush privileges;
# 验证用户的创建是否成功
mysql> select host,user,authentication_string from mysql.user;# 创建名为netdevops的数据库mysql> create database netdevops;
- models模型类
定义简介:
- 每个模型都是一个python类,它是django.db.models.Model的子类
- 模型的每个属性都代表一个数据库字段
- 综上所述,Django为您提供了一个自动生成的数据库访问API,详细见官方文档。
model与数据库结构对应关系图如下:
这个小功能中我们需要建立两张表,一个保存用户信息另一个保存浏览器信息。考虑到一个用户可能会有多个浏览器,因此需要建立一个一对多的关系。我这里直接贴源码好了,有不懂的直接留言好了。
# coding=utf-8
from django.db import models class UserIpInfo(models.Model):
ip = models.CharField(max_length=40, default='', verbose_name=u'IP地址', null=True)
time = models.DateTimeField(verbose_name=u'更新时间', auto_now=True) class Meta:
verbose_name = u"用户访问IP地址表"
verbose_name_plural = verbose_name
db_table = "useripinfo" class BrowseInfo(models.Model):
useragent = models.CharField(max_length=200, default='', verbose_name=u'用户浏览器信息', null=True)
models.CharField(max_length=256, verbose_name=u'设备唯一ID', default='')
user_ip = models.ForeignKey("UserIpInfo", on_delete=models.CASCADE) class Meta:
verbose_name = u"用户浏览器信息表"
verbose_name_plural = verbose_name
db_table = "browseinfo"
- views视图
# from django.shortcuts import render
from django.http import HttpResponse
from .models import *
import json def user_ip_info(request):
# print('-----------------test/n', request.META)
ip_addr = request.META['REMOTE_ADDR']
user_ua = request.META['HTTP_USER_AGENT']
print(len(user_ua)) user_obj = UserIpInfo.objects.filter(ip=ip_addr)
if not user_obj:
res = UserIpInfo.objects.create(ip=ip_addr)
ip_addr_id = res.id
else:
ip_addr_id = user_obj[0].id BrowseInfo.objects.create(useragent=user_ua, user_ip=UserIpInfo.objects.get(id=ip_addr_id)) result = {
"状态": "Success!",
"信息": "User info",
"IP": ip_addr,
"浏览器": user_ua
} return HttpResponse(json.dumps(result), content_type="application/json", charset="utf-8") def user_infos(request):
ip_list = UserIpInfo.objects.all()
infos = {}
for item in ip_list:
infos[item.ip] = [b_obj.useragent for b_obj in BrowseInfo.objects.filter(user_ip_id=item.id)] result = {"状态": "Success!", "信息": infos} return HttpResponse(json.dumps(result), content_type="application/json", charset="utf-8")
- urls路由转发
----------------该段落引用官方文档-------------------
(https://docs.djangoproject.com/zh-hans/2.2/topics/http/urls/)
from django.urls import path
from . import views urlpatterns = [
path('send/', views.user_ip_info),
path('get/', views.user_infos), ]
2、User 应用中urls.py:
from django.urls import path
from . import views urlpatterns = [
path('send/', views.user_ip_info),
path('get/', views.user_infos), ]
【NetDevops】网络自动化运维--1获取用户基本信息的更多相关文章
- python网络自动化运维之环境搭建(EVE-NG+pycharm)
参考了很多资料,发现现在很多环境用的都是GNS3加linux下的python,几乎没有是用EVE-NG加上pycharm的教程,EVE的功能如此强大,存在的教程却较少,这里我出一篇教程供使用EVE作为 ...
- python网络自动化运维之telnetlib实验(EVE-NG+pycharm)
运行环境: 物理机:win10 1903 网络设备:EVE-NG模拟器上运行思科三层路由器 网络设备OS版本:cisco ios(versions 15.6) python环境:pycharm 3.3 ...
- python网络自动化运维paramiko实验
运行环境: 物理机:win10 1903 网络设备:EVE-NG模拟器上运行思科三层路由器 网络设备OS版本:cisco ios(versions 15.6) python环境:pycharm 3.5 ...
- Ansible_自动化运维《Ansible之初识-1》
1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
- 自动化运维工具——ansible详解(一)
ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统 ...
- 企业级自动化运维工具应用实战-ansible
背景 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测试,运 ...
- 项目实战10.1—企业级自动化运维工具应用实战-ansible
实战环境: 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测 ...
- ansible自动化运维
ansible 系统架构 ansible简介 ansible是新出现的自动化运维工具,ansible是一个配置管理和应用部署工具,基于Python开发,集合了众多运维工具(puppet.cfengin ...
- 自动化运维工具——ansile详解
自动化运维工具——ansible详解(一) 目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ...
随机推荐
- redis slot 槽点
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求 ...
- 使用MySQL审计Plugin
本文来源:http://blog.chinaunix.net/uid-20785090-id-5018977.html 越来越多的企业把应用往mysql上迁移,这时候对数据库的审计又成了一件紧急的事情 ...
- Rocketmq 集群部署
10.1.0.178 配置文件 broker-a-m.properties brokerClusterName=PaymentClusterbrokerName=broker-anamesrvAddr ...
- MacOS下安装unicorn这个库失败
因为在Mac下安装pwntools,发现安装unicorn库的时候失败了,编译报错如下 make: *** [qemu/config-host.h-timestamp] Error 1 error: ...
- 关于zsh在使用scp时报错zsh: no matches found: scp
root@banxia:scp root@172.16.13.150:/123/* . zsh: no matches found: root@172.16.13.150:/123/* root@ba ...
- FreeRTOS任务基础概念
RTOS系统的核心就是任务管理: 任务的特性 在RTOS中每个任务都有自己的运行环境,不依赖于系统中其他的任务或者调度器,任何一个时间点只能有一个任务运行,具体运行哪个任务是由任务调度器来决定的,而任 ...
- elk架构
(1)Kafka:接收用户日志的消息队列.(2)Logstash:做日志解析,统一成JSON输出给Elasticsearch.(3)Elasticsearch:实时日志分析服务的核心技术,一个sche ...
- js 获取扫码枪信息
---- js 获取扫码枪不需要记录 lastCode 啊,只需要在时间超出范围的时候重置 lastTime 和 code 就行了.如果 码枪会输入回车,那就在 keyCode === 13 的时候使 ...
- 前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法
闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机 ...
- 「数据结构与算法(Python)」(一)
算法的提出 算法的概念 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务.一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写 ...