summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs/simple/pssh/default.nix
blob: 2676af0cfcead03882d6d34a353d41002b933aff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{ writeDashBin }:

writeDashBin "pssh" ''
  set -efu
  case ''${1-} in

  # TODO create plog with -o json | jq ... | map date

  # usage: pssh {-j,--journal} host...
  # Follow journal at each host.
  -j|--journal)
    shift
    "$0" journalctl -n0 -ocat --follow --all ::: "$@" \
      | while read line; do
          printf '%s %s\n' "$(date --rfc-3339=s)" "$line"
        done
    ;;

  -*)
    echo $0: unknown option: $1 >&2
    exit 1
    ;;

  # usage: pssh command [arg...] ::: host...
  # Run command at each host.
  *)
    exec parallel \
      --line-buffer \
      -j0 \
      --no-notice \
      --tagstring {} \
      ssh -T {} "$@"
    ;;

  esac
''