

Cluster SSH (OSX) - xtacy
http://code.google.com/p/csshx/

======
res0nat0r
Also I'd recommend kanif:

<http://taktuk.gforge.inria.fr/kanif/>

This is a great tool to do mass changes to our 1200 CPU compute cluster. The
best part about this is, it will map all of the hosts with the same output
together and reduce this down to just one instance of the output, with the
affected hostnames listed together. So instead of 500 instances of the same
output data I get one. This comes in handy for finding hosts which are
different than what I'm looking for.

Simple example:

    
    
      --------------------------------------------------------------------------------
      compute[0009,0051,0187] (3 HOSTS)
      --------------------------------------------------------------------------------
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/rootvg-rootlv
                             58G   14G   42G  25% /
      --------------------------------------------------------------------------------
      compute[0013,0038,0044,0046,0065,0103,0125,0142,0195,0213,0216,0234] (12 HOSTS)
      --------------------------------------------------------------------------------
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/rootvg-rootlv
                             58G   11G   44G  19% /
      --------------------------------------------------------------------------------
        compute0247 (1 HOST)
      --------------------------------------------------------------------------------
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/rootvg-rootlv
                           58G  7.6G   47G  15% /

~~~
rw
Many companies manage their small clusters mostly by hand, even if they know
there should be a better way. You just showed me one better way--thanks!

------
drx
Cluster SSH is a terrific tool. When I learned of it I coded up a quick python
script to play selected tracks of MIDI files and used CSSH to play Bach's
Toccata and Fugue in D minor polyphonically on ~20 computers' PC speakers.

It was also fun to terrify first year students with 20 cd trays ejecting at
the same time...

~~~
kowsik
isn't ejecting cd trays so, like, 90's :) glad my mac book doesn't have one!

------
JonnieCache
This is surely the most elaborate excuse ever for not writing those
maintenance scripts?

~~~
ceejayoz
It's great for those little tweaks like adding a symbolic link.

~~~
ilikepi
meh...

    
    
        for h in host1 host2 host3; do \
            echo -e "\n$h\n===========\n"; \
            ssh $h 'ln -s /some/path /path/to/link && ls -l /path/to/link'; \
        done
    

edit: woops, left out a couple semicolons...

~~~
fragsworth
FUCKING SERIOUSLY?!

Thank you for this comment, I never knew you could pass commands to ssh.

~~~
joh6nn
i suggest perusing the ssh man, then, as it seems likely that it has other
capabilities you don't know about.

~~~
rbranson
Like how SSH agent forwarding can allow you to hop from box to box with the
SSH keys loaded onto your local machine's SSH agent? Found that one a few
months ago, made me reflect on what I've been doing in life the past 10 years
not thoroughly reading UNIX man pages.

~~~
erikig
Thanks for this one. You just added a few days to my life and helped push out
the onset of carpal tunnel/arthritis. ~ <http://www.unixwiz.net/techtips/ssh-
agent-forwarding.html>

------
tlrobinson
Neat idea, though I feel like it would be better implemented as a command line
tool using ncurses or something similar so it could be used on any Unixy
system (including logged into another server, for example)

------
scottm01
I suppose april fools is the reason we've gotten so far through this
discussion that only scattered mentions of fabric or puppet/chef?

I've certainly done my share of ssh in a for loop, but if you're seriously
considering this you almost certainly want to look into
puppet/chef/cfengine/etc.

~~~
splitrocket
Now that <a
href="[http://devstructure.com>blueprint</a>](http://devstructure.com>blueprint</a>);
exists, it's radically simple to turn your current environment into
chef/puppet deploy script. That said, distributed shell tools like this are
still tremendously useful and should be part of any cluster stack.

------
ez77
tmux equivalent:

    
    
      C-b % [n times, n panes]
      C-b M-5 [tiled layout]
      ### ssh into your servers in each pane, or whatever
      C-b : setw sy <tab> [short for "synchronize-panes"]
      ### have synced fun!

------
rilindo
This like these always makes me uneasy. Yes, you can do stuff on X number of
machines all at the same time. That also means you can break things all at the
same time.

