Up one level
AUTHORS 37 Sep 16 2001
COPYING 17982 Jan 23 1996
CREDITS 68 Sep 16 2001
ChangeLog 1094 Jan 15 2003
INSTALL 0 Sep 16 2001
Makefile 2898 Jan 15 2003
NEWS 0 Sep 16 2001
README 0 Sep 16 2001
README.html 7358 Aug 10 23:38
TODO 0 Sep 16 2001
fanmux 1928 Jan 15 2003
fanmux.sh 1053 Dec 2 2002
fanout 3546 Jan 15 2003
fanout-0.3-0.noarch.rpm 12048 Sep 16 2001
fanout-0.3-0.src.rpm 13401 Sep 16 2001
fanout-0.3.tar.gz 10748 Sep 16 2001
fanout-0.4-0.noarch.rpm 12228 Aug 7 2002
fanout-0.4-0.src.rpm 13672 Aug 7 2002
fanout-0.4.tar.gz 10912 Aug 7 2002
fanout-0.6.1-0.noarch.rpm 14362 Jan 15 2003
fanout-0.6.1-0.src.rpm 302020 Jan 15 2003
fanout-0.6.1.tar.gz 299030 Jan 15 2003
fanout-current.tar.gz 300691 Jan 15 2003
fanout-v0.6-50.jpg 349631 Jan 12 2003
fanout.spec 1428 Jan 15 2003
fanout.v0.1 2625 Apr 7 2000
fanout.v0.2 3270 Apr 15 2000
fansetup 1310 Jan 12 2003
fansetup.v0.5 950 Dec 2 2002
fansetup.v0.6 1310 Jan 12 2003
fanterm 1348 May 11 2003
fanterm-v0.6-50.jpg 349631 Jan 12 2003
fanterm.sh.v0.5 1053 Dec 2 2002
fanterm.v0.5 1053 Dec 2 2002
fanterm.v0.6 1926 Jan 12 2003
favicon.ico 20 Apr 6 2003
internal-gopher-menu 29 Apr 6 2003
internal-gopher-unknown 32 Apr 6 2003


Fanout and Fanterm - introduction

Fanout and fanterm are two utilities that allow you to run commands on multiple machines. The difference is that fanout only runs non-interactive commands (like dd, cat, adduser, uname -a, etc.) and pipelines built of these. The output is collected into a single display that can be viewed by less or redirected to a file.

Fanterm, on the other hand, allows you to run interactive text mode commands on multiple machines at the same time. Your keystrokes are sent to a shell or application running on each of the target systems. The output from each system is shown in a seperate xterm.

See below for examples and sample output.


Fanout allows you to run non-interactive commands on remote machines simultaneously, collecting the output in an organized fashion. The syntax is:

fanout [--noping] "{space separated list of systems}" "{commands to run}"

By default, fanout pings each of the remote machines to make sure they're up before trying to ssh to them. If they're not pingable (because of a firewall), put --noping as the first parameter.

A "System" is a bit of a misnomer; it could be a fully qualified domain, an entry in /etc/hosts, an IP address, an entry in ~/.ssh/config, or any of those preceeded with user_account@ . In short, if you can type ssh something and get a command prompt, it can be used as a "system" above.

You can run as many commands as you'd like on the remote systems. These need to be separated by semicolons. You can also run pipelines of comands, such as

cat /etc/passwd | grep '^gparker:' | awk -F: '{print $3}'
to see what uid gparker has on each of the remote systems.


Sample run

#Sample run
[wstearns@sparrow fanout]$ fanout "localhost wstearns@localhost aaa.bbb.ccc" "uptime" | less
aaa.bbb.ccc unavailable
Starting localhost
Starting wstearns@localhost
Fanout executing "uptime"
Start time Fri Apr 7 00:13:07 EDT 2000 , End time Fri Apr 7 00:13:20 EDT 2000
==== On aaa.bbb.ccc ====
==== Machine unreachable by ping

==== On localhost ====
   12:13am  up 3 days, 10:44,  0 users,  load average: 0.17, 0.17, 0.22

==== As wstearns on localhost ====
   12:13am  up 3 days, 10:44,  0 users,  load average: 0.15, 0.16, 0.22

The command(s) you execute run concurrently on each remote machine. Output does not show up until all are done.


From an xterm, type:

fansetup onemachine anothermachine user@yetathirdmachine

and you'll get 3 additional xterms. Type your commands in the original terminal; each command will be sent to each machine and you'll see the output from each machine in the other xterms. This even works for interactive commands like editors.

Here's an example:

The following characters were typed in the original window (the botom one): uptime<Enter>df /tmp<Enter>And I'm typing another command now...


Here's what works:

Here are the known limitations:

Simply getting all your xterms on one display can be an issue if you're trying to control a lot of remote systems. The command line parameter "--geometry colsxlines will shrink all subsequent xterms to that size.

fansetup --geometry 80x7 onemachine anothermachine user@yetathirdmachine



For a complete list of all files, see filelist.html.

Copyright 2000-2003 William Stearns <wstearns@pobox.com>

Last edited: 5/11/2003

Best viewed with something that can show web pages... <grin>


Name        : fanout                       Relocations: (not relocateable)
Version     : 0.6.1                             Vendor: William Stearns
Release     : 0                             Build Date: Wed Jan 15 12:54:17 2003
Install Date: (not installed)               Build Host: sparrow
Group       : Applications/Internet         Source RPM: fanout-0.6.1-0.src.rpm
Size        : 28888                            License: GPL
Signature   : RSA/MD5, Wed Jan 15 12:54:18 2003, Key ID 012334cbf322929d
Packager    : William Stearns <wstearns@pobox.com>
URL         : http://www.stearns.org/fanout/
Summary     : fanout lets you run commands on multiple remote machines simultaneously
Description :
Fanout allows you to run non-interactive commands on remote
machines simultaneously, collecting the output in an organized fashion.

The files in this collection are part of William Stearns' software archive. If any of the links on this page do not work, you may be viewing an incomplete mirror. There is a complete list of the mirror sites at the starting page for this mirror and at the primary mirror.

Generated Wed Oct 27 00:33:26 EDT 2004 by htmlfilelist version 0.8.4