python - 使用 python 和 saltstack 错误

标签 python salt-stack

我正在 Python 中使用 SaltStack API 编写一个小程序,但遇到错误

import salt.client
SnakeInSalt = salt.client.LocalClient()
SnakeInSalt.cmd('*',test.ping)

错误:

python test.py 
Traceback (most recent call last):
File "test.py", line 4, in <module>
SnakeInSalt.cmd('*',test.ping)
NameError: name 'test' is not defined

如果我从命令行运行salt,它就会起作用

> sudo salt '*' test.ping

> [sudo] password for z: 

> z-ThinkPad:
> True

最佳答案

我可以假设这不再是您需要回答的问题吗? (无论如何我都会回答)

当您运行 sudo salt '*' test.ping 时,您正在模块 test 中运行名为 ping 的内置函数。要查看可用模块的列表,请使用sudo salt '*' sys.list_modules test。您可以通过输入 salt '*' sys.list_funtions test 来查看该模块中的函数列表。命令 sudo salt '*' test.ping 应该适用于世界上的每个 salt 设置,而不是对您编写的任何自定义状态或模块的测试。

你的模块被破坏了,因为你使用了错误的语法,并且你正在调用 cmd 模块而不是测试模块。您的代码应如下所示:

import salt.client
SnakeInSalt = salt.client.LocalClient()
SnakeInSalt.cmd('*', 'test.ping')

唯一的区别是 test.ping 需要用引号括起来(双引号或单引号)。您可以引用https://docs.saltstack.com/en/latest/ref/clients/#salt.client.LocalClient.cmd查看 .cmd() 可用的所有参数。您缺少的是 cmd 要求第二个参数 fun(函数的缩写)必须是字符串的知识。这不会为您转换,因此您需要将其用引号引起来。

您还可以引用https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.test.html#salt.modules.test.ping查看测试模块的 ping 功能需要哪些参数。 剧透警告...答案是否定的,但看起来你已经知道了。

干杯!

关于python - 使用 python 和 saltstack 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075967/

相关文章:

jinja2 - 包括来自 SaltStack 柱子的神社

salt-stack - Saltstack - 预览 Highstate

javascript - 将 ionic 移动应用程序与 Django 结合使用进行表单处理的最佳方式

python - Keras 连接

python - 使用用户定义的坐标列表添加辅助 X 轴

command-line - 如何使用 salt 来测试神社的功能?

salt-stack - 如何聚合 SaltStack 命令结果?

python - Salt - 如何异步获取 cmd_async 输出

python - 使用pygame获取位置的像素颜色

python - 如何使用 OR 条件合并两个 pandas 数据框