clubak is another utility provided with the ClusterShell library that try to gather and sort such dsh-like output:

node17: MD5 ( = 62e23bcf2e11143d4875c9826ef6183f
node14: MD5 ( = 62e23bcf2e11143d4875c9826ef6183f
node16: MD5 ( = e88f238673933b08d2b36904e3a207df
node15: MD5 ( = 62e23bcf2e11143d4875c9826ef6183f

If file content is made of such output, you got the following result:

$ clubak -b < file
node[14-15,17] (3)
 MD5 ( = 62e23bcf2e11143d4875c9826ef6183f
 MD5 ( = e88f238673933b08d2b36904e3a207df

Or with -L display option to disable header block:

$ clubak -bL < file
node[14-15,17]:  MD5 ( = 62e23bcf2e11143d4875c9826ef6183f
node16:  MD5 ( = e88f238673933b08d2b36904e3a207df

Indeed, clubak formats text from standard input containing lines of the form node: output. It is fully backward compatible with dshbak(1) available with pdsh but provides additional features. For instance, clubak always displays its results sorted by node/nodeset.

But you do not need to execute clubak when using clush as all output formatting features are already included in clush (see clush -b / -B / -L examples, Non-interactive (or one-shot) mode). There are several advantages of having clubak features included in clush: for example, it is possible, with clush, to still get partial results when interrupted during command execution (eg. with Control-C), thing not possible by just piping commands together.

Most clubak options are the same as clush. For instance, to try to resolve node groups in results, use -r, --regroup:

$ clubak -br < file

Like clush, clubak uses the ClusterShell.MsgTree module of the ClusterShell library.

Tree trace mode (-T)

A special option -T, --tree, only available with clubak, can switch on MsgTree trace mode (all keys/nodes are kept for each message element of the tree, thus allowing special output display). This mode has been first added to replace padb [1] in some cases to display a whole cluster job digested backtrace.

For example:

$ cat trace_test
node3: first_func()
node1: first_func()
node2: first_func()
node5: first_func()
node1: second_func()
node4: first_func()
node3: bis_second_func()
node2: second_func()
node5: second_func()
node4: bis_second_func()

$ cat trace_test | clubak -TL
[1]padb, a parallel application debugger (