天天看點

項目實戰:psutil結合Django實作伺服器主機監控(三)3.基于psutil子產品監控使用者登入監控

3.基于psutil子產品監控使用者登入監控

需求:使用者通路http://ip/users/,傳回目前登入使用者的詳細資訊

詳情如下表:

項目實戰:psutil結合Django實作伺服器主機監控(三)3.基于psutil子產品監控使用者登入監控

1)配置host/urls.py

urlpatterns = [
    # 子路由配置,有對應的視圖函數.
    path('', views.index, name='index'),
    path('disk/', views.disk, name='disk'),
    # 快速拷貝一行ctrl + d
+    path('users/', views.users, name='users'),
] 
           

2)配置 host/views.py

#添加users函數
def users(requests):
    all_users = []
    # [suser(name='Fan', terminal=None, host=None, started=1595661568.4721968, pid=None)]
    users = psutil.users()  ##擷取所有使用者資訊
    for user in users:
        one_user = {
            'name':user.name,  ##使用者名
            'host':user.host,  ##使用者主機
            'started': datetime.fromtimestamp(user.started) ##使用者登陸時間
        }
        all_users.append(one_user)  ##one_user對象添加到all_users
    # 傳回html頁面資訊
    return  render(requests, 'host/users.html', {'users':all_users})
           

3)templates/host/users.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登入使用者監控資訊</title>
    {#  導入Bootstrap幫我們設定好的CSS樣式和JS的動效   #}
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
{% include 'host/nav.html' %}
{# Django模闆中好用的功能: 過濾器  users|length 擷取該清單的長度#}
<h1>登入使用者資訊監控-登入的使用者數量: {{ users | length }}</h1>
{#設定table标簽的類名稱為table和table-striped,其實就是使用Bootstrap幫我們寫好的CSS樣式設定表格樣式#}
<table class="table table-striped table-hover">
    <tr>
        <td>登入的使用者名</td>
        <td>登入的主機</td>
        <td>登入的時間</td>
    </tr>

    {% for user in users %}
        <tr>
            <td>{{ user.name }}</td>
            <td>{{ user.host }}</td>
            <td>{{ user.started  | date}}</td>
        </tr>
    {% endfor %}


</table>

</body>
</html> 
           

4)templates/host/nav.htm

注意到{#編寫代碼發現html代碼重複較多,就可以抽象出來, 存儲到一個檔案中#}

{#其他檔案希望使用, {% include ‘host/nav.html’ %} 導入即可 #}

<nav class="navbar navbar-inverse" role="navigation">
    <div class="container-fluid">
        <div class="navbar-header">
            {#     超連結       #}
            <a class="navbar-brand" href="/">Sysinfo</a>
        </div>
        <div>
            <ul class="nav navbar-nav">
                <li><a href="/">主機資訊監控</a></li>
                <li><a href="/disk/">磁盤分區監控</a></li>
                <li><a href="/users/">登入使用者監控</a></li>
            </ul>
        </div>
    </div>
</nav> 
           

寫完的代碼上傳到遠端庫

git init
  git add *
  git commit -m "psutil結合Django項目第一次上傳"
  git remote add origin https://github.com/ninesunzhang/“git庫”
  git push origin master