導語:本文将要介紹Minio版本探測的方法,通過Python實作自動化,記錄開發細節,開源代碼。
0x00 前言
本文将要介紹Minio版本探測的方法,通過Python實作自動化,記錄開發細節,開源代碼。
0x01 簡介
本文将要介紹以下内容:
實作思路
實作細節
開源代碼
0x02 基礎知識
MinIO是一款基于Go語言發開的高性能、分布式的對象存儲系統。Minio可以做為雲存儲的解決方案用來儲存海量的圖檔,視訊,文檔。由于采用Go語言實作,服務端可以工作在Windows,Linux, OS X 和FreeBSD上,并且隻需要單獨的可執行程式就可以運作。
在Windows上的環境搭建可參考:https://min.io/docs/minio/windows/index.html
1.下載下傳
最新版本:https://dl.min.io/server/minio/release/windows-amd64/minio.exe
曆史版本:https://dl.min.io/server/minio/release/windows-amd64/archive/
曆史版本在下載下傳後将檔案字尾名添加.exe,運作即可
2.啟動服務
指令行參數:minio.exe server C:\minio --console-address :9090
3.Web通路
URL位址:http://127.0.0.1:9090
預設使用者名:minioadmin
預設密碼: minioadmin
0x03 實作思路
Minio的版本探測需要登入到Web背景
通路位置:Health頁面,如下圖
從頁面中可以看到目前版本以及節點和存儲的資訊
在程式實作上,我們可以通過抓包的方式分析認證過程,具體内容如下:
1.登入
通路位址:http://127.0.0.1:9090/api/v1/login
通過json格式傳入認證資訊,具體内容如下:
登入成功後傳回狀态碼204,在Header中添加Cookie: token=xxxx作為憑據
2.讀取版本資訊
通路位址:http://127.0.0.1:9090/api/v1/admin/info
需要帶有Cookie: token=xxxx作為憑據
傳回結果為json格式,如下圖
補充:獲得Minio的最新版本
通路位址:http://127.0.0.1:9090/api/v1/check-version
0x04 實作細節
1.登入
這裡需要考慮一個問題:預設端口被修改的情況
在用程式實作自動化時,通常會使用端口9000,但存在端口被修改為9001的情況,也存在很少一部分将端口修改為其他不常見的端口
如果端口錯誤,會傳回狀态碼400,傳回内容示例:
是以在程式實作上這裡可以添加一個判斷:當使用預設端口9000時,如果傳回特定條件,提示端口錯誤,接下來嘗試端口9001,如果再次失敗,提示修改預設端口
完整示例代碼:
2.讀取版本資訊
傳回結果為json格式,結果示例:
這裡存在多個servers的情況,是以在解析時需要使用周遊,示例代碼如下:
0x05 開源代碼
完整的實作代碼已上傳至github,位址如下:https://github.com/3gstudent/Homework-of-Python/blob/master/MinIO_GetVersion.py
代碼支援以下兩種指令:
getversin:用來獲得版本資訊
getinfo:用來獲得完整資訊
0x06 小結
本文介紹了Minio版本探測的方法,結合實際環境介紹了通過Python開發的細節,開源代碼。