如何将多个命令传递给 salt cmd.run?
How to pass multiple commands into salt cmd.run?
我需要执行一个带有属性文件的脚本,这在服务器上要求我位于脚本和属性文件的目录中。如何在不让 salt 执行另一个负责目录更改的脚本的情况下获取 salt 来实现此目的?
我试过了
salt 'minion_id' cmd.run 'cd /my/directory && sh my_script.sh my_file.properties'
但这不起作用。
在一般情况下,&&
应该可以正常工作,只要链中的每个命令都以 0 退出。如果它们不会(没关系),您可以使用 ;
而不是 &&
。您可能还需要完全限定任何二进制文件的路径(例如 /bin/sh 而不仅仅是 sh),因为 cmd.run env 往往有一个相当裸露的路径。
也就是说,cmd.run 模块支持 cwd
参数(参见 the documentation),它指定要执行的目录:
试试这样的东西:
salt 'minion_id' cmd.run '/bin/sh my_script.sh my_file.properties' cwd=/my/directory
或者如果您的脚本是可执行的并且有一个 shebang:
salt 'minion_id' cmd.run './my_script.sh my_file.properties' cwd=/my/directory
我需要执行一个带有属性文件的脚本,这在服务器上要求我位于脚本和属性文件的目录中。如何在不让 salt 执行另一个负责目录更改的脚本的情况下获取 salt 来实现此目的?
我试过了
salt 'minion_id' cmd.run 'cd /my/directory && sh my_script.sh my_file.properties'
但这不起作用。
在一般情况下,&&
应该可以正常工作,只要链中的每个命令都以 0 退出。如果它们不会(没关系),您可以使用 ;
而不是 &&
。您可能还需要完全限定任何二进制文件的路径(例如 /bin/sh 而不仅仅是 sh),因为 cmd.run env 往往有一个相当裸露的路径。
也就是说,cmd.run 模块支持 cwd
参数(参见 the documentation),它指定要执行的目录:
试试这样的东西:
salt 'minion_id' cmd.run '/bin/sh my_script.sh my_file.properties' cwd=/my/directory
或者如果您的脚本是可执行的并且有一个 shebang:
salt 'minion_id' cmd.run './my_script.sh my_file.properties' cwd=/my/directory