客戶端-遠(yuǎn)程登錄監(jiān)控是一款python寫的監(jiān)控win服務(wù)器是否被遠(yuǎn)程登錄的工具,查看及監(jiān)控服務(wù)器被遠(yuǎn)程登錄動(dòng)態(tài),由于在項(xiàng)目開發(fā)過程中,不少人接觸到服務(wù)器登錄密碼,必要時(shí)候要收回密碼,確保服務(wù)器的安全。
軟件介紹
server:
服務(wù)端需要python環(huán)境,測試環(huán)境為3.8.7。具體版本自測。
本來也是要打包exe,可是pyinstaller打包之后運(yùn)行一直報(bào)錯(cuò),如下圖1。大佬可自行打包
server沒有寫配置文件
使用web.py編寫的簡易api,默認(rèn)web為http://localhost:8080
如果需要自定義端口,在cmd運(yùn)行,防火墻放行對(duì)應(yīng)端口
異常,err什么的都沒有做處理,有需要的可以自行改源碼捕捉
【template】文件夾中為web.py的模板文件,用于生成html
有客戶端提交后自動(dòng)生成【log/client_ip】文件夾,日期為文件名的log,保存了客戶端ip,登陸者ip,提交時(shí)間
沒有更改端口需求的,布置好python環(huán)境后,直接雙擊server.py即可
client:
確保【config.ini】同目錄存在,修改其中的server配置(IP:port),后面的api不用動(dòng),server定義的
確保服務(wù)端已運(yùn)行,且網(wǎng)絡(luò)連通,否則client會(huì)閃退(因?yàn)檫B不上server)
可以自定義設(shè)置檢查頻率,單位秒,默認(rèn)120s
直接運(yùn)行打包好的client.exe即可
1、服務(wù)端運(yùn)行時(shí)
2、通過瀏覽器訪問主頁時(shí),默認(rèn)未有客戶端提交數(shù)據(jù)
3、手動(dòng)通過瀏覽器使用get提交數(shù)據(jù),server返回字典,也是寫入log中的內(nèi)容
客戶端IP,客戶端提交的遠(yuǎn)程登錄IP,提交時(shí)間
4、然后手動(dòng)刷新主頁(不會(huì)寫自動(dòng)更新),就能看到已提交客戶端和登陸這ip
5、客戶端運(yùn)行時(shí),沒有被登錄會(huì)提交【Nobody】
時(shí)間,web狀態(tài)碼,server返回的字典
6、自動(dòng)生成log
思路:
client:
python會(huì)打開cmd執(zhí)行netstat過濾已建立連接的3389端口,然后沒有就返回Nobody。
有的話過濾本地端口是3389的連接ip,requests.get提交給server。死循環(huán),默認(rèn)120s檢查一次
server:
啟動(dòng)web,默認(rèn)監(jiān)聽8080,設(shè)定提交api,http://server_ip:port/api/login/login_ip。
收到客戶端數(shù)據(jù),獲取客戶端ip,向登陸緩存中寫入或更新以【客戶端ip】為鍵,鍵值為【登錄者ip】、【提交時(shí)間】
用登陸緩存去循環(huán)table_td模板獲取表格內(nèi)容,將內(nèi)容套入index模板,更新主頁內(nèi)容
將更新的對(duì)應(yīng)客戶端緩存寫入對(duì)應(yīng)日志,向客戶端返回緩存
使用場景
公司辦公網(wǎng)到生產(chǎn)網(wǎng),需要通過 10.10.50.0/24 的win操作機(jī),然后在操作機(jī)登錄堡壘機(jī)才能連接到生產(chǎn)網(wǎng)。
操作機(jī)都是沒開多用戶的,所以遠(yuǎn)程登陸之前并不知道有沒有人在使用該操作機(jī),所以寫了這個(gè)小工具。
更新說明
1、給客戶端寫了GUI,用站內(nèi)WxPython中文可視化編輯器1.2的工具生成的GUI主體
2、如果服務(wù)端未啟動(dòng)時(shí),現(xiàn)在啟動(dòng)客戶端不會(huì)閃退,可以在“開始”后看到“請(qǐng)檢查與服務(wù)端的網(wǎng)絡(luò)連接”的log
3、啟動(dòng)時(shí)從配置文件讀取配置,GUI可以配置參數(shù),可以保存到“config.ini”
4、使用子線程處理“檢查登錄IP”和“提交給服務(wù)端”的任務(wù)
5、運(yùn)行過程中可以“停止”子線程,更改配置后,點(diǎn)“開始”會(huì)刷新配置,而不需要重啟程序(寫入配置文件需要手動(dòng)保存)