跳转到主要内容

高级系统脚本执行抽象层。

项目描述

xal 是一个Python库,它提供了一个用于与系统资源(文件、命令等)交互的 高级API,并通过第三方(stdlib、Fabric、Salt、...)进行 低级执行

概念是在系统中打开一个会话,然后在该会话中运行命令

  • 会话是特定的,它包含执行上下文,它知道低级实现。

  • 命令使用通用API。您可以在另一个会话中运行相同的命令。

示例

让我们在本地系统上初始化一个会话

>>> import xal
>>> local_session = xal.LocalSession()

在这个会话中,我们可以管理文件

>>> path = local_session.path('hello-xal.txt')
>>> path.exists()
False
>>> written = path.open('w').write(u'Hello world!')
>>> path.exists()
True
>>> print path.open().read()
Hello world!
>>> path.unlink()
>>> path.exists()
False

我们还可以执行sh命令

>>> result = local_session.sh.run(u"echo 'Goodbye!'")
>>> print result.stdout
Goodbye!
<BLANKLINE>

现在让我们创建一个函数,它执行相同的操作。它将会话作为输入参数

>>> def hello(session):
...     path = session.path('hello-xal.txt')
...     path.open('w').write(u"Hello world!")
...     print path.open().read()
...     path.unlink()
...     print session.sh.run(u"echo 'Goodbye!'").stdout

当然,我们可以在本地会话中运行它

>>> hello(local_session)
Hello world!
Goodbye!
<BLANKLINE>

好处在于我们可以在另一个会话中重用相同的函数。让我们使用Fabric创建一个远程SSH会话...

>>> remote_session = xal.FabricSession(host='localhost')

...然后只需使用这个远程会话运行相同的函数

>>> hello(remote_session)
Hello world!
Goodbye!
<BLANKLINE>

动机

xal 的想法是

  • Python用户(包括系统管理员和DevOps)有一个一致和统一的API来编写在系统上执行操作的脚本。

  • 这些脚本是可以移植的,即它们可以在各种环境中执行。无论操作系统如何,无论连接和与系统通信的协议如何...

  • Python社区可以共享与Fabric、zc.buildout、Salt、Ansible等工具兼容的库。

  • 从一种工具切换到另一种工具更容易:重新配置会话,不要更改脚本。在本地开发脚本,通过Fabric远程测试它们,使用Salt进行分发……或者反之。

项目状态

今天xal是一个概念验证。它专注于基本功能的示例实现,如管理文件和目录,或执行sh命令。想法是,作为Python用户,您可以尝试一下,如果您喜欢它,就可以用它来完成简单的任务。

明天,根据社区反馈,xal可能会改进或被弃用。作为xal的作者,我希望以下事情发生

  • 提高当前特性的稳定性和性能。

  • 更多的执行上下文(即会话):Salt,作为sudoer的Fabric……

  • 更多的资源:用户,系统软件包,……

  • 更好的API,最好是作为PEP构建。就像的概念验证试图模仿pathlib一样,可能每个资源都有一个相关的PEP。Sh命令(即subprocess的替代品)是一个史诗般的例子。

作为的作者,我无法独自完成。如果您想帮忙

  • 提供反馈。您喜欢吗?您在中不喜欢什么?您的反馈很重要!

  • 在GitHub上加入项目。

资源

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

xal-0.3.tar.gz (17.1 kB 查看散列)

上传时间:

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面