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"
複製代碼
看起來傳遞的參數有效的