日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 監控服務器是否有人遠程登錄(詳細思路+代碼)

瀏覽:36日期:2022-07-01 18:04:29
起源

當同一個遠程服務器有多個人使用的時候,想知道服務器是否有人在用,我們不能直接的去登錄,因為這樣可能會把對方擠下來,這并不友好,所以這里提供一個監控遠程服務器是否有人連接的方式

思路

遇到這個問題,想著如何去解決

剛開始的時候,我是想通過一個主動的方式,去監控到服務器是否有人連接,就是說當我想要知道服務器是否有人連接,我通過一個運行一個腳本程序,然后返回給我一個結果,事實證明,我并沒有通過這樣的思路解決這個問題

后來想以一個被動的方式來監控,比如在服務器上裝載一個腳本,每5分鐘運行一次腳本,來確定服務器上是否有人連接,不過這也比較消耗資源,后來想到一個方式,就是監控服務器連接和斷開的行為,在每次服務器連接和斷開的時候,運行腳本來知道服務器是否有人連接

放個流程圖

python 監控服務器是否有人遠程登錄(詳細思路+代碼)

這里是一整套的監控流程圖,包括服務器監控和界面展示

實現

我們有了思路,接下來就是實現的問題

實現起來也比較簡單

但是我們需要解決幾個問題

如何知道服務器有沒有人連接? 如何監控遠程服務器的連接和斷開?cmd命令netstat監控3389端口

對于第一個問題,如何知道服務器有沒有人連接?

這里可以了解一下3389端口(遠程桌面的服務端口)和netstat 命令,在windons服務器中,一般是一個遠程連接的端口,就是說你可以監控這個端口,來知道服務器有沒有人遠程連接;而netstat (顯示協議統計和當前 TCP/IP 網絡連接)是一個cmd命令,我們可以通過它來監控端口情況

比如這里我們要監控3389端口

我們先連接遠程連接服務器,打開cmd命令窗口,輸入命令:netstat -n -p tcp | find ':3389'

我們就得到一個類似如這樣的結果

TCP 10.11.174.373:55311 16.21.315.55:3389 ESTABLISHED

這里有2個ip,一個10.11.174.373,這個是你本地的ip,一個16.21.315.55,這個就是你服務器的ip

但你在服務器上運行這個命令的時候,如果有遠程連接,那么就會得到這樣的一個結果(當然,你自己連接的也算),當沒有人連接的時候,就會得到一個空的,沒有任何連接情況

python腳本實現

這里的腳本,我們要實現3個功能:

獲取本地ip 獲取服務器連接狀態(ip) 相關數據存儲到數據庫

雖然我們使用netstat命令監控3389端口的時候有本地的ip,但是這只是有遠程連接的時候有ip信息,但是如果無人連接,那么就獲取不到,當然,你也可以自填本地ip,不過這樣并不是很好

獲取本地ip,這里我們是用python中的socket函數來實現

socket.getaddrinfo(socket.gethostname(),None)[-1][-1][0]

后面的服務器連接,上面有說

數據庫存儲,也就不多做說明了,直接上下代碼(這里數據庫,請自行建好)

