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
$
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)."
}
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
$
Tags bash redirection