【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 任务执行模式 ...
随机推荐
- oracle通过一个字段分组,取另一个字段的最大值
select * from bdcdj.lqentry1 a where 顺序号 in (select max(顺序号) from bdcdj.lqentry1 b WHERE b.archival ...
- 网络编程基础之TCP编程学习(一)
网络编程基础了解 socket套接字 socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,他给应用程序提供了使用如TCP/UDP等网络通讯的手段. linux中的网络编程通过socke ...
- 《浏览器工作原理与实践》<09>块级作用域:var缺陷以及为什么要引入let和const?
在前面我们已经讲解了 JavaScript 中变量提升的相关内容,正是由于 JavaScript 存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是 JavaScript 的一个重要设计缺陷 ...
- rsync 应用总结
rysnc server端 1.vim /etcrsyncd.conf (用户rsync,目录,模块,非系统虚拟用户及密码文件) 2.创建共享目录 /data/www/{www,bbs,blog} 3 ...
- PaaS容器集群优化之路
1. 性能优化面对的挑战 以下是整个PaaS平台的架构 其中主要包括这些子系统: 微服务治理框架:为应用提供自动注册.发现.治理.隔离.调用分析等一系列分布式/微服务治理能力,屏蔽分布式系统的复杂度. ...
- python 学习笔记_3 输入字母,打印出要输入的星期几; 首字母无效,则继续输入,最多2次即可判断结果;否则退出。
#coding=gbk ''' 输入字母,打印出要输入的星期几: 首字母无效,则继续输入,最多2次即可判断结果:否则退出. ''' week_list=['monday','tuesday','wed ...
- Java与CC++交互JNI编程
哈哈,经过了前面几个超级枯燥的C.C++两语言的基础巩固之后,终于来了到JNI程序的编写了,还是挺不容易的,所以还得再接再厉,戒骄戒躁,继续前行!! 第一个JNI程序: JNI是一种本地编程接口.它允 ...
- matlab安装MinG-w64 C/C++编译器
matlab 2018b之编译器的安装 安装MinGW C/C++ 编译器
- 现代浏览器性能优化-CSS篇
我来填坑了,CSS篇终于写出来了,如果你没看过前面的JS篇,可以在这里观看. 众所周知,CSS的加载会阻塞浏览器渲染或是引起浏览器重绘,目前业界普遍推荐把CSS放到<head>中,防止在C ...
- C#串口图片传输以及对串口缓冲区的简单理解
第一次接触串口,写点东西加深自己对串口的印象: 通过参考一些网上的实例,我明白了串口怎么简单的进行通信交流,但是我所需要的还是图片等大文件在串口中的传输,串口传输是通过二进制位进行单位传输的,所以传输 ...