Как добавить stderr в той же строке - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь выполнить OS cmds на нескольких хостах, используя pssh. Проблема в том, что stderr не печатает в одной строке.

Мне удалось напечатать вывод cmd в той же строке, но не в stderr. 55

Stderr: ssh: Может, нет, не известно [2] 04:58:09 [], host2, / root / file1 [3] 04:58:10 [], host3, Stderr: ls: not, доступ, / root / file1: такого файла или каталога нет [4] 04:58:10 [], host4, / root / file1

Могу ли я получить такой же вывод, как показано ниже?

   [1] 04:41:52 [], host1, Exited with error code 255, Stderr: ssh: Could not, re
    [2] 04:41:52 [], host2, This is FILE1, Linux host2 3.0.101-0.47.52-default #1 SMP Thu Mar 26 10
    [3] 04:41:52 [], host3, Stderr: cat: /root/file1: No such file or directory, Linux host3 3.0.101-108.68-defaul
    [4] 04:41:52 [], host4, Stderr: cat: /root/file1: No such file or directory99-default64 x86_64 ..
    [5] 04:41:53 [], host5, This is FILE1 $$$$$, Linux host5 4.4.162-94.72-default #64 x86_64 x86_64 GNU/Linux

1 Ответ

2 голосов
/ 27 марта 2019

Если вы считаете, что ваш stderr уже перенаправлен на стандартный вывод:

cat stderr.in 
[1] 04:41:52 [FAILURE], host1, Exited with error code 255
Stderr: ssh: Could, not, resolve hostname host1: Name or service not known
[2] 04:41:52 [SUCCESS], host2, This is FILE1, Linux host2 3.0.101-0.47.52-default #1 SMP Thu Mar 26 10:55:49 UTC 2015 (0e3c7c8) x86_64 x86_64 x86_64 GNU/Linux
[3] 04:41:52 [SUCCESS], host3, , Linux host3 3.0.101-108.68-default #1 SMP Mon Aug 13 18:53:23 UTC 2018 (ef94234) x86_64 x86_64 x86_64 GNU/Linux
Stderr: cat: /root/file1:, No, such file or directory
[4] 04:41:52 [SUCCESS], host4, , Linux host4 3.12.74-60.64.99-default #1 SMP Tue Aug 14 07:11:35 UTC 2018 (d28148a) x86_64 x86_64 x86_64 GNU/Linux
Stderr: cat: /root/file1:, No, such file or directory
[5] 04:41:53 [SUCCESS], host5, This is FILE1 $$$$$, Linux host5 4.4.162-94.72-default #1 SMP Mon Nov 12 18:57:45 UTC 2018 (9de753f) x86_64 x86_64 x86_64 GNU/Linux

AWK:

awk '!/^Stderr:/{if(tmp){tmp=tmp"\n"$0}else{tmp=$0};next}{print tmp", "$0; tmp=""}END{print}' stderr.in 
[1] 04:41:52 [FAILURE], host1, Exited with error code 255, Stderr: ssh: Could, not, resolve hostname host1: Name or service not known
[2] 04:41:52 [SUCCESS], host2, This is FILE1, Linux host2 3.0.101-0.47.52-default #1 SMP Thu Mar 26 10:55:49 UTC 2015 (0e3c7c8) x86_64 x86_64 x86_64 GNU/Linux
[3] 04:41:52 [SUCCESS], host3, , Linux host3 3.0.101-108.68-default #1 SMP Mon Aug 13 18:53:23 UTC 2018 (ef94234) x86_64 x86_64 x86_64 GNU/Linux, Stderr: cat: /root/file1:, No, such file or directory
[4] 04:41:52 [SUCCESS], host4, , Linux host4 3.12.74-60.64.99-default #1 SMP Tue Aug 14 07:11:35 UTC 2018 (d28148a) x86_64 x86_64 x86_64 GNU/Linux, Stderr: cat: /root/file1:, No, such file or directory
[5] 04:41:53 [SUCCESS], host5, This is FILE1 $$$$$, Linux host5 4.4.162-94.72-default #1 SMP Mon Nov 12 18:57:45 UTC 2018 (9de753f) x86_64 x86_64 x86_64 GNU/Linux

если это не так, вам придется либо использовать 2>&1 |, либо, если ваш bash>> до версии 4, использовать |&

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...