#!/usr/bin/env python# -*- encoding: utf-8 -*-’’’@File : server_ip.py@Time : 2020/04/23 10:08:15@Author : 吉祥鳥@GitHub : https://github.com/jixn-hu@CSDN : https://me.csdn.net/qq_37462361’’’import osimport reimport pyodbcimport timeimport socketdef now_time(): ''' 格式化返回當前時間 :return: ''' now = int(time.time()) local_time = time.localtime(now) format_now = time.strftime('%Y-%m-%d %H:%M:%S', local_time) return format_nowdef open_184_db(db='rreporttask'): ''' 開啟本地數據庫 :param db: 數據庫(默認為rreporttask) :return: 創建好的數據庫連接 ''' print(now_time(), ’連接184數據庫%s’ % db) driver = ’SQL Server’ # 數據庫ip serverName = ’******’ # 登陸用戶名和密碼 userName = ’******’ passWord = ’******’ # 建立連接并獲取cursor conn = pyodbc.connect(driver=driver, server=serverName, user=userName, password=passWord, database=db, charset='gbk') return conndef insert_many(conn, items, table_name): ''' 多條數據插入到數據庫(注:插入的數據包含表里的關鍵字) :param conn:數據庫 :param items:插入的數據列表字典(列表內包含字典類型) :param table_name:數據庫表名 :return:無 ''' print(now_time(), '更新數據表{}...'.format(table_name)) # print(now_time(),'item:', items) if items: cursor = conn.cursor() sql1 = 'insert into %s' % table_name sql2 = '(' sql3 = ') values(' sql4 = ')' for key in items[0].keys(): # 拼接sql語句 sql2 += '%s,' % key sql3 += '?,' # sql4 += '%s=values(%s),' % (key, key) sql = sql1 + sql2[:-1] + sql3[:-1] + sql4 item_values = [] for item in items: item_values.append(list(item.values())) num = len(item_values) # print(num) print(now_time(), ’一共需要處理數據%s條’ % num) # print(now_time(),'sql:', sql) try: for i in range(0, num, 1000):a = min(num, 1000 + i)# print(item_values[i:a])cursor.executemany(sql, item_values[i:a])conn.commit()print(now_time(), '當前已經處理%s條數據' % a) except Exception as e: print(now_time(), ’更新數據失敗,回滾’) print(e) conn.rollback() conn.close()def main(): items = [] item = {} time.sleep(1) cmd = ’netstat -n -p tcp | find ':3389'’ command = os.popen(cmd) r = command.read() print(r) zz = r.split('n')[0].split() if r==’’: ip = '0000' else: local_ip = zz[1] local_ip = re.sub(r':.*$',’’,local_ip) ip = zz[2] item['server_ip']=socket.getaddrinfo(socket.gethostname(),None)[-1][-1][0] # 本地ip item['sign_ip'] = ip item['entrytime'] = now_time() items.append(item) print(item) conn = open_184_db() insert_many(conn,items,'server_sign') if __name__ == '__main__': main()

你可以把這個python腳本,打包成exe,然后放到服務器上,設置觸發條件,當有人連接和斷開服務器的時候,運行這個腳本

至于如何設置這個觸發器,這就是第二個問題了,如何監控遠程服務器的連接和斷開?

這里可以百度下,windons自帶的任務計劃程序,通過這個我們可以設置exe服務器連接和斷開的時,運行exe腳本,放個圖,之后的自行摸索下

python 監控服務器是否有人遠程登錄(詳細思路+代碼)

其實到這里,基本就是結束了,詳細的思路和主要的實現,也都有了,我們可以直接查詢數據庫就能的知道服務器連接的情況

展示

不過后面為了更方便看,后面我自己又使用flask做了一個界面展示

就不多說明了

先放個成果圖

python 監控服務器是否有人遠程登錄(詳細思路+代碼)

直接上代碼

server_sign.py:

#!/usr/bin/env python# -*- encoding: utf-8 -*-’’’@File : server_sign.py@Time : 2020/04/07 10:47:52@Author : 吉祥鳥@GitHub : https://github.com/jixn-hu@CSDN : https://me.csdn.net/qq_37462361’’’import reimport pyodbcimport timefrom flask import Flask,render_templateapp=Flask(__name__)def now_time(): ''' 格式化返回當前時間 :return: ''' now = int(time.time()) local_time = time.localtime(now) format_now = time.strftime('%Y-%m-%d %H:%M:%S', local_time) return format_nowdef open_184_db(db='rreporttask'): ''' 開啟本地數據庫 :param db: 數據庫(默認為rreporttask) :return: 創建好的數據庫連接 ''' print(now_time(), ’連接184數據庫%s’ % db) driver = ’SQL Server’ serverName = ’******’ # 登陸用戶名和密碼 userName = ’******’ passWord = ’******’ # 建立連接并獲取cursor conn = pyodbc.connect(driver=driver, server=serverName, user=userName, password=passWord, database=db, charset='gbk') return conndef select_one(conn, sql='select ios_id from ios_main'): ''' 查詢信息 :param time: :param type: :return: ''' print(now_time(), '正在查詢數據庫......') cursor = conn.cursor() try: cursor.execute(sql) result = cursor.fetchall() conn.commit() print(now_time(), '數據查詢成功') return result except: print(now_time(), ’更新數據失敗,回滾’) conn.rollback() conn.close()@app.route(’/admin/<name>’) # route() 裝飾器告訴 Flask 什么樣的URL 能觸發我們的函數def hello_world(name): conn = open_184_db() data_back = {} datas = select_one(conn,'select server_ip,sign_ip,entrytime from(select *,ROW_NUMBER()over(partition by server_ip order by entrytime desc)rank from rreporttask..server_sign) as z where rank=1 order by server_ip') for data in datas: if data[1]==’0000’ or ’3389’ in data[1]: data_back[data[0]]='未連接' data[1]='無' else: data_back[data[0]]='連接ing' # print(datas) return render_template('login.html',name=name,datas=datas,data_back=data_back)@app.route(’/hal/<name>’) # route() 裝飾器告訴 Flask 什么樣的URL 能觸發我們的函數def hello_world1(name): return 'hellodd {}'.format(name)if __name__ == '__main__': app.run(debug = True,host=’0.0.0.0’) # 用 run() 函數來讓應用運行在本地服務器上

