【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 任务执行模式 ...
随机推荐
- js 实现复制功能的四种方式的优劣对比
今日网上浏览别人项目,看到有人用了document.execCommand这个属性,于是想起之前我选用Clipboard.js 来实现.对于这种不常用的属性还是不太放心,于是随手查了下关于复制的资料, ...
- 【Hibernate】入门
一.Hibernate框架的概述 1.1 什么是Hibernate 1.2 Hibernate优点 二.Hibernate的日志记录 三.Hibernate 入门程序 3.1 引入依赖(5.x版本) ...
- 如何使用Metasploit进行汽车安全性测试
前言 针对汽车的攻击和入侵是当前最前沿的领域和最热门的话题之一.随着自动驾驶汽车技术的发展,在未来这个领域将变得更加重要.作为汽车黑客快速发展的一部分,我最喜欢的黑客工具之一Metasploit也开发 ...
- django中解决跨域问题
-跨域问题 -浏览器的:同源策略,浏览器拒绝不是当前域域返回的数据 -ip地址和端口号都相同才是同一个域 -如何解决: -CORS:跨域资源共享 -简单请求:发一次请求 -非简单请求:非简单请求是发送 ...
- C# Winfrom DataGridView DataSource绑定数据源后--解决排序问题
帮助类: public class SortBindingHelper<T> : BindingList<T> { private bool isSortedCore = tr ...
- 服务器IP与个人IP的特点
服务器IP:系统类型.开放的端口及运行的服务.C段同类机器数量.是否机房.IDC服务商 个人IP:系统类型.开放的端口及运行的服务……
- 【NOIP/CSP2019】D2T1 Emiya 家今天的饭
这个D2T1有点难度啊 原题: 花了我一下午的时间,作为D2T1的确反常 条件很奇怪,感觉不太直观,于是看数据范围先写了个暴力 写暴力的时候我就注意到了之前没有仔细想过的点,烹饪方式必须不同 虽然a很 ...
- pandas之dataframe踩坑指南(一)---apply(func)
import pandas as pd data = pd.read_csv(r"test数据.csv", engine="python", encoding= ...
- 【题解】P3069 [USACO13JAN]牛的阵容Cow Lineup-C++
题目传送门 思路这道题目可以通过尺取法来完成 (我才不管什么必须用队列)什么是尺取法呢?顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后 ...
- junit3和junit4的使用区别如下
junit3和junit4的使用区别如下1.在JUnit3中需要继承TestCase类,但在JUnit4中已经不需要继承TestCase2.在JUnit3中需要覆盖TestCase中的setUp和te ...