salt '*' cmd.script
cmd.run 这个前面说了
cmd.script
这个是比较强大的命令,意思是可以从远程下载一个脚本在客户端执行
CLIExample:
salt '*' cmd.script salt://scripts/runme.sh
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
帮助文档说Thescript can be located on the salt master file server or on an HTTP/FTP server.
所以配置一下salt服务端, 把脚本放在服务端
编辑/etc/salt/master,打开下面的注释,保存后重启服务端
file_roots:
base:
- /srv/salt
如果没有/srv/salt/script目录就创建一个
cd/srv/salt/scripts
写一个shell脚本保存为1.sh
-
#!/bin/bash
-
echo "test salt" > /tmp/testsalt.txt
复制代码
执行远程命令
-
salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh
复制代码

显示的信息还是很直观的,stdout没有信息显示是因为脚本语句没有显示文本,可以加多一句echo “ok”再执行多一次就可以看到输出了.
看帮助好像还可以在执行脚本时添加命令行参数,试试
修改脚本为
-
#!/bin/bash
-
echo "test salt" > /tmp/testsalt.txt
-
echo $1
-
echo $2
-
echo $3
-
-
if [ "$3"x = "yy"x ]
-
then
-
echo "ok ???????????????"
-
fi
复制代码
再次执行远程命令
-
salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb cc"
-
salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb yy"
复制代码
看起来传递的参数有效的
