[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得

 免責事項:この記事は従って、ブロガーオリジナル記事です。  CC BY-SA 4.0  再現著作権の契約を、元のソースのリンクと、この文を添付してください。 
クラウドホストのブログはまだ更新を期限切れ前に、私はそれを削除した[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得最も重要なことは、バックアップされません!言葉を省略。
       、NetDevopsを記録し、ネットワークの運用・保守やネットワークセキュリティの自動化プラットフォームと私の物語を共有するためにここに願っています:私のブログの最初からこの記事では、新しい分類を開きます。原則は以下のとおりです。複数行やブログの要約を通じて定期的にタイムコードを持っています[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得
本論文では、私はPythonの実装によってそう思い、この機能に従事し、基本的な情報(IPアドレス、クライアントangent及びその他の情報)を取得するために、ユーザが記録されます。ユーザーはいつでも、主に運用・保守プラットフォーム管理者、運用、保守担当者、普通のユーザーでありますユーザーがログインまたはアクセスプラットフォームとは、データベースに保存されたとき、私たちは、ユーザーの基本的な情報を記録しました。おそらく、我々は将来的には、自分のプラットフォームの監査機能を実行するために、これらのデータを使用します。
自宅に近い、この開発環境:Pythonの3.7.4、2.2.4ジャンゴは、MySQL 8.0.15、ドッカー18.09.2;コンパイラツールPycharm、Debianの4.19.0-kali5-amd64のための動作環境、VMware®のワークステーション15プロ
まず、我々はNetDevOpsと呼ばれるDjangoプロジェクトを作成します
ターミナルコマンドで作成されたPycharmによって作成することができ、もちろん私は、CLIインタフェースを作成するために使用されるコマンドを使用[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得コマンドを次のようになります。
  A. ジャンゴ-ADMIN startprojectのNetDevops        #プロジェクトの作成
   B。Pythonはユーザーstartappのmanage.pyの        #は(プロジェクトディレクトリに切り替えることにする)APPを作成します
 
第二に、設定ファイル(データベース接続)を変更
。設定ファイルの設定は、関連するデータベースを参照してください、そしてsqllite3は、デフォルトのmysqlの接続を置き換える見つけます
1 DATABASES = {
 2  'のデフォルト' :{
 3  ' ENGINE '' django.db.backends.mysql ' 4  ' NAME '' netdevops ' 5  ' USER '' forgeek ' 6  ' PASSWORD '' XXXXXX ' 7 ' HOST '' 172.16.127。128 "  8  ' PORT '' 3306 ' 9  ' OPTIONS ' :{}、
 10  ' init_command '' SET storage_engine = INNODB、' 
11  'のSESSIONトランザクション分離レベルREAD COMMITTED、自動コミット= 1、名称"UTF8"。' 12  }
 13 }
コードの表示

 

B。初期化ファイルを変更します。
  python3のあるmysqlclientはピップから直接インストールすることはできませんので、我々は代わりにpymysqlを使用しています。我々はMySQLdbは()エンジンを変更したいピップによってpymysqlをインストールした後、我々は次のコードを追加し、プロジェクトディレクトリにinit.pyファイルを変更する必要があります。
  輸入pymysql
  pymysql.install_as_MySQLdb()
このモデルの第三に、簡単な機能原理
ブラウザからプラットフォームへのユーザーアクセスのアドレスを入力します---> URLのルーティング、転送--->インターフェースは情報を取得する--->ビューの表示--->データベース--->のHttpResponseにより、ブラウザビューに表示
 
第四に、スタートラインとコード:
  • MySQLの設定
#は、(一貫性のある設定ファイルのデータベース接続の設定を構成するには、このアカウント情報)MySQLアカウントを作成します。
MySQLは> 'XXXX' でmysql_native_passwordで識別ユーザーforgeek '@ '%' を改変すること。
#設定しforgeekアカウントのパスワード期限切れ
のmysql>ユーザーforgeek '@変える 「%」「XXXX」によって識別されるが、パスワード決して期限切れにしません。
#認証(ここでは、私は権限を割り当てるためのテスト環境が比較的大きいので、私たちは自分の状況に応じてすることができますここです)
。* *上のすべての権限を付与する 'forgeek' @ '%';
#更新許可
; MySQLの>フラッシュ権限
成功を作成するためにユーザを認証するために#
authentication_string MySQLの>を選択したホスト、ユーザーを mysql.userから。
#はnetdevopsという名前のデータベースを作成します。
MySQLの>データベースnetdevopsを作成します。
  • モデルのモデルクラス
      Djangoのモデルでは、我々が作成したこのアプリの存在models.pyファイルのユーザーが、あなたのデータのための情報のシングル、決定的なソースです。それはあなたの格納されたデータの重要な分野と動作が含まれています。典型的には、モデル(モデル)は、データベーステーブルにマッピングされます

定義されたプロファイル:

  • 每个模型都是一个python类,它是django.db.models.Model的子类
  • 模型的每个属性都代表一个数据库字段
  • 综上所述,Django为您提供了一个自动生成的数据库访问API,详细见官方文档

model与数据库结构对应关系图如下:

[NetDevops]オートメーション・ネットワークの運用・保守--1基本的なユーザー情報を取得

  这个小功能中我们需要建立两张表,一个保存用户信息另一个保存浏览器信息。考虑到一个用户可能会有多个浏览器,因此需要建立一个一对多的关系。我这里直接贴源码好了,有不懂的直接留言好了。

 1 # coding=utf-8
 2 from django.db import models
 3 
 4 
 5 class UserIpInfo(models.Model):
 6     ip = models.CharField(max_length=40, default='', verbose_name=u'IP地址', null=True)
 7     time = models.DateTimeField(verbose_name=u'更新时间', auto_now=True)
 8 
 9     class Meta:
10         verbose_name = u"用户访问IP地址表"
11         verbose_name_plural = verbose_name
12         db_table = "useripinfo"
13 
14 
15 class BrowseInfo(models.Model):
16     useragent = models.CharField(max_length=200, default='', verbose_name=u'用户浏览器信息', null=True)
17     models.CharField(max_length=256, verbose_name=u'设备唯一ID', default='')
18     user_ip = models.ForeignKey("UserIpInfo", on_delete=models.CASCADE)
19 
20     class Meta:
21         verbose_name = u"用户浏览器信息表"
22         verbose_name_plural = verbose_name
23         db_table = "browseinfo"
View Code

 

  • views视图
  Django 的视图层,主要是负责处理用户的请求并返回响应。视图函数只是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页的HTML内容,重定向,404错误,XML文档或图像或者其他什么。视图本身包含返回该响应所需的任意逻辑。只要在Python路径上,此代码就可以存在于您想要的任何地方。没有其他要求 - 没有“魔术”,可以这么说。为了将代码放在某处,惯例是将视图放在名为views.py的文件中,放在项目或应用程序目录中。
这里同样,我将整个源码贴出来。有问题就留言吧
 1 # from django.shortcuts import render
 2 from django.http import HttpResponse
 3 from .models import *
 4 import json
 5 
 6 
 7 def user_ip_info(request):
 8 # print('-----------------test/n', request.META)
 9 ip_addr = request.META['REMOTE_ADDR']
10 user_ua = request.META['HTTP_USER_AGENT']
11 print(len(user_ua))
12 
13 user_obj = UserIpInfo.objects.filter(ip=ip_addr)
14 if not user_obj:
15 res = UserIpInfo.objects.create(ip=ip_addr)
16 ip_addr_id = res.id
17 else:
18 ip_addr_id = user_obj[0].id
19 
20 BrowseInfo.objects.create(useragent=user_ua, user_ip=UserIpInfo.objects.get(id=ip_addr_id))
21 
22 result = {
23 "状态": "Success!",
24 "信息": "User info",
25 "IP": ip_addr,
26 "浏览器": user_ua
27 }
28 
29 return HttpResponse(json.dumps(result), content_type="application/json", charset="utf-8")
30 
31 
32 def user_infos(request):
33 ip_list = UserIpInfo.objects.all()
34 infos = {}
35 for item in ip_list:
36 infos[item.ip] = [b_obj.useragent for b_obj in BrowseInfo.objects.filter(user_ip_id=item.id)]
37 
38 result = {"状态": "Success!", "信息": infos}
39 
40 return HttpResponse(json.dumps(result), content_type="application/json", charset="utf-8")
View Code

 



  • urls路由转发
  对于高质量的Web 应用来说,使用简洁、优雅的URL 模式是一个非常值得重视的细节。Django 允许你自由地设计你的URL,不受框架束缚。
为了给一个应用设计URL,你需要创建一个Python 模块,通常被称为**URLconf**(URL configuration)。这个模块是纯粹的Python 代码,包含URL 模式(简单的正则表达式)到Python 函数(你的视图)的简单映射。映射可短可长,随便你。它可以引用其它的映射。而且,因为它是纯粹的Python 代码,它可以动态构造。
  Django 还提供根据当前语言翻译URL 的一种方法。更多信息参见 国际化文档

----------------该段落引用官方文档-------------------(https://docs.djangoproject.com/zh-hans/2.2/topics/http/urls/

 
我这里还是同样直接贴出源码,有问题留言即可。
 1 NetDevops项目中urls.py
1  から django.urlsはインポートパス
 2  からインポートビュー
 3  
4 urlpatterns = [
 5パス(' 送信/ ' 、views.user_ip_info)、
 6パス(' 取得/ ' 、views.user_infos)、
 7  
8 ]
コードの表示


2、ユーザアプリケーションurls.py:
1  から django.urlsはインポートパス
 2  からインポートビュー
 3  
4 urlpatterns = [
 5パス(' 送信/ ' 、views.user_ip_info)、
 6パス(' 取得/ ' 、views.user_infos)、
 7  
8 ]
コードの表示

 



  私はここにいるので、バックJSON形式を経由してブラウザに送られ、そうこれ以上の特別なHTMLファイル、その他の機能は、このプロジェクトの後半に再び完璧なテンプレートとして存在しています。
ここでは、この機能のディレクトリ構造は次のとおりです。
 
私たちは、ターミナルコマンドを開きます。
:1、移行ファイル生成  のpython3 manage.py makemigrationsを
2、移動:のpython3は、移行をmanage.pyの
3、オープンDjangは、デバッグ、Webサーバーが付属しています:のpython3はのrunserverをmanage.pyの0.0.0.0:80
 
最後のテストは、前提はあなたの接続が良好で、プロジェクト全体であることを確実にすることである、ブラウザを開くことです。
 
 
 
 
 
 

おすすめ

転載: www.cnblogs.com/4geek/p/11414020.html