A module for shelling out
Keep in mind that this module is insecure, in that it can give whomever has access to the master root execution access to all salt minions
Pass in two strings, the first naming the executable language, aka - python2, python3, ruby, perl, lua, etc. the second string containing the code you wish to execute. The stdout and stderr will be returned
CLI Example:
salt '*' cmd.exec_code ruby 'puts "cheese"'
Returns true if the executable is available on the minion, false otherwise
CLI Example:
salt '*' cmd.has_exec cat
Execute a shell command and return the command's return code.
CLI Example:
salt '*' cmd.retcode "file /bin/bash"
The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example:
salt '*' cmd.retcode template=jinja "file {{grains.pythonpath[0]}}/python"
Execute the passed command and return the output as a string
CLI Example:
salt '*' cmd.run "ls -l | awk '/foo/{print $2}'"
The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example:
salt '*' cmd.run template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print $2}'"
Execute the passed command and return a dict of return data
CLI Example:
salt '*' cmd.run_all "ls -l | awk '/foo/{print $2}'"
The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example:
salt '*' cmd.run_all template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print $2}'"
Execute a command and only return the standard error
CLI Example:
salt '*' cmd.run_stderr "ls -l | awk '/foo/{print $2}'"
The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example:
salt '*' cmd.run_stderr template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print $2}'"
Execute a command, and only return the standard out
CLI Example:
salt '*' cmd.run_stdout "ls -l | awk '/foo/{print $2}'"
The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example:
salt '*' cmd.run_stdout template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print $2}'"
Download a script from a remote location and execute the script locally. The script can be located on the salt master file server or on an HTTP/FTP server.
The script will be executed directly, so it can be written in any available programming language.
The script can also be formated as a template, the default is jinja. Arguments for the script can be specified as well.
CLI Example:
salt '*' cmd.script salt://scripts/runme.sh
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
Download a script from a remote location and execute the script locally. The script can be located on the salt master file server or on an HTTP/FTP server.
The script will be executed directly, so it can be written in any available programming language.
The script can also be formated as a template, the default is jinja.
Only evaluate the script return code and do not block for terminal output
CLI Example:
salt '*' cmd.script_retcode salt://scripts/runme.sh
Returns the path of an executable available on the minion, None otherwise
CLI Example:
salt '*' cmd.which cat
Returns the first command found in a list of commands
CLI Example:
salt '*' cmd.which_bin '[pip2, pip, pip-python]'