The latest Massh OSX Package is : massh-2.0-58.zip
The latest Ambit OSX Package is : ambit-2.0-40.zip
I finally got around to providing a link to the OSX packages that I generated for Massh & Ambit about a year ago for my friend Felipe. Failing to be Johnny-On-The-Spot for stuff that ALREADY EXISTS and therefore required almost no effort to provide is obviously LAME. Srsly, I got no excuse and wouldn't put up with one from anyone else, so....
In other news: I've had Massh & Ambit updates in the can for months but sadly never find the time to do an actual release (Freshmeat, Sourceforge updates, announcements, packages, documentation, writeups, new features & some douchy bragging). I've had new ideas for Massh, Ambit & a bunch of stuff that I keep putting off releasing for a while as well. Hopefully soon I will get some of it out there. As for those that have sent requests, made suggestions and pointed out bugs, I have not forgotten about any of you and will be sure to either incorporate your *stuff* or (at very least explain) why your *stuff* wasn't incorporated.
Complete Rewrite
Cleaner, More Efficient, Faster, More Modular
Divorced From Ambit
Ambit was always going to become general purpose tool and not beholden to Massh, regardless of the fact that Ambit wouldn't exist without Massh's dire need for it. Massh no longer cares what supplies it with an enumerated list of hosts. Additionally Massh has an option for specifying what (if not Ambit) will enumerate hosts. In the near future both NIS NetGroups and Genders Host Ranges will be tested and supported.
Simplified CLI
Massh commands are shorter, easier to remember, devoid of the typical dashed-option minefield and grammatically self evident.
Pull Functionality
Pull the same file from hundreds of hosts in seconds - each file gets stored in hostname derived directories.
Script Push and Run Is Now ScriptPushAndRun
No longer is this a two (sometimes three) step process for each host (push, then run, then cleanup). Massh'ed scripts are now piped over the single (per host) SSH connection for execution, but never stored on the remote host.
Configurable Options
System wide and User specific options (# of Parallel connections, Massh run Timeout, Debug, SSHLogLevel, etc.) can be changed via simple dialogues.
Short Commands
Add shortening or abbreviating to the already leaner cleaner CLI syntax (massh list options == massh ls opts).
Connection Persistence
If Massh is run in combination with OpenSSH >5.6 it will adhere to the following options if set : ControlMaster ControlPath ControlPersist. When these options are set Massh is able to achieve sub-second results to hundreds of hosts (results will vary - how cheesy does that sound?).
Multi-line Output Separator
Massh continues to stand apart when it comes to perfectly sequenced, grouped, multi-line output by adding an option for clear separation between each host's output.
Configurable Default Behavior
The SubCommand option provides the ability to lock in Massh's default behavior (verbose [full output], push, execute [script], etc.). It's also another way to further simplify/shorten Massh commands.
Now 100% More Man
Massh now comes with a man page in addition to the default help txt (massh [ help | -h | --help ]) and the documentation that is being continually updated here on this site.
Go ahead, you know you want to check out MAN MASSH ;^)
Complete Rewrite
Cleaner, More Efficient, Faster, More Modular.
Network HostGroups
In addition to Ambit being able to reference User Specific and System Level HostGroups it can now enumerate hosts that are defined, presented and referenced on/over the network. Ambit's 'Domain' option allows for the specifying a DNS domain that Ambit will query for DNS TXT records that contain Fully Qualified Domain Names or Ambit expandable strings. The choice of TXT records in DNS was initially trivial. Now that choice has proven to be a very fortuitous (hosts and host groupings are manged in the same place - TXT records are very flexible).
Divorced From Massh
Ambit began life as a purpose-built hostname enumerator and host string expander for Massh.
Command Expansion plus Execution
If Ambit is passed a command it will attempt to expand it in the same manner that it expands 'host strings', run each iteration of the expanded command, one at a time (think 'for loop'). Command Expansion and Execution augments Bash Brace Expansion by being able to both expand and execute commands that Brace Expansion often can't.HostGroup Location plus Format Changes
System HostGroups now default to /var/ambit/hosts - User HostGroups default to $HOME/.ambit/hosts. HostGroup files are no longer prefixed with 'hosts'. HostGroup files need to have the first three lines formatted in a specific way in order to show up in Ambit's HostGroup listings.
Colon's No Longer Concatenate Multiple HostGroups
In the past colons were used to combine more than one HostGroup on the command line with the result being Ambit output consisting of all hosts from all colon separated groups (ex. webservers:dbservers:appservers). This is now achieved using a typical Ambit expandable string (ex. [web,db,app]servers).
HostGroup Control
Ambit now provides simple dialogues for quickly creating, editing, listing and deleting User and System HostGroups.
OPTION CONTROLS
Ambit also provides the ability to edit, override, list and delete options that were previously provided with a dashed option on the command line.
SPECIAL HOSTGROUP 'down'
By default Ambit creates the System HostGroup 'down' (with a blank file /var/ambit/hosts/down) that should be populated with any hosts either known to be down or needing to be avoided. In order to ensure user choice Ambit will not honor hosts in /var/ambit/hosts/down without the existence of $HOME/.ambit/hosts/down.
NOW 100% MORE MAN
Ambit now comes with a man page in addition to the default help txt (ambit [ help | -h | --help ]) and the documentation that is being continually updated @ http://m.a.tt/er/ambit.
Here's a short video that demonstrates the improved performance of the latest releases of Massh.
Download full sized video: massh-is-fast.mov
A couple months back I put all my *fun* projects on hold for a day or two in order to finally deal with something that was becoming a huge waste of time (not to mention a pain in the ass). Of course I am referring to bathing...err I mean, manually building and deploying packages to my environment - specifically RPM's. I was able to work out something that tracks revision updates from Subversion, updates the local copy for projects that are updated, {cleans,readies} a build tree, builds an RPM and finally copies it to the directory where some Yum automation is happening. One of the slick things I managed to pull off was the establishment of a single RPM spec template that I use to automatically generate spec files for all projects (8 of them at the moment). I really like not having to deal with spec files anymore.
Anyway, the last bit of functionality that I needed to incorportate into my SARGENT BADASS auto packaging extravaganza, was the ability to automate the signing of all packages with GnuPG. I was able to finally work this out last night and in celebration I am posting my key for the world to ignore:
http://m.a.tt/er/RPM-GPG-KEY-matter
In order for RPM to verify that the package you have was signed by me (and therefore AWESOME or something) you will need to import my key into your RPM database:
outbreakmonkey $ sudo rpm --import http://m.a.tt/er/RPM-GPG-KEY-matter outbreakmonkey $
New versions of Massh and Ambit (both completely re-designed) will be available in the next day or two. Some of the changes have come in the area of performance. Below is an example of Massh'in to ~200 hosts and running uname in less than a second - 0.748s to be exact.
$ time massh west200 uname -rpo westhost1 : 2.6.9-34.ELsmp i686 GNU/Linux westhost10 : 2.6.9-34.ELsmp i686 GNU/Linux westhost100 : 2.6.9-34.ELsmp i686 GNU/Linux westhost101 : 2.6.9-34.ELsmp i686 GNU/Linux westhost102 : 2.6.9-34.ELsmp i686 GNU/Linux westhost103 : 2.6.9-34.ELsmp i686 GNU/Linux westhost104 : 2.6.9-34.ELsmp i686 GNU/Linux westhost105 : 2.6.9-34.ELsmp i686 GNU/Linux westhost106 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost107 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost108 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost109 : 2.6.9-34.ELsmp x86_64 GNU/Linux westhost11 : 2.6.9-34.ELsmp i686 GNU/Linux westhost110 : 2.6.9-34.ELsmp x86_64 GNU/Linux westhost111 : 2.6.9-34.ELsmp x86_64 GNU/Linux westhost112 : 2.6.9-34.ELsmp x86_64 GNU/Linux westhost113 : 2.6.9-22.ELsmp i686 GNU/Linux westhost114 : 2.6.9-22.ELsmp i686 GNU/Linux westhost117 : 2.6.9-34.ELsmp i686 GNU/Linux westhost118 : 2.6.9-34.ELsmp i686 GNU/Linux westhost119 : 2.6.9-34.ELsmp i686 GNU/Linux westhost12 : 2.6.9-34.ELsmp i686 GNU/Linux westhost120 : 2.6.9-34.ELsmp i686 GNU/Linux westhost121 : 2.6.9-34.ELsmp i686 GNU/Linux westhost122 : 2.6.9-34.ELsmp i686 GNU/Linux westhost123 : 2.6.9-34.ELsmp i686 GNU/Linux westhost124 : 2.6.9-34.ELsmp i686 GNU/Linux westhost125 : 2.6.9-34.ELsmp i686 GNU/Linux westhost126 : 2.6.9-34.ELsmp i686 GNU/Linux westhost127 : 2.6.9-34.ELsmp i686 GNU/Linux westhost128 : 2.6.9-34.ELsmp i686 GNU/Linux westhost129 : 2.6.9-34.ELsmp i686 GNU/Linux westhost13 : 2.6.9-34.ELsmp i686 GNU/Linux westhost130 : 2.6.9-34.ELsmp i686 GNU/Linux westhost131 : 2.6.9-67.ELsmp i686 GNU/Linux westhost132 : 2.6.9-34.ELsmp i686 GNU/Linux westhost133 : 2.6.9-34.ELsmp i686 GNU/Linux westhost134 : 2.6.9-34.ELsmp i686 GNU/Linux westhost135 : 2.6.9-34.ELsmp i686 GNU/Linux westhost136 : 2.6.9-34.ELsmp i686 GNU/Linux westhost137 : 2.6.9-34.ELsmp i686 GNU/Linux westhost138 : 2.6.9-34.ELsmp i686 GNU/Linux westhost139 : 2.6.9-34.ELsmp i686 GNU/Linux westhost14 : 2.6.9-34.ELsmp i686 GNU/Linux westhost140 : 2.6.9-34.ELsmp i686 GNU/Linux westhost141 : 2.6.9-34.ELsmp i686 GNU/Linux westhost142 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost143 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost144 : 2.6.9-34.ELsmp i686 GNU/Linux westhost145 : 2.6.9-34.ELsmp i686 GNU/Linux westhost146 : 2.6.9-34.ELsmp i686 GNU/Linux westhost147 : 2.6.9-34.ELsmp i686 GNU/Linux westhost148 : 2.6.9-34.ELsmp i686 GNU/Linux westhost149 : 2.6.9-34.ELsmp i686 GNU/Linux westhost15 : 2.6.9-34.ELsmp i686 GNU/Linux westhost150 : 2.6.9-34.ELsmp i686 GNU/Linux westhost151 : 2.6.9-34.ELsmp i686 GNU/Linux westhost152 : 2.6.9-34.ELsmp i686 GNU/Linux westhost153 : 2.6.9-34.ELsmp i686 GNU/Linux westhost154 : 2.6.9-34.ELsmp i686 GNU/Linux westhost155 : 2.6.9-34.ELsmp i686 GNU/Linux westhost156 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost158 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost159 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost16 : 2.6.9-34.ELsmp i686 GNU/Linux westhost160 : 2.6.9-34.ELsmp i686 GNU/Linux westhost161 : 2.6.9-34.ELsmp i686 GNU/Linux westhost162 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost163 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost164 : 2.6.9-34.ELsmp i686 GNU/Linux westhost165 : 2.6.9-34.ELsmp i686 GNU/Linux westhost166 : 2.6.9-34.ELsmp i686 GNU/Linux westhost167 : 2.6.9-34.ELsmp i686 GNU/Linux westhost168 : 2.6.9-34.ELsmp i686 GNU/Linux westhost169 : 2.6.9-34.ELsmp i686 GNU/Linux westhost17 : 2.6.9-34.ELsmp i686 GNU/Linux westhost170 : 2.6.9-34.ELsmp i686 GNU/Linux westhost171 : 2.6.9-34.ELsmp i686 GNU/Linux westhost172 : 2.6.9-34.ELsmp i686 GNU/Linux westhost173 : 2.6.9-34.ELsmp i686 GNU/Linux westhost174 : 2.6.9-34.ELsmp i686 GNU/Linux westhost175 : 2.6.9-34.ELsmp i686 GNU/Linux westhost176 : 2.6.9-34.ELsmp i686 GNU/Linux westhost177 : 2.6.9-34.ELsmp i686 GNU/Linux westhost178 : 2.6.9-34.ELsmp i686 GNU/Linux westhost179 : 2.6.9-34.ELsmp i686 GNU/Linux westhost18 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost180 : 2.6.9-34.ELsmp i686 GNU/Linux westhost181 : 2.6.9-34.ELsmp i686 GNU/Linux westhost182 : 2.6.9-34.ELsmp i686 GNU/Linux westhost183 : 2.6.9-34.ELsmp i686 GNU/Linux westhost184 : 2.6.9-34.ELsmp i686 GNU/Linux westhost185 : 2.6.9-34.ELsmp i686 GNU/Linux westhost186 : 2.6.9-34.ELsmp i686 GNU/Linux westhost187 : 2.6.9-34.ELsmp i686 GNU/Linux westhost188 : 2.6.9-34.ELsmp i686 GNU/Linux westhost19 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost190 : 2.6.9-34.ELsmp i686 GNU/Linux westhost191 : 2.6.9-34.ELsmp i686 GNU/Linux westhost192 : 2.6.9-34.ELsmp i686 GNU/Linux westhost193 : 2.6.9-34.ELsmp i686 GNU/Linux westhost194 : 2.6.9-34.ELsmp i686 GNU/Linux westhost195 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost196 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost197 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost198 : 2.6.9-34.ELsmp i686 GNU/Linux westhost199 : 2.6.9-34.ELsmp i686 GNU/Linux westhost2 : 2.6.9-34.ELsmp i686 GNU/Linux westhost20 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost200 : 2.6.9-34.ELsmp i686 GNU/Linux westhost21 : 2.6.9-34.ELsmp i686 GNU/Linux westhost22 : 2.6.9-34.ELsmp i686 GNU/Linux westhost23 : 2.6.9-34.ELsmp i686 GNU/Linux westhost24 : 2.6.9-34.ELsmp i686 GNU/Linux westhost25 : 2.6.9-34.ELsmp i686 GNU/Linux westhost26 : 2.6.9-34.ELsmp i686 GNU/Linux westhost27 : 2.6.9-34.ELsmp i686 GNU/Linux westhost28 : 2.6.9-34.ELsmp i686 GNU/Linux westhost29 : 2.6.9-34.ELsmp i686 GNU/Linux westhost3 : 2.6.9-34.ELsmp i686 GNU/Linux westhost30 : 2.6.9-34.ELsmp i686 GNU/Linux westhost31 : 2.6.9-34.ELsmp i686 GNU/Linux westhost32 : 2.6.9-34.ELsmp i686 GNU/Linux westhost33 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost35 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost37 : 2.6.9-34.ELsmp i686 GNU/Linux westhost38 : 2.6.9-34.ELsmp i686 GNU/Linux westhost39 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost4 : 2.6.9-34.ELsmp i686 GNU/Linux westhost41 : 2.6.9-34.ELsmp i686 GNU/Linux westhost42 : 2.6.9-34.ELsmp i686 GNU/Linux westhost43 : 2.6.9-34.ELsmp i686 GNU/Linux westhost40 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost44 : 2.6.9-34.ELsmp i686 GNU/Linux westhost45 : 2.6.9-34.ELsmp i686 GNU/Linux westhost46 : 2.6.9-34.ELsmp i686 GNU/Linux westhost47 : 2.6.9-34.ELsmp i686 GNU/Linux westhost48 : 2.6.9-34.ELsmp i686 GNU/Linux westhost49 : 2.6.9-34.ELsmp i686 GNU/Linux westhost50 : 2.6.9-34.ELsmp i686 GNU/Linux westhost5 : 2.6.9-34.ELsmp i686 GNU/Linux westhost51 : 2.6.9-34.ELsmp i686 GNU/Linux westhost52 : 2.6.9-34.ELsmp i686 GNU/Linux westhost53 : 2.6.9-34.ELsmp i686 GNU/Linux westhost54 : 2.6.9-34.ELsmp i686 GNU/Linux westhost55 : 2.6.9-34.ELsmp i686 GNU/Linux westhost57 : 2.6.9-34.ELsmp i686 GNU/Linux westhost56 : 2.6.9-34.ELsmp i686 GNU/Linux westhost58 : 2.6.9-34.ELsmp i686 GNU/Linux westhost59 : 2.6.9-34.ELsmp i686 GNU/Linux westhost6 : 2.6.9-34.ELsmp i686 GNU/Linux westhost60 : 2.6.9-34.ELsmp i686 GNU/Linux westhost61 : 2.6.9-34.ELsmp i686 GNU/Linux westhost62 : 2.6.9-34.ELsmp i686 GNU/Linux westhost63 : 2.6.9-34.ELsmp i686 GNU/Linux westhost64 : 2.6.9-34.ELsmp i686 GNU/Linux westhost65 : 2.6.9-34.ELsmp i686 GNU/Linux westhost66 : 2.6.9-34.ELsmp i686 GNU/Linux westhost67 : 2.6.9-34.ELsmp i686 GNU/Linux westhost68 : 2.6.9-34.ELsmp i686 GNU/Linux westhost69 : 2.6.9-34.ELsmp i686 GNU/Linux westhost7 : 2.6.9-34.ELsmp i686 GNU/Linux westhost70 : 2.6.9-34.ELsmp i686 GNU/Linux westhost72 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost73 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost74 : 2.6.9-34.ELsmp i686 GNU/Linux westhost75 : 2.6.9-34.ELsmp i686 GNU/Linux westhost76 : 2.6.9-34.ELsmp i686 GNU/Linux westhost77 : 2.6.9-34.ELsmp i686 GNU/Linux westhost79 : 2.6.9-34.ELsmp i686 GNU/Linux westhost8 : 2.6.9-34.ELsmp i686 GNU/Linux westhost80 : 2.6.9-34.ELsmp i686 GNU/Linux westhost82 : 2.6.9-34.ELsmp i686 GNU/Linux westhost81 : 2.6.9-34.ELsmp i686 GNU/Linux westhost83 : 2.6.9-34.ELsmp i686 GNU/Linux westhost84 : 2.6.9-34.ELsmp i686 GNU/Linux westhost85 : 2.6.9-34.ELsmp i686 GNU/Linux westhost86 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost87 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost88 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost89 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost9 : 2.6.9-34.ELsmp i686 GNU/Linux westhost90 : 2.6.9-34.ELsmp i686 GNU/Linux westhost91 : 2.6.9-34.ELsmp i686 GNU/Linux westhost92 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost93 : 2.6.9-67.ELsmp x86_64 GNU/Linux westhost94 : 2.6.9-34.ELsmp i686 GNU/Linux westhost95 : 2.6.9-34.ELsmp i686 GNU/Linux westhost96 : 2.6.9-34.ELsmp i686 GNU/Linux westhost97 : 2.6.9-34.ELsmp i686 GNU/Linux westhost98 : 2.6.9-34.ELsmp i686 GNU/Linux westhost99 : 2.6.9-34.ELsmp i686 GNU/Linux real 0m0.748s user 0m0.386s sys 0m0.590s