login.html:

<html> <!-- CSS goes in the document HEAD or added to your external stylesheet --><style type='text/css'> table.hovertable { font-family: verdana,arial,sans-serif; font-size:11px; color:#333333; border-width: 1px; border-color: #999999; border-collapse: collapse; } table.hovertable th { background-color:#c3dde0; border-width: 1px; padding: 8px; border-style: solid; border-color: #a9c6c9; } table.hovertable tr { background-color:#d4e3e5; } table.hovertable td { border-width: 1px; padding: 8px; border-style: solid; border-color: #a9c6c9; } </style> <body> <h1>服務器登錄狀態查看</h1> <table class='hovertable'> <tr> <th>服務器ip</th> <th>登錄ip</th> <th>連接時間</th> <th>連接狀態</th> </tr> {% for data in datas %} <tr><td>{{ data[0] }}</td><td>{{ data[1] }}</td><td>{{ data[2] }}</td><td>{{ data_back[data[0]] }}</td> </tr> {% endfor %} </table> </body> </html>思維導圖

最后,放一個思維導圖,供參考

python 監控服務器是否有人遠程登錄(詳細思路+代碼)

以上就是python 監控服務器是否有人遠程登錄(詳細思路+代碼)的詳細內容,更多關于python 監控服務器的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品欧美一区二区三区在线观看| 欧美激情另类| zzzwww在线看片免费| 国产精品成人一区二区不卡| 婷婷精品在线| 欧美亚洲tv| 国产探花一区| 色爱综合网欧美| 国产一区视频在线观看免费| 国产精品久久观看| 不卡一区综合视频| 综合国产在线| 成人精品高清在线视频| 黄色亚洲精品| 国产免费av一区二区三区| 久久久久久色 | 丝袜诱惑制服诱惑色一区在线观看| 丝袜亚洲另类欧美| 国产精品亚洲二区| 91精品一区国产高清在线gif| 免费人成黄页网站在线一区二区| 国产精品地址| 中国女人久久久| 国产精品nxnn| 久久中文视频| 国产欧美欧美| 在线国产一区二区| 国产欧美日韩精品高清二区综合区| 蜜臀久久精品| 日韩高清电影免费| 91国内精品| 视频福利一区| 国产探花一区| 亚洲精品2区| 久久字幕精品一区| 蜜臀av国产精品久久久久| 成人午夜亚洲| 日韩精品1区2区3区| 久久九九99| 国产精品久久久久久久久免费高清| 国产一区清纯| 成人午夜网址| 日韩av三区| 国产综合色产| 精品精品国产三级a∨在线| 激情欧美亚洲| 粉嫩av一区二区三区四区五区 | 欧美福利在线| 麻豆久久久久久久| 中文字幕亚洲精品乱码| 日韩一区自拍| 国产欧美高清视频在线| 美女精品网站| 久久婷婷激情| 国产一区二区三区不卡视频网站 | 性欧美videohd高精| 久久精品99久久久| 亚洲一级在线| 青青久久av| 精品福利久久久| 国产日韩欧美一区二区三区| 美女精品一区| 午夜国产精品视频免费体验区| 国产成人久久| 美腿丝袜在线亚洲一区| 日本aⅴ精品一区二区三区 | 亚洲色图网站| 野花国产精品入口| 久久中文字幕二区| 9999国产精品| 精品国产精品久久一区免费式| 欧美亚洲网站| 日韩精品一二三四| 精品捆绑调教一区二区三区| 国产欧美日韩亚洲一区二区三区| 日韩中文字幕1| 亚洲精品美女91| 国产视频一区欧美| 欧美精品一区二区三区精品| 欧洲一级精品| 久久影视三级福利片| 欧美黄色一区| 久久福利在线| 国产激情欧美| 久久精品国产亚洲aⅴ| 欧美精品成人| 精品国产乱码| 五月天av在线| 免费看av不卡| 日韩欧美三级| 99视频精品全国免费| 尤物tv在线精品| 欧美日韩在线网站| 红桃视频亚洲| 日韩在线a电影| 激情久久五月| 亚洲免费观看| 久久xxxx精品视频| 蜜桃一区二区三区在线观看| 亚洲毛片一区| 另类国产ts人妖高潮视频| 亚洲一本视频| 9久re热视频在线精品| 岛国av在线网站| 日韩一区二区三区免费播放| 久久久噜噜噜| 欧美福利在线| 国产视频一区免费看| 影院欧美亚洲| 蜜桃久久精品一区二区| 久久婷婷一区| 日韩在线卡一卡二| 久久国产麻豆精品| 精品国内亚洲2022精品成人| 精品一区二区三区四区五区| 麻豆mv在线观看| 欧美日韩三区| 青青国产精品| 亚洲综合电影| 男女激情视频一区| 国产毛片一区二区三区| sm久久捆绑调教精品一区| 国产综合亚洲精品一区二| 亚洲小说春色综合另类电影| 国产精品丝袜在线播放| 你懂的国产精品永久在线| 日韩网站中文字幕| 日韩专区欧美专区| 国产精品日本一区二区三区在线| 亚洲精品**中文毛片| 亚洲一区网站| 国产精品伦一区二区| 国产精品字幕| 日韩一二三区在线观看| 国产成人精品一区二区免费看京| 欧美肉体xxxx裸体137大胆| 婷婷五月色综合香五月| 国产成人精品一区二区三区免费| 99日韩精品| 久久精品国产99| 久久中文视频| 国产精品视频一区二区三区四蜜臂| 日韩三区免费| 欧美有码在线| 欧美日一区二区| 国产精品对白| 亚洲一区国产| 国产精品毛片久久| 日韩和欧美的一区| 久久麻豆精品| 国产精品对白| 婷婷色综合网| 精品久久久中文字幕| 亚洲乱码一区| 亚洲h色精品| 亚洲专区欧美专区| 国产精品麻豆久久| 日韩国产欧美在线视频| 久久中文亚洲字幕| 精品国产亚洲一区二区在线观看| 爽好多水快深点欧美视频| 麻豆理论在线观看| 国产一区 二区| 午夜在线视频观看日韩17c| 国产一区二区三区四区二区| 亚洲精品在线a| 欧美福利在线| 亚洲永久av| 蜜桃久久久久| 久久精品凹凸全集| 蜜桃国内精品久久久久软件9| 麻豆精品一区二区综合av| 亚洲精品免费观看| 亚洲一区二区三区高清| 久久久久国产精品一区二区| 蜜桃久久久久| 国产亚洲欧美日韩在线观看一区二区| 日韩一级精品| 99精品视频在线| 国产精品99一区二区三区| 国产探花在线精品| 日韩精品成人| 日韩欧美中文字幕一区二区三区| 国产精品老牛| 天堂网在线观看国产精品| 久久精品国产网站| 国产精品宾馆| 久久精品凹凸全集| 日本一区二区中文字幕| 日韩一区二区免费看| 亚洲高清成人| 亚洲午夜精品久久久久久app| 欧美日韩视频免费观看| 久久精品午夜| 麻豆一区二区三区| 嫩草伊人久久精品少妇av杨幂| 国产日韩一区二区三区在线播放| 日韩在线黄色| 欧美一级全黄| 国产精品一区二区三区美女 |