exec

Execute arbitrary commands

Things to note:

  • Any linefeeds will be removed from the command, so this works fine:
    exec:
      command: |
        docker ps
          -all
          --no-trunc
          --quiet
          --size
    - By default, input data *streams* through the output process, i.e. works like a shell filter.
      You cannot have `${field}` expansions when streaming, so streaming is switched off.
      Then the command will be executed once for each input line. With `input-field` you have to
      explicitly ask for `streaming: true` for reasons of backward compatibility.
    
Field NameDescriptionTypeDefault
input-fieldA field from where data is to be read, meaning JSON is assumedfield-
commandA shell command to be executedstring-
streamingRun the command separately for each eventbooltrue
retryFor operations that could potentially fail--

input-field

A field from where data is to be read, meaning JSON is assumed

Otherwise the whole event is sent

Type: field

Example

input:

{"text":"one","number":1}

action:

exec:
  input-field: text
  command: cat

output:

one

command

A shell command to be executed

If streaming is set to false (or input-field by default) then there can be field expansions

Type: string

Example

input:

{"text":"one","number":1}

action:

exec:
  command: cat

output:

{"text":"one","number":1}

streaming

Run the command separately for each event

Normally, the command runs continuously and events are passed through

Type: bool

Example: streaming must be explicit if input-field is defined

input:

{"msg":"hello dolly"}
{"msg":"we are happy"}

action:

exec:
  input-field: msg
  streaming: true
  command: tr 'h' 'H'

output:

Hello dolly
we are Happy

Example: streaming is implicit if there are field expansions

input:

{"text":"one","number":1}

action:

exec:
  command: echo "${text}-${number}"

output:

one-1

retry

For operations that could potentially fail

Field NameDescriptionTypeDefault
countHow many attempts to make before declaring failureinteger-
pauseHow long to pause before re-tryingduration-
foreverkeep trying until success is declaredboolfalse

count

How many attempts to make before declaring failure

Type: integer

Example

action:

exec:
  command: echo 'one two'
  retry:
    count: 1

output:

{"_raw":"one two"}

pause

How long to pause before re-trying

Accepts human-friendly formats, like 1m (for 1 minute) and 4h (for 4 hours)

Type: duration

Example

action:

exec:
  command: echo 'one two'
  retry:
    count: 6
    pause: 10s

output:

{"_raw":"one two"}

forever

keep trying until success is declared

Accepts human-friendly formats, like 1m (for 1 minute) and 4h (for 4 hours)

Type: bool

Example

action:

exec:
  command: echo 'one two'
  retry:
    forever: true

output:

{"_raw":"one two"}