将自定义命令行工具分配给企业服务器

我一直致力于构build一个命令行工具,我们将提供给我们的企业客户,以便他们可以使用API​​上传数据到我们的平台。 这个API与标准的cURL请求一起工作,所以我可以用简单的bash脚本来完成大部分的基本function,虽然我想提供一些可靠的东西,真的很容易让他们使用,我不知道我在做什么不知道。 自从我真的做了一些严肃的系统pipe理工作已经8年了。

现在我使用的大多数好工具都是用Ruby或者Python编写的,并且有一个标准的分发stream程(比如Gems)。 不过,我知道rhel和其他平台有自己的包pipe理器。

最后,问题是:在今天这个时代,为了覆盖最广泛的平台,我应该考虑什么语言/分配方法,而不必为每个平台构build完全不同的版本?

我也非常喜欢你关于构build类似项目的一般反馈,或者链接到你认为现在做得很好的项目,并且有我可以阅读的开源代码。

提前致谢!

那么,你的问题是相当广泛的,但我一直在Python的系统pipe理员工具在过去的一年。 所以既然你要求一般的反馈,这里有一些我遇到的事情。

您可以使用urllib2在纯Python代码中编写curl请求。 如果您只需要一些基本的REST请求,您可以查看请求或任何其他Python REST客户端。

如果你需要支持rhel 5(和我一样),你将无法使用python> 2.4中的任何东西

分发:你可以使用setuptools所有你需要做的是创build一个setup.py脚本告诉setuptools如何安装。 然后你可以上传一个tarball到pypi

在此之后,您的客户可以安装您的工具:

 easy_install toolname 

要么

 pip toolname 

然后,easy_install或pip将从pypi下载tarball,并执行setup.py脚本中的说明。

另外,如果你想分发到企业服务器,你现在可以很容易地创buildrpms :

 python setup.py bdist_rpm 

这将使用setup.py并创build一个rpm,同样应该可以.deb(带有一些额外的bdist插件)

我在根特大学工作,我们已经开源了一些我们编写的python工具/库,例如,你可能会开始parsing命令行参数,我们已经编写了generaloption.py,它扩展了基本的python 2.4 optionparser,给它一些很酷的新选项。 (例如,允许你用默认的环境variables覆盖任何命令行选项)还有一个名为fancylogger.py的扩展logging器

你可以在这个资源库中查看一些其他的东西,这些东西可能有助于在Python 2.4下编写sysadmin脚本