~~~
elliottcarlson
Only use I can see if for multi-system stats - which should be handled
differently anyhow, but that's a different story. Perhaps running htop, bwm-
ng, iftop or other similar tools. Would certainly be scary to do anything
other than that...

------
taylorbuley
If you run _rm -r /_ you'll learn where they got the name "cluster" from

------
tomkinstinch
Thanks; it's always nice to learn of another option.

I've been using sshpt and pssh for this sort of thing:

<http://code.google.com/p/sshpt/>

<http://code.google.com/p/parallel-ssh/>

------
swah
This should look great in movies.

------
mccutchen
This seems like something that would be much better if integrated into a tool
like Fabric or Capistrano that already knows how to send SSH commands to a
bunch of different servers.

Does anything like that exist? I guess the downside would be fixing problems
if your command failed in 1 or 2 of 10 or 20 servers… Then you'd have to open
up a separate session to those servers to figure out what was going on.

------
technomancy
Cluster SSH is also a tool for Emacs:
<http://www.emacswiki.org/emacs/ClusterSSH>

------
th0ma5
gnu parallel might be a nice choice for this sort of thing as well.

also for clusters i wrote a python script using libcloud that connects
multiple terminals and does some bastardized map/reduce type helper ideas:

<http://gist.github.com/281504>

------
bound008
This tool looks awesome. For some of us, it's the first time at the running 20
EC2 instances at once rodeo, and a tool like this is helpful for testing and
developing the parallelization and maintenance tasks that everyone else is
being condescending about.

------
ajslater
screen. worked well for 200 machines.

    
    
      #!/bin/bash
      if [[ "$1" = "-n" ]]; then
        DETACH=
        shift;
      else
        DETACH="screen -d -m"
      fi
    
      for i in $NODES; do
        echo $DETACH ssh $i $@
        $DETACH ssh $i $@
      done;

------
dacort
Reminds me of Tentakel.
[http://sourceforge.net/projects/tentakel/files/tentakel/tent...](http://sourceforge.net/projects/tentakel/files/tentakel/tentakel-2.2/)

Came in useful from time-to-time.

------
9999
I use csshx, and I highly recommend it. One annoyance is that on password
entry screens it occasionally does not show the password prompt. But generally
speaking it's a great utility.

~~~
flexd
You should be using key authentication anyway so that shouldn't be a problem
:-)

------
zackb
I've been using this tool for about a year and absolutely love it. It really
comes in handy managing messes of EC2 instances.

------
aastaneh
I use pdsh for this sort of thing.

------
hoprocker
This is nice as a proof-of-concept. Now it needs to become a patched version
of Gnu screen.

------
TheRealGL
Does this mean that doing rm -Rf as root mean that one is technically
"clusterfucked"?

------
lg
i do something like this with multiple shell buffers and an emacs macro that
pastes what i just wrote and hits enter in every buffer.

------
brush
iTerm2 has this feature with a much nicer layout.

<http://www.iterm2.com>

~~~
marcc
Where is this in iTerm2?

~~~
ptomato
I would assume he's referring to "Send Input To All Tabs" in the Shell menu.

~~~
marcc
Ah. I've never seen that before. Nice to know. But I'm not sure this is a
"nicer layout". And I'm an iTerm2 heavy user.

------
stretchwithme
good stuff. can it also compare the response of each and report which one of
these is not like the others?

------
hinathan
Why not just use dsh for this?

------
techscruggs
iterm's "send input to all tabs" does this rather well.

------
gooddelta
April fools?

~~~
koenigdavidmj
Well, ClusterSSH (a version that runs on Linux and uses xterm instances) is
one of my everyday administration tools.

It's under 15 identical machines, so it is more trouble than it is worth to
set up Puppet or something of that sort.

~~~
seletz
Oh my!

I use fabric <http://fabfile.org/> which is insanely easy to use.

I use it even if I have __one __machine to deploy to. Better keep them
deployments repeatable ...

~~~
koenigdavidmj
Still, that makes me write a bit of Python. Not going to do that for a simple
symlink change or one-off task of similar complexity.

~~~
trafficlight
You can actually do that with Fabric, too.

    
    
      fab -H system1,system2,system3 -- uname -a

