Shell Command

This integration can expose regular shell commands as services. Services can be called from a script or in automation. Shell commands aren’t allowed for a camel-case naming, please use lowercase naming only and separate the names with underscores.

# Example configuration.yaml entry
# Exposes service shell_command.restart_pow
  restart_pow: touch ~/.pow/restart.txt

Configuration Variables

alias string Required

Give the shell command a name (alias) as a variable and set the command you want to execute after the colon. e.g., alias:the shell command you want to execute.

The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn’t allow any shell helpers like automatically expanding the home dir ~ or using pipe symbols to run multiple commands. Similarly, only content after the first space can be generated by a template. This means the command name itself cannot be generated by a template, but it must be literally provided.

Any service data passed into the service call to activate the shell command will be available as a variable within the template.

stdout and stderr output from the command are both captured and will be logged by setting the log level to debug.

# Apply value of a GUI slider to the shell_command
  - alias: run_set_ac
      platform: state
      entity_id: input_number.ac_temperature
      service: shell_command.set_ac_to_slider

    name: A/C Setting
    initial: 24
    min: 18
    max: 32
    step: 1

  set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states("input_number.ac_temperature") }}_AUTO'