Command-Line-Interface

向企業伺服器分發自定義命令行工具

  • November 22, 2012

我的任務是建構一個命令行工具,我們將提供給我們的企業客戶,以便他們可以使用 API 將數據上傳到我們的平台。該 API 適用於標準 cURL 請求,因此我可以使用簡單的 bash 腳本來完成大部分基本功能,儘管我想提供一些可靠且真正讓他們易於使用的東西,但我不知道我不知道什麼不知道。自從我真正完成任何嚴肅的系統管理員工作以來,已經過去了 8 年。

我現在使用的大多數好工具都是用 Ruby 或 Python 編寫的,並且有一個標準的分發過程(例如 Gems)。但是,我知道 rhel 和其他平台有自己的包管理器。

最後,問題是:在當今時代,我應該考慮哪種語言/分發方法才能覆蓋最廣泛的平台,而不必為每個平台建構完全不同的版本?

我也很喜歡您對建構類似項目的任何一般性回饋,或者您認為現在做得很好並且具有我可以閱讀的開原始碼的項目的連結。

提前致謝!

好吧,你的問題很廣泛,但過去一年我一直在用 python 編寫系統管理工具。因此,由於您要求提供一般性回饋,以下是我遇到的一些事情。

您可以使用urllib2curl在純 Python 程式碼中編寫您的請求。如果您只需要一些基本的 REST 請求,您可以查看請求或任何其他 python REST 客戶端。

如果您需要支持 rhel 5(就像我一樣),您將無法使用 python > 2.4 中的任何內容

分發:您可以使用setuptools 您需要做的就是創建一個setup.py腳本,告訴 setuptools 如何進行安裝。然後,您可以將 tarball 上傳到pypi

在此之後,您的客戶可以通過以下方式安裝您的工具:

easy_install toolname

或者

pip toolname

然後,easy_install 或 pip 將從 pypi 下載 tarball,並執行setup.py腳本中的說明。

或者,如果你想分發到企業伺服器,你現在也可以很容易地創建 rpms

python setup.py bdist_rpm

這將使用您的 setup.py 並從中創建一個 rpm,對於 .deb 應該也可以(使用一些額外的 bdist 外掛)

我在根特大學工作,我們已經開源了我們編寫的一些 python 工具/庫,例如,您可能會從解析命令行參數開始,我們編寫了擴展基本 python 2.4 optionparser的 generaloption.py,以及給它一些很酷的新選擇。(例如,預設情況下允許您使用環境變數覆蓋任何命令行選項)還有一個名為fancylogger.py的擴展記錄器

您可以在該儲存庫中查看其他一些可能有助於在 python 2.4 下編寫系統管理員腳本的內容

引用自:https://serverfault.com/questions/447968