Bash retorna stderr do primeiro processo com falha

0

Eu preciso executar alguns comandos e, se algum deles falhar, eu gostaria de gerar JSON com o stderr.

Eu tenho a seguinte linha:

OUT="$( (ssh internal "custom_script1" | custom_app1 2>&- | custom_script2) 2>&1)"

Se o pipeline estiver quebrado, todo comando irá escrever no seu stderr e o OUT terá 2 linhas. Como posso saber qual comando causa a falha e pegar stderr desse comando?

Digamos que eu não seja capaz de ssh para interno, então eu quero imprimir somente SSH stderr:

{
  "state": "failed",
  "reason": "Permission denied (publickey,password,keyboard-interactive)."
}
    
por user307615 14.03.2014 / 04:04

1 resposta

0

se eu entendi isso corretamente, apenas evite o global 2 > 1.

$ OUT="$( (ssh internal "custom_script1" | cut -f 1 2>&- | cut -f 2 2>&1) )"
ssh: Could not resolve hostname internal: nodename nor servname provided, or not known
$ echo $OUT
$
    
por 14.03.2014 / 04:22