SSHP(1)
π SSHP(1) β the parallel ssh page, bestie edition
okay so you found the manpage for sshp, and it lives in the General Commands Manual (that's the SSHP(1) header vibe, iykyk). sit down, grab a strawberry drink π, and let's get you fluent.
β¨ NAME β¨
sshp β the Parallel SSH Executor. that's it, that's the whole name. iconic. π
π SYNOPSIS π
sshp [OPTIONS] <command> [arg ...]
sshp [-f hosts.txt] [-g | -j] <command> [arg ...]
literally just: options, then the command, then its args. or be cute about it and pass -f, and pick either -g or -j. π«Ά
π¦ DESCRIPTION π¦
Parallel SSH executor and manager. say it with me: executor and manager. π
sshp manages multiple ssh processes at once and handles coalescing their output to your terminal. no cap. it reads newline-separated hostnames or IP addresses from standard input (or from a file you pass with -f), then starts up an ssh subprocess for each host. every child's stdout and stderr get written to sshp's own standard output. so you get one big stream of everyone's chaos, but organized. main character energy. β¨
π MODES π
sshp has three modes of execution, and you will pick one:
- line mode β line-by-line output, and this is the default, bestie.
- group mode β grouped by hostname output, that's
-g. - join mode β grouped by unique output, that's
-j.
the first two, line and group, work in largely the same way. the only difference is how the data gets buffered from the child processes and printed to the screen. line mode buffers the data line-by-line, whereas group mode does no buffering at all and prints the data the moment it's read from the child. lowkey simple. π§
the last mode, join, is the drama queen though β it buffers all data from all child processes and only produces output once every single process has finished. and instead of grouping output by host, it groups identical output together and lists the hosts that produced it. obsessed. π₯
π OPTIONS π
-a,--anonymousβ hide that hostname prefix. defaults tofalse.-c,--color on|off|autoβ set color output. defaults toauto.-d,--debugβ enable debug info. defaults tofalse.-e,--exit-codesβ show command exit codes. defaults tofalse.-f,--file fileβ a file of hosts separated by newlines. defaults to stdin.-g,--groupβ group output by hostname (that's group mode).-h,--helpβ print this message and exit.-j,--joinβ join hosts together by output (that's join mode). β οΈ this option is mutually exclusive with-a,-g, and-s.-m,--max-jobs numβ max processes to run concurrently. defaults to50.-n,--dry-runβ don't actually execute subprocesses. pretend time. π-s,--silentβ silence all output subprocess stdio. defaults tofalse.-t,--trimβ trim hostnames (remove domain) on output. defaults tofalse.-v,--versionβ print the version number and exit.-x,--exec progβ program to execute. defaults tossh.--max-line-length numβ maximum line length (in line mode only). defaults to1024.--max-output-length numβ maximum output length (in join mode only). defaults to8192.
π§ SSH OPTIONS π§
these get passed directly to ssh, no edits, no notes:
-i,--identity identβ the ssh identity file to use.-l,--login nameβ the username to login as.-o,--option key=valβ an ssh option passed inkey=valueform.-p,--port portβ the ssh port.-q,--quietβ run ssh in quiet mode.
β EXAMPLES β
say your hosts file is called hosts.txt and it looks like this, bestie:
# example hosts file
arbiter.rapture.com
cifs.rapture.com
decomp.rapture.com
sshp -f hosts.txt uname -v
run uname -v in parallel on the hosts supplied by that file. πΈ
sshp -e exit 0 < hosts.txt
parallel ssh into hosts (via stdin) and print the exit codes (-e). π
sshp -d id -un < hosts.txt
parallel ssh into hosts and run id -un with debug (-d) output enabled. π
sshp -f hosts.txt -m 1 -g command-to-run
run with -g (group mode) to group the output by hostname as it comes in. setting -m to 1 effectively turns sshp into an ssh serializer. one at a time, no chaos. π
sshp -f hosts.txt -j hostname
run with -j (join mode) to group together hosts that produce identical output. slay. β¨
π EXIT STATUS π
0β all child processes exited successfully. π1β one or more child processes exited with a non-zero status. π2β incorrect usage, like an unknown option or an invalid hosts file. π3β a system or internal program failure preventedsshpfrom running.4βsshpexited after receivingSIGTERMorSIGINT.
π SIGNALS π
SIGUSR1β send aSIGUSR1signal tosshpto print a status message to stdout. a little vibe check, if you will. πSIGINT,SIGTERMβ terminate running child processes and exit with status4.
fr fr do not forget: those two mean business, they terminate the running children and bail out with status 4. no cap.
π BUGS π
β¨https://github.com/bahamas10/sshp/issuesβ© β that's the spot, go report it there. π«Ά
π AUTHOR π
Dave Eddy (bahamas10) <dave@daveeddy.com> (https://www.daveeddy.com) β the icon who made this.
π¦ SEE ALSO π¦
π LICENSE π
MIT License. periodt. π
and that's the whole page, bestie β this was the General Commands Manual entry for SSHP(1), dated October 9, 2026, and now you know it through-and-through. go forth and parallelize responsibly πΈπ«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: sshp 1.1.5
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms