• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

src/H02-Jan-2019-5,3724,129

tests/H02-Jan-2019-537394

.gitignoreH A D02-Jan-201995 1110

.travis.ymlH A D02-Jan-201961 55

CHANGESH A D02-Jan-20196.1 KiB175128

INSTALLH A D02-Jan-20191.8 KiB5538

LICENSEH A D02-Jan-20191.5 KiB3024

Makefile.inH A D02-Jan-2019885 4126

README.mdH A D02-Jan-20192.8 KiB7159

config.guessH A D02-Jan-201942.9 KiB1,4631,270

config.subH A D02-Jan-201935.5 KiB1,8261,688

configureH A D02-Jan-2019148.1 KiB5,2084,298

configure.acH A D02-Jan-20191.8 KiB6454

install-shH A D02-Jan-201914.8 KiB509329

mcmd.shH A D02-Jan-20194 KiB192145

pkginfoH A D02-Jan-2019209 109

shmux.1H A D02-Jan-201918.7 KiB424392

README.md

1> The most likely way for the world to be destroyed, most experts
2> agree, is by accident.  That's where we come in.  We're computer
3> professionals.  We cause accidents.
4
5## What is shmux?
6
7*shmux* is program for executing the same command on many hosts in
8parallel.  For each target, a child process is spawned by *shmux*, and
9a shell on the target obtained one of the supported methods: rsh, ssh,
10or sh.  The output produced by the children is received by *shmux* and
11either (optionally) output in turn to the user using an easy to read
12format, or written to files for later processing making it well suited
13for use in scripts.
14
15For more details, check out the
16[shmux(1)](https://github.com/shmux/shmux/wiki/shmux) manual page.
17The example shown below is also a good illustration of some of
18*shmux*'s capabilities and is dissected [frame by
19frame](https://github.com/shmux/shmux/wiki/Example) for your
20convenience.
21
22![Sample shmux output](https://github.com/shmux/shmux/wiki/shmux.gif)
23
24## Features
25
26*shmux* solves a fairly simple problem that can be addressed with a
27few lines of shell or Perl.  This may lead you to think that using
28*shmux* is total overkill, but *shmux* is a powerful tool that offers
29many time and life saving features, so read on!
30
31* **When used in a script**
32  * Ability to define what is and what is not an error for the command
33    being run (based on exit code and output content)
34  * Output and exit codes are saved into files to facilitate use from
35    a script.
36* **When used interactively** (directly on the command line, or from
37within a script/wrapper):
38  * Well formatted output
39  * Standard error output displayed in bold
40  * Real-time status shown
41  * Ability to pause, resume, quit cleanly
42  * Automatically pause on error, allowing the user to cleanly stop
43    before more goes wrong
44  * Ability to hide output of successful targets
45  * Mixed or un-mixed target outputs
46
47##  Related Work
48
49Now..
50
51Where were all these when i wrote *shmux*?
52why do people keep reinventing the wheel?
53
54* [dsh](http://www.netfort.gr.jp/~dancer/software/dsh.html)
55* [dssh](http://dssh.subverted.net/)
56* [fanout](http://www.stearns.org/fanout/)
57* [Kees Cook's gsh](http://outflux.net/unix/software/gsh/)
58* [Mr. Shell](http://www.voltar-confed.org/mrsh/)
59* [multi-rsh](http://hea-www.harvard.edu/~fine/Tech/multi-rsh.html)
60* [multixterm](http://expect.nist.gov/example/multixterm.man.html)
61* [mussh](http://sourceforge.net/projects/mussh/)
62* [pdsh](https://computing.llnl.gov/linux/pdsh.html)
63* [pssh](http://www.theether.org/pssh/)
64* [p-run](http://www.tuxrocks.com/Projects/p-run/)
65* [PyDsh](http://sourceforge.net/projects/pydsh/)
66* [remote_update.pl](http://store.z-kat.com/~valankar/)
67* [RGANG](http://fermitools.fnal.gov/abstracts/rgang/abstract.html)
68* [rshall](http://www.occam.com/tools/)
69* [tentakel](http://tentakel.biskalar.de/)
70* [vxargs](http://dharma.cis.upenn.edu/planetlab/vxargs/)
71