Saturday, October 31, 2015


Jscad (not openjscad) is interesting but you can not save file

can be found at:


Webcad is a remedial cad program. The one plus thing about is you get the source code which is mostly javascript. You can probably add you own modules if you are so inclined. You can run it in a local machine using a browser or move it to a web server and do the same You can get it at: .

Included are some screen shots.

Webcad was removed from google code.

There is a hole in the bucket maria my dear.

Was thinking about doing a remote install with MSWindows 10. So I went to the Microsoft website to find out what to do. You need a special program to do the install. Oops if you are not running Microsoft Windows, you can not download the file. So I decided to read the documentation.  In reading the documentation, I find that you need a fully working Microsoft Windows machine to do the install. If I had a fully working machine, I would not need the software.

Microsoft Fail.


 Remote Server Administration Tools for Windows 10

    Install Instructions
        To install Remote Server Administration Tools for Windows 10

        IMPORTANT: You can install Remote Server Administration Tools for Windows 10 only on the full release of Windows 10 Professional or Windows 10 Enterprise.
            Download the Remote Server Administration Tools for Windows 10 package that is appropriate for your computer's architecture. You can either run the installer from the Download Center website, or save the download package to a local computer or share. If you save the download package to a local computer or share, double-click the installer program, WindowsTH-KB2693643-x64.msu or WindowsTH-KB2693643-x86.msu, depending on the architecture of the computer on which you want to install the tools.
            When you are prompted by the Windows Update Standalone Installer dialog box to install the update, click Yes.
            Read and accept the license terms. Click I accept. Installation requires a few minutes to finish.

        NOTE: All tools are enabled by default. You do not need to open Turn Windows features on or off in Windows 10 to enable tools that you want to use.

        To turn off specific tools
            On the desktop, click Start, click All Apps, click Windows System, and then click Control Panel.
            Click Programs, and then in Programs and Features, click Turn Windows features on or off.
            In the Windows Features dialog box, expand Remote Server Administration Tools, and then expand either Role Administration Tools or Feature Administration Tools.
            Clear the check boxes for any tools that you want to turn off. Note that if you turn off Server Manager, the computer must be restarted, and tools that were accessible from the Tools menu of Server Manager must be opened from the Administrative Tools folder.
            When you are finished turning off tools that you do not want to use, click OK.

        To uninstall Remote Server Administration Tools for Windows 10
            On the desktop, click Start, click All Apps, click Windows System, and then click Control Panel.
            Under Programs, click Uninstall a program.
            Click View installed updates.
            Right-click Update for Microsoft Windows (KB2693643), and then click Uninstall.
            When you are asked if you are sure you want to uninstall the update, click Yes.

Supported Operating System

Windows 10

    **Remote Server Administration Tools for Windows 10 can be installed ONLY on computers that are running the full release of Windows 10 Professional or Windows 10 Enterprise. or Windows 10 Education.** Remote Server Administration Tools cannot be installed on Windows RT, computers with an Advanced RISC Machine (ARM) architecture, or other system-on-chip devices.

    Remote Server Administration Tools for Windows 10 runs on both x86- and x64-based editions of the full release of Windows 10, Professional or Enterprise editions. Download and install the version that matches the architecture of the computer on which you plan to install the administration tools. If you are not sure whether your computer is x86- or x64-based, see How to determine whether a computer is running a 32-bit version or 64-bit version of the Windows operating system.

    Remote Server Administration Tools for Windows 10 is available only in English (United States) for this release. If you are running Windows 10 in a language that is not English (United States), be sure that you have installed the English (United States) language pack before you install Remote Server Administration Tools. To install the language pack, on the Start screen, click Settings. Click Time and language, click Region and language, and then click Add a language. Click English, and then select English (United States). When you are finished, close the Settings dialog box.

    IMPORTANT: Remove all older versions of Administration Tools Pack or Remote Server Administration Tools—including older prerelease versions, and releases of the tools for different languages or locales—from the computer before you install Remote Server Administration Tools for Windows 10. Only one copy at a time of Remote Server Administration Tools can be installed on a computer. If you have upgraded to Windows 10 from an older release of Windows, you will need to install Remote Server Administration Tools for Windows 10 on the computer; no earlier releases of Remote Server Administration Tools are still installed on a computer that you have upgraded to Windows 10.

    Remote Server Administration Tools for Windows 10 includes support for remote management of computers that are running the Server Core installation option or the Minimal Server Graphical Interface configuration of Windows Server Technical Preview. However, Remote Server Administration Tools for Windows 10 cannot be installed on any releases or installation options of the Windows Server operating system.

    Earlier releases of Remote Server Administration Tools (such as those for Windows 8.1) are not available--nor do they run--on Windows 10.

    Server Manager is included with Remote Server Administration Tools for Windows 10; GUI-based tools that are part of this release of Remote Server Administration Tools can be opened by using commands on the Tools menu of the Server Manager console. To use Server Manager to access and manage remote servers that are running Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, or Windows Server 2012 R2, you must install several updates on the older operating systems. For more information about requirements for using Server Manager to manage remote servers, see Manage multiple, remote servers with Server Manager.

Software download location:

Traveling chef.

When I first made the following cartoon it was pretty much tongue in cheek. But really when you think about it, it is a blessing in disguise. What if you could localize a lot of the web you use a lot without having to use any bandwidth.

Actually we already do it with our local web server now that I think about it.

If you were a traveling chef you could go choose a food menu.

and from that menu, you could do several things. Such as use several calculators.

Such a a food conversion chart.

Or even have your recipe book with you.

And the neatest of all things you could have a virtual site from the same server to show your clients what they could have for dinner.

Is that not all awesome! All from that little server without having to go to the internet.

Dumping Flash video.

We are playing flash videos one last time to convert them to ogg vorbis type format.  We are using software like "recordmydesktop" to create new videos.

Then on the server you can use code like the following:

<video width="320" height="320" controls>
   <source src="installapp.ogv" type="video/ogg">

Friday, October 30, 2015

Make things light.

You have lite beer, lite this, lite that. Why not apply the same idea to your computing. Why do you need a big fancy over bloated piece of software just to edit a web page? Well in some cases it might be required, but in most cases probably not. Available for most platforms Vim a lightweight text editor will fir the job I want to do to a tee.

Vim looks simple and possibly not very useful, but it is exactly the opposite. You even have extensive on-line help.

Even though vim is text based you can do pasting from the gui into it, so it is not completely guiless.

But to get back to what is important, we need a light program to do some editing. In this case we want to edit a web page on a remote system without ever leaving our desk. Because vim is light, it loads in quickly thereby saving time. The server we want to access could be in the next room or even half way around the world. Remote access puts it at our fingertips. Let's log into the remote server and fire up vim.

Let's look at the web page and vim at the same time. You can see I have already done some editing. It is nice to see what you are working on and the editor at the same time.

After doing some more editing. I refreshed the web page to see how things were coming along.  Oh good all the changes I needed have been made. Now I can log out of the server and move on to other things.

Oops need to go back and make one last change, but no problem.  Time to play a game!

in the game!

Have fun using vim!

Build your own net.

Remember the internet from the ITCrowd? You could build sort of your own version with the RPi-A:

You can build your own in"tra"net versus using the in"ter"net. But if you really want to be useful you might want to use a stationary satellite.

But then to get world wide coverage you might need several stationary satellites.

Do not tell me someone has not already done this. So you get:

Getting close to home.  Even if you do not have all that fancy equipment you can still build a private intranet.

Picture of Your personal intranet (Part 1).

 A bit dated, but still viable:

In part one you will get the basic setup and a few tweaks.

In part two you will get some additional tweaks.

Have fun.

Thursday, October 29, 2015

Using IOT, be careful!

You want to put your IOT device on the the net? Watch this before you do!

Using XP Safely?

One of the things I like to do is port software from one system to another. That is take the source code of a program and allow it to work on another system. Why reinvent the wheel if yo u have something that works. Just because you have a new and different system should keep from using that software. Coming from a school that says within reason if it is not broke, do not fix it then you know what to do. If I have a perfectly working system why convert it to a virtual machine and not know what the challenges might be. If I did not have an existing system, then off to the races to build a virtual machine.

What is this all leading up to. With the terminated support of Microsoft Windows XP.  XP per se is no longer viable. Mainly because of security issues. Everyone says upgrade or chunk the system. Invested too much in the system to lightly just chunk it and like most upgrades old software just no longer works after the upgrade.  So using a virtual machine does not always work for testing old software to make sure it works before moving to a new system.

Had an application of which I moved over to a new system. Could not get the new software to work in the development environment. Thought maybe there was a problem with the software. If I had chunked the old XP system, there never would have been a way to test the software to make sure it work to begin with. Fortunately the software did work with the original system.

There lies the dilemma. How do you use the old system without causing problems for your network or the original system? Since the original system was not corrupted in any way, then all I had to do was just segregate it from the internet and any potential issues.

Well what would you need?  An extra router, a host machine with an extra network interface card aka nic, the XP machine, and the appropriate cables.  First you would set up the extra router with a different lan or network than the one that connects to the internet. Say "192.168.8.x". This is to prevent any conflict and mixing of packets between the two networks. Hook you XP machine with the second router and the "192.168.8.x" network. Next hook the second port of the host machine to that second router. Set the host machine to get an ipaddress from that router. Make sure that the second nic is not joined in any way to the first nic. so the original nic will get it's ipaddress from router 1.

[Note you could use a crossover cable and static ipaddresses, but that is not elegant enough for me.]

Once you have that setup and connected, you can set up sharing between the host machine and the xp machine via the second nic only. You should be able to work securely between the two systems.  So now if you need any files from the internet, you can download them to the host and then in a second step transfer the file to the XP machine. That may see like a hassle, but it is pretty easily automated.

Also for XP, if you needed some update, you can download administrative packages that can be installed without using the internet. That is the way we used to do it. Download the package and then have it run on all the machines at the same time, so upgrading many machines was not that much of a hassle.

Eventually I will probably either chunk or find another operating system for the XP amchine. But for the time being ROI (return on investment) can still be extracted from that system.

Wednesday, October 28, 2015

My favorite linux boxes we have used over the years.

Have had several machines that I have used over the years. They are all linux or bsd and all the software is from the standard repositories with no commercial software installed. The RPi is replacing some of them.

Spent the morning working on my old PIII web server,  Updated it.  Added a web application or two. Always learning new things with it. Can not believe how much I have done with it. It is basically a lamp server, but we also use it to start ipxeboot linux operating system installs, and as a media/game server. It is sort of our own private cloud. It also runs several virtual websites.

Home made router with a PII class machine that uses compact flash for the drive and a bsd variant for the os.

The old Pogoplug converted into a local web server running arch linux. The 486 laptop runs a floppy based Pitus linux to communicate with the pogoplug.

The old NSLU2 running debian as a sort of jack of all trades server,

The linux terminal server running a Debian flavor linux for use in the classroom. Internet filtering software is also installed such as dansguardian. tinyproxy, and etc.. We originally started with floppy based 486 systems and eventually went to the pxebootable Compaq T30s. No operating system software is on the thin clients. The server does all the heavy lifting.

Linux desktop using an Apple g3 and a debian flavored linux.

My desktop running debian linux.

My mini RPi desktop with a dvd player as the monitor.

Mythtv - computerized PVR

Open source rocks.

Just say no to windows 10.

More and more It sites are recommending against Microsoft Windows 10.

Per IT news.

The 10 reasons you shouldn't upgrade to Windows 10

10. Ongoing privacy concerns
9. OneDrive regression may not work the same way
8. Missing Media Center and DVD player
7. Not much in the way of Universal apps
6. Key apps, including Mail and Edge, aren’t ready yet
5. Win10’s Tablet Mode may not appeal to you
4. The installer may not be ready for you yet
3. Forced updates
2. Ain’t broke, don’t fix
1. Questions, questions, questions

Per PC Advisor

Should I upgrade to Windows 10? Windows 8 didn't get the best reception - is Windows 10 better than Windows 7 or 8.1? How good is Windows 10?

Per Windows Central
14 reasons why you shouldn't upgrade to Windows 10 (

1. Upgrade problems
2. It's not a finished product
3. The user interface still a work in progress
4. The automatic update dilemma
5. Two places to configure your settings
configure different options.
6. No more Windows Media Center or DVD playback
7. Problems with built-in Windows apps
8. Cortana is limited to some regions
9. Shutdown and reboot take a long time
10. Devices with limited storage are still limited
11. OneDrive selective sync problem
12. Microsoft Edge isn't ready to replace your default web browser (yet)
13. Continuum is not enough
14. Privacy concerns

Windows 10 shares your files with the internet... (and the federal government)

By default, a Windows 10 update will use your bandwidth to share files on your PC with other PCs. This walk-through shows how to disable that feature--or tone it down a bit.

etc etc etc

Monday, October 26, 2015

Ten reasons for not using Microsoft Windows 10

Having been a Microsoft Windows administrator for many years supporting for the server and the desktop platforms, you acquire a distaste of Microsoft products.

10. No matter how good the virus detection software is it is always one step behind the malware. Have more important things to do than to deal with it,

9. Microsoft Windows 10 is not agile enough to do several roles such as server, router, embedded system, or et cetera without major limitations.Also not user friendly with legacy equipment.

8.  Microsoft Windows 10 is a resource hog compared to other systems. I.E. disk space required. Microsoft thinks they own your computer as they can force a download of software at anytime without your input. Makes disk management impossible

7. There are security issues no matter how safe they say it is, just not convinced. Besides, you should not have to do so many tweaks just to be able to use it. Default should be secure, not insecure. Microsoft Windows 10 does not meet government standards for privacy either. Phone home features are inexcusable.

6.  No source code. You can not easily fix Microsoft Windows 10  yourself if there is a problem. You have to wait for Microsoft to come out with a fix. Also makes it harder to port to other platforms much less you being able to tailor the software to your needs..

5. You have to license Microsoft Windows 10 for every system you use it on. That means you have to have to keep a history of product keys. Makes re installation harder than it should be. You also lose a bit of privacy on how you use your systems. You also can not make multiple copies of Microsoft Windows 10 and use it on multiple systems without Microsoft's blessing.

4. You will more than likely have to start paying a licensing fee again.  Also known as the Microsoft tax.

3. With Microsoft touting an alternative operating system, shows that they really do not have that much faith in their flagship product. You may have to revamp your systems eventually.

2. You are not only coerced into using their products, but you have to do deal with the potential being advertised products while you using your computer.

1. You only have one desktop interface, so how you interact with Microsoft Windows 10 is not up to you. In fact, you can not use it without the graphical user interface as just a command line or text only system.

Personally I think it is a challenge to use Microsoft Windows 10. Being user friendly as it could be is not a strong point

Operating system upgrade.

Before you start, make sure the operating system you want to upgrade to will work on your computer.

General steps for operating system upgrade.

1. Backup
   A. Save data files and program settings.
   B. Make a system image aka duplicate if possible.  (requires special software)
   C. Get list of installed files.
2 Get operating system.
   A.Traditional method.
    1, Download new media. (up to several gigabytes.)
        In some cases this could take several hours.
    2. Burn new operating system to media.
    3. Install operating system,
 B. Ipxeboot. (MSWindows may require a special server, but Linux and BSD do not)
     1. Boot with minimal media. (i.e. floppy, usb stick, or minimal cd)
     2. Downloads and installs minimal OS for install control.
     3. Downloads and installs the rest of the OS at the same time.
         (optional on some OS's you can install a basic system and finish the install
3. Configure system.
4. Install any additional software third party or from OS vendor as needed.
5. Restore any data and settings if possible.
6. Back up to a new system image.
7. Test system
9. Make adjustments if required.

If you made that original backup, you can always restore the system back to the way it was if your new OS fails.

Examples of ipxe boot installs for linux

Sunday, October 25, 2015


Couple of definitions first. Some people may disagree with this.

Network hub: A network hub is a network device that a single network of the same  media types. but paths are intermingled (obsolete)

Network switch: A network switch is a network device that a single network of the same  media types. but paths are separated.

Network bridge: A network bridge is a network device that connects a single or multiple network segments of different media types.

Network router: A network router is a network device that connects multiple network segments of the same media types.

Now to get confusing. Many network devices can be a combination of the above. Take for instance what a lot of people call a router is actually a combination of of a bridge and a router.

These we all pretty much know about, but what if we wanted to connect some legacy devices such as dumb terminals so they would have virtual access to the network. Actually they are just acting as an extra keyboard and screen for the host system.

Now you have turned one system into four systems. Everything would pretty much be in the text only mode, but there are a host of programs available for this type of access.  Those older systems could be put back to use in a pinch.

  • Links2, lynx, elinks – internet
  • Bashpodder – audio podcast collector
  • Alpine – email client
  • Irssi – inter relay chat
  • Centerim – instant messaging client
  • Oleo or Sc – spreadsheet
  • Vim, emacs, nani, joe, or a dozen other programs – word processing
  • Antiword – deals with office based documents
  • Putty – secure accessing tool
  • Screen -multiple seesion tool
  • Ledger – accounting (seems to be based on gnucash)
  • gpm, mc, synaptic, sed, awk, sort, ncurses, bash ,ssh, wget, curl
  • Sqllite, mysql, psql, plus man other – databases
  • Hnb – outliner to organize ideas
  •  freebasic, gcc, python, pgp, pgp-cli, perl and etc programming language tools.
  • Too many to list here – games. (i.e ninvaders)
  • Moc, aplay, mplayer, cmis and may others – music players
  • Espeak or Festival – voice synthesizer.
  • Nget and may others – news readers.
  • Cdrecord – cd buring program.
  • wird – nice calendar tool.

 Just think a Sega Dreamcast running netbsd could be a computer terminal.

You can get some rs232 to ethernet devices specific for this task, but for the price, you are better off getting a Raspberry Pi or the like Unless you want to use an old computer.  More ore information on interfacing at:


I am sure you could do this with Microsoft Windows, but have not tried it.

Saturday, October 24, 2015

Cluster management

Goal of this article is to give you a couple of tools to remotely manage multiple systems without having to do all the sneaker support.

Managing Multiple clusters with ClusterSSH also known as CSSH.

(Parts of this article adapted from:

If you're a Linux system administrator, chances are you've got more than one machine that you're responsible for on a daily basis. You may even have a bank of machines that you maintain that are similar — a farm of Web servers, for example. If you have a need to type the same command into several machines at once, you can login to each one with SSH and do it serially, or you can save yourself a lot of time and effort and use a tool like ClusterSSH.

ClusterSSH is a Tk/Perl wrapper around standard Linux tools like XTerm and SSH. As such, it'll run on just about any POSIX-compliant OS where the libraries exist — I've run it on Linux, Solaris, and Mac OS X. It requires the Perl libraries Tk (perl-tk on Debian or Ubuntu) and X11::Protocol (libx11-protocol-perl on Debian or Ubuntu), in addition to xterm and OpenSSH.


Installing ClusterSSH on a Debian or Ubuntu system is trivial — a simple
sudo apt-get install clusterssh will install it and its dependencies. It is also packaged for use with Fedora, and it is installable via the ports system on FreeBSD. There's also a MacPorts version for use with Mac OS X, if you use an Apple machine. Of course, it can also be compiled from source.

$ sudo apt-get install clusterssh

ClusterSSH can be configured either via its global configuration file — /etc/clusters, or via a file in the user's home directory called .csshrc. I tend to favor the user-level configuration as that lets multiple people on the same system to setup their ClusterSSH client as they choose. Configuration is straightforward in either case, as the file format is the same. ClusterSSH defines a "cluster" as a group of machines that you'd like to control via one interface. With that in mind, you enumerate your clusters at the top of the file in a "clusters" block, and then you describe each cluster in a separate section below.

For example, Substitute "test" for "srvr" where necessary. let's say I've got two clusters, each consisting of two machines. "Cluster1" has the machines "srvr1" and "srvr2" in it, and "Cluster2" has the machines "srvr3" and "srvr4" in it. The ~.csshrc (or /etc/clusters) control file would look like this:

clusters = cluster1 cluster2

cluster1 = srvr1 srvr2
cluster2 = srvr3 srvr4

You can also make meta-clusters — clusters that refer to clusters. If you wanted to make a cluster called "all" that encompassed all the machines, you could define it two ways. First, you could simply create a cluster that held all the machines, like the following:

clusters = cluster1 cluster2 all

cluster1 = srvr1 srvr2
cluster2 = srvr3 srvr4
all = srvr1 srvr2 srvr3 srvr4

However, my preferred method is to use a meta-cluster that encompasses the other clusters:

clusters = cluster1 cluster2 all

cluster1 = srvr1 srvr2
cluster2 = srvr3 srvr4
all = cluster1 cluster2

By calling out the "all" cluster as containing cluster1 and cluster2, if either of those clusters ever change, the change is automatically captured so you don't have to update the "all" definition. This will save you time and headache if your .csshrc file ever grows in size.
Using ClusterSSH

Using ClusterSSH is similar to launching SSH by itself. Simply running cssh -l <username> <clustername> will launch ClusterSSH and log you in as the desired user on that cluster. In the figure below, you can see I've logged into "cluster1" as myself. The small window labeled "CSSH [2]" is the Cluster SSH console window. Anything I type into that small window gets echoed to all the machines in the cluster — in this case, machines "srvr1" and "srvr2". In a pinch, you can also login to machines that aren't in your .csshrc file, simply by running cssh -l <username> <machinename1> <machinename2> <machinename3>.

If I want to send something to one of the terminals, I can simply switch focus by clicking in the desired XTerm, and just type in that window like I usually would. ClusterSSH has a few menu items that really help when dealing with a mix of machines. As per the figure below, in the "Hosts" menu of the ClusterSSH console there's are several options that come in handy.

"Retile Windows" does just that if you've manually resized or moved something. "Add host(s) or Cluster(s)" is great if you want to add another set of machines or another cluster to the running ClusterSSH session. Finally, you'll see each host listed at the bottom of the "Hosts" menu. By checking or unchecking the boxes next to each hostname, you can select which hosts the ClusterSSH console will echo commands to. This is handy if you want to exclude a host or two for a one-off or particular reason. The final menu option that's nice to have is under the "Send" menu, called "Hostname". This simply echoes each machine's hostname to the command line, which can be handy if you're constructing something host-specific across your cluster.

Caveats with ClusterSSH

Like many UNIX tools, ClusterSSH has the potential to go horribly awry if you aren't very careful with its use. I've seen ClusterSSH mistakes take out an entire tier of Web servers simply by propagating a typo in an Apache configuration. Having access to multiple machines at once, possibly as a privileged user, means mistakes come at a great cost. Take care, and double-check what you're doing before you punch that Enter key.

ClusterSSH isn't a replacement for having a configuration management system or any of the other best practices when managing a number of machines. However, if you need to do something in a pinch outside of your usual toolset or process, or if you're doing prototype work, ClusterSSH is indispensable. It can save a lot of time when doing tasks that need to be done on more than one machine, but like any power tool, it can cause a lot of damage if used


 CSSH(1p)              User Contributed Perl Documentation             CSSH(1p)

       cssh, crsh, ctel, ccon - Cluster administration tool

       cssh [options] [[user@]<server>[:port]|<tag>] [...]
       crsh [options] [[user@]<server>[:port]|<tag>] [...]
       ctel [options] [<server>[:port]|<tag>] [...]
       ccon [options] [[user@]<server>[:port]|<tag>] [...]

       The command opens an administration console and an xterm to all
       specified hosts.  Any text typed into the administration console is
       replicated to all windows.  All windows may also be typed into

       This tool is intended for (but not limited to) cluster administration
       where the same configuration or commands must be run on each node
       within the cluster.  Performing these commands all at once via this
       tool ensures all nodes are kept in sync.

       Connections are opened via ssh so a correctly installed and configured
       ssh installation is required.  If, however, the program is called by
       "crsh" then the rsh protocol is used (and the communications channel is
       insecure), or by "ctel" then telnet is used, or by "ccon" then console
       is used.

       Extra caution should be taken when editing system files such as
       /etc/inet/hosts as lines may not necessarily be in the same order.
       Assuming line 5 is the same across all servers and modifying that is
       dangerous.  Better to search for the specific line to be changed and
       double-check before changes are committed.

   Further Notes
       Please also see "KNOWN BUGS".

       ·   The dotted line on any sub-menu is a tear-off, i.e. click on it and
           the sub-menu is turned into its own window.

       ·   Unchecking a hostname on the Hosts sub-menu will unplug the host
           from the cluster control window, so any text typed into the console
           is not sent to that host.  Re-selecting it will plug it back in.

       ·   If your window manager menu bars are obscured by terminal windows
           see the "screen_reserve_XXXXX" options in the .clusterssh/config
           file (see "FILES").

       ·   If the terminals overlap too much see the "terminal_reserve_XXXXX"
           options in the .clusterssh/config file (see "FILES").

       ·   If the code is called as crsh instead of cssh (i.e. a symlink
           called crsh points to the cssh file or the file is renamed) rsh is
           used as the communications protocol instead of ssh.

       ·   If the code is called as ctel instead of cssh (i.e. a symlink
           called ctel points to the cssh file or the file is renamed) telnet
           is used as the communications protocol instead of ssh.

       ·   If the code is called as ccon instead of cssh (i.e. a symlink
           called ccon points to the cssh file or the file is renamed) console
           is used as the communications protocol instead of ssh.

       ·   When using cssh on a large number of systems to connect back to a
           single system (e.g. you issue a command to the cluster to scp a
           file from a given location) and when these connections require
           authentication (i.e. you are going to authenticate with a
           password), the sshd daemon at that location may refuse connects
           after the number specified by MaxStartups in sshd_config is
           exceeded.  (If this value is not set, it defaults to 10.)  This is
           expected behavior; sshd uses this mechanism to prevent DoS attacks
           from unauthenticated sources.  Please tune sshd_config and reload
           the SSH daemon, or consider using the ~/.ssh/authorized_keys
           mechanism for authentication if you encounter this problem.

       ·   If client windows fail to open, try running:

           "cssh -e {single host name}"

           This will test the mechanisms used to open windows to hosts.  This
           could be due to either the "-xrm" terminal option which enables
           "AllowSendEvents" (some terminal do not require this option, other
           terminals have another method for enabling it - see your terminal
           documention) or the "ConnectTimeout" ssh option (see the
           configuration option "-o" or file .clusterssh/config below to
           resolve this).

       Some of these options may also be defined within the configuration
       file.  Default options are shown as appropriate.

       --action,-a '<command>'
           Run the command in each session, i.e. "-a 'vi /etc/hosts'" to drop
           straight into a vi session.  NOTE: not all communications methods
           support this (ssh and rsh should, telnet and console will not).

       --autoclose,-A <seconds>
           Number of seconds to wait before closing finished terminal windows.

           Enable|Disable automatically quiting after the last client window
           has closed (overriding the config file)

       --cluster-file,-c <file>
           Use supplied file as additional cluster file (see also "FILES")

       --config-file,-C <file>
           Use supplied file as additional configuration file (see also

       -d  DEPRECATED.  See '--debug'.

       -D  DEPRECATED.  See '--debug'.

       --debug [number].
           Enable debugging.  Either a level can be provided or the option can
           be repeated multiple times.  Maximum level is 4.

       --evaluate,-e [user@]<hostname>[:port]
           Display and evaluate the terminal and connection arguments so
           display any potential errors.  The <hostname> is required to aid
           the evaluation.

       --font,-f "5x8"
           Specify the font to use in the terminal windows. Use standard X
           font notation.

           Show basic help text, and exit

       --list, -L
           List available cluster tags.

           Show full help test (the man page), and exit

       --master,-M <master>
           The console client program polls master as the primary server,
           rather than the default set at compile time (typically

       --options,-o "-x -o ConnectTimeout=10" - for ssh connections
       --options,-o ""                        - for rsh connections
           Specify arguments to be passed to ssh or rsh when making the

           NOTE: any "generic" change to the method (i.e. specifying the ssh
           port to use) should be done in the medium's own config file (see
           "ssh_config" and $HOME/.ssh/config).

           Output the current configuration in the same format used by the
           $HOME/.clusterssh/config file.

       --port,-p <port>
           Specify an alternate port for connections.

           IN BETA: Show history within console window.  This code is still
           being worked upon, but may help some users.

       --term-args,-t ""
           Specify arguments to be passed to terminals being used

           Enable|Disable window tiling (overriding the config file)

       --title,-T "CSSH"
           Specify the initial part of the title used in the console and
           client windows

           If a hostname resolves to multiple IP addresses, toggle whether or
           not to connect to all of them, or just the first one (see also
           config file entry)

       --username,-l $LOGNAME
           Specify the default username to use for connections (if different
           from the currently logged in user).  NOTE: will be overridden by

           Show version information and exit

       The following arguments are support:

       [user@]<hostname>[:port] ...
           Open an xterm to the given hostname and connect to the
           administration console.  An optional port number can be used if
           sshd is not listening on standard port (e.g not listening on port
           22) and ssh_config cannot be used.

       <tag> ...
           Open a series of xterms defined by <tag> within either
           /etc/clusters or $HOME/.clusterssh/clusters (see "FILES").

           Note: specifying a username on a cluster tag will override any
           usernames defined in the cluster

       The following key shortcuts are available within the console window,
       and all of them may be changed via the configuration files.

           Quit the program and close all connections and windows

           Open the 'Add Host(s) or Cluster(s)' dialogue box.  Mutiple host or
           cluster names can be entered, separated by spaces.

           Paste in the hostname part of the specific connection string to
           each client, minus any username or port, i.e.

           "scp /etc/hosts server:files/<Alt-n>.hosts"

           would replace the <Alt-n> with the client's name in each window

           Retile all the client windows

       Open up a session to 3 servers
           $ cssh server1 server2 server3

       Open up a session to a cluster of servers identified by the tag 'farm1'
       and give the controlling window a specific title, where the cluster is
       defined in one of the default configuration files
           $ cssh -T 'Web Farm Cluster 1' farm1

       Connect to different servers using different login names.  NOTE: this
       can also be achieved by setting up appropriate options in the
       .ssh/config file. Do not close cssh when last terminal exits.
           $ cssh -Q user1@server1 admin@server2

       Open up a cluster defined in a non-default configuration file
           $ cssh -c $HOME/cssh.config db_cluster

       Use telnet on port 2022 instead of ssh
           $ ctel -p 2022 server1 server2

       Use rsh instead of ssh
           $ crsh server1 server2

       Use console with master as the primary server instead of ssh
           $ ccon -M master server1 server2

           This file contains a list of tags to server names mappings.  When
           any name is used on the command line it is checked to see if it is
           a tag.  If it is a tag, then the tag is replaced with the list of
           servers.  The formated is as follows:

           <tag> [user@]<server> [user@]<server> [...]


             # List of servers in live
             live admin1@server1 admin2@server2 server3 server4

           All comments (marked by a #) and blank lines are ignored.  Tags may
           be nested, but be aware of recursive tags which are not checked

           Clusters may also be specified either directly (see "clusters"
           configuration options) or indirectly (see "extra_cluster_file"
           configuration option) in the users $HOME/.clusterssh/clusters file.

           NOTE: there is a special cluster tag called "default" - any tags or
           hosts included within this tag will be automatically opened if no
           other tags are specified on the command line.

       /etc/csshrc & $HOME/.clusterssh/config
           This file contains configuration overrides - the defaults are as
           marked.  Default options are overwritten first by the global file,
           and then by the user file.

           NOTE: values for entries do not need to be quoted unless it is
           required for passing arguments, i.e.

             terminal_allow_send_events="-xrm '*.VT100.allowSendEvents:true'"

           should be written as

             terminal_allow_send_events=-xrm '*.VT100.allowSendEvents:true'

           always_tile = yes
               Setting to anything other than "yes" does not perform window
               tiling (see also -G).

           auto_close = 5
               Close terminal window after this many seconds.  If set to 0
               will instead wait on input from the user in each window before
               closing. Can be overridden by "-K" on the command line

           auto_quit = yes
               Automatically quit after the last client window closes.  Set to
               anything other than "yes" to disable.  Can be overridden by
               "-Q" on the command line.

           clusters = <blank>
               Define a number of cluster tags in addition to (or to replace)
               tags defined in the /etc/clusters file.  The format is:

                clusters = <tag1> <tag2> <tag3>
                <tag1> = host1 host2 host3
                <tag2> = user@host4 user@host5 host6
                <tag3> = <tag1> <tag2>

               As with the /etc/clusters file, be sure not to create
               recursivly nested tags.

           comms = ssh
               Sets the default communication method (initially taken from the
               name of program, but can be overridden here).

           console_position = <null>
               Set the initial position of the console - if empty then let the
               window manager decide.  Format is '+<x>+<y>', i.e. '+0+0' is
               top left hand corner of the screen, '+0-70' is bottom left hand
               side of screen (more or less).

           extra_cluster_file = <null>
               Define an extra cluster file in the format of /etc/clusters.
               Multiple files can be specified, seperated by commas.  Both ~
               and $HOME are acceptable as a to reference the users home
               directory, i.e.

                extra_cluster_file = ~/clusters, $HOME/clus

               THIS OPTION IS DEPRECATED.  It has been left in so current
               systems continue to function as expected.

           key_addhost = Control-Shift-plus
               Default key sequence to open AddHost menu.  See below notes on

           key_clientname = Alt-n
               Default key sequence to send cssh client names to client.  See
               below notes on shortcuts.

           key_paste = Control-v
               Default key sequence to paste text into the console window.
               See below notes on shortcuts.

           key_quit = Control-q
               Default key sequence to quit the program (will terminate all
               open windows).  See below notes on shortcuts.

           key_retilehosts = Alt-r
               Default key sequence to retile host windows.  See below notes
               on shortcuts.

           max_addhost_menu_cluster_items = 6
               Maximum number of entries in the 'Add Host' menu cluster list
               before scrollbars are used

           max_host_menu_items = 30
               Maximum number of hosts to put into the host menu before
               starting a new column

           menu_host_autotearoff = 0
           menu_send_autotearoff = 0
               When set to non-0 will automatically tear-off the host or send
               menu at program start

           mouse_paste = Button-2 (middle mouse button)
               Default key sequence to paste text into the console window
               using the mouse.  See below notes on shortcuts.

           rsh_args = <blank>
           ssh_args = "-x -o ConnectTimeout=10"
               Sets any arguments to be used with the communication method
               (defaults to ssh arguments).

               NOTE: The given defaults are based on OpenSSH, not commercial
               ssh software.

               NOTE: Any "generic" change to the method (i.e. specifying the
               ssh port to use) should be done in the medium's own config file
               (see "ssh_config" and $HOME/.ssh/config).

           screen_reserve_top = 0
           screen_reserve_bottom = 60
           screen_reserve_left = 0
           screen_reserve_right = 0
               Number of pixels from the screen side to reserve when
               calculating screen geometry for tiling.  Setting this to
               something like 50 will help keep cssh from positioning windows
               over your window manager's menu bar if it draws one at that
               side of the screen.

           rsh = /path/to/rsh
           ssh = /path/to/ssh
               Depending on the value of comms, set the path of the
               communication binary.

           terminal = /path/to/terminal
               Path to the x-windows terminal used for the client.

           terminal_args = <blank>
               Arguments to use when opening terminal windows.  Otherwise
               takes defaults from $HOME/.Xdefaults or $<$HOME/.Xresources>

           terminal_font = 6x13
               Font to use in the terminal windows.  Use standard X font

           terminal_reserve_top = 5
           terminal_reserve_bottom = 0
           terminal_reserve_left = 5
           terminal_reserve_right = 0
               Number of pixels from the terminal side to reserve when
               calculating screen geometry for tiling.  Setting these will
               help keep cssh from positioning windows over your scroll and
               title bars or otherwise overlapping the windows too much.

           terminal_colorize = 1
               If set to 1 (the default), then "-bg" and "-fg" arguments will
               be added to the terminal invocation command-line.  The terminal
               will be colored in a pseudo-random way based on the host name;
               while the color of a terminal is not easily predicted, it will
               always be the same color for a given host name.  After a while,
               you will recognize hosts by their characteristic terminal

           terminal_bg_style = dark
               If set to dark, the the terminal background will be set to
               black and the foreground to the pseudo-random color.  If set to
               light, then the foreground will be black and the background the
               pseudo-random color.  If terminal_colorize is zero, then this
               option has no effect.

           terminal_size = 80x24
               Initial size of terminals to use (note: the number of lines
               (24) will be decreased when resizing terminals for tiling, not
               the number of characters (80))

           terminal_title_opt = -T
               Option used with "terminal" to set the title of the window

           terminal_allow_send_events = -xrm '*.VT100.allowSendEvents:true'
               Option required by the terminal to allow XSendEvents to be

           title = cssh
               Title of windows to use for both the console and terminals.

           unmap_on_redraw = no
               Tell Tk to use the UnmapWindow request before redrawing
               terminal windows.  This defaults to "no" as it causes some
               problems with the FVWM window manager.  If you are experiencing
               problems with redraws, you can set it to "yes" to allow the
               window to be unmapped before it is repositioned.

           use_all_a_records = no
               If a hostname resolves to multiple IP addresses, set to "yes"
               to connect to all of them, not just the first one found.

           use_hotkeys = yes
               Setting to anything other than "yes" will disable all hotkeys.

           user = $LOGNAME
               Sets the default user for running commands on clients.

           window_tiling = yes
               Perform window tiling (set to "no" to disable)

           window_tiling_direction = right
               Direction to tile windows, where "right" means starting top
               left and moving right and then down, and anything else means
               starting bottom right and moving left and then up

           NOTE: The key shortcut modifiers must be in the form "Control",
           "Alt", or "Shift", i.e. with the first letter capitalised and the
           rest lower case.  Keys may also be disabled individually by setting
           to the word "null".

           This (optional) file contains items to populate the send menu.  The
           default entry could be written as:

               <menu title="Hostname">

           Submenus can also be specified as follows:

               <menu title="Default Entries">
                 <menu title="Hostname">


           There is currently no strict format checking of this file.
           The format of the file may change in the future
           If the file exists the default entry (Hostname) is not added

           The following replacement macros are available:

           %s  Hostname part of the specific connection string to each client,
               minus any username or port

           %u  Username part of the connection string to each client

           %h  Hostname of server where cssh is being run from

           %n  <RETURN> code

           NOTE: requires XML::Simple to be installed

       1.  Catering for IPv6 addresses is minimal.  This is due to a conflict
           between IPv6 addresses and port numbers within the same server
           definition since they both use the same seperator, i.e. is the
           following just an IPv6 address, or an address + port number of


           Exactly - I cannot tell either.  the IPv6 address without a port is
           assumed in those cases where it cannot be determined and a warning
           is issued.

           Possible work arounds include:

           a.  Use square brackets around the IPv6 address, i.e.
                   [2001:db8::1428]:2323 or
                   [2001:db8::1428:2323] as appropriate so there is no

           b.  Use the full IPv6 address if also using a port number - the 8th
               colon is assumed to be the port seperator.

           c.  Define the IPv6 address in your /etc/hosts file, DNS or other
               name service lookup mechanism and use the hostname instead of
               the address.

       2.  Swapping virtual desktops can a redraw of all the terminal windows.
           This is due to a lack of distinction within Tk between switching
           desktops and minimising/maximising windows.  Until Tk can tell the
           difference between the two events, there is no fix (apart from
           rewriting everything directly in X)

       Anyone with any good ideas to fix the above bugs is more than welcome
       to get in touch and/or provide a patch.

       · If you have issues running cssh, first try:

         "cssh -e [user@]<hostname>[:port]"

         This performs two tests to confirm cssh is able to work properly with
         the settings provided within the .clusterssh/config file (or internal

                 1. test the terminal window works with the options provided

                 2. test ssh works to a host with the configured arguments

         Configuration options to watch for in ssh are

                 - Doesn't understand "-o ConnectTimeout=10" - remove the option
                   in the F<.clusterssh/config> file

                 - OpenSSH-3.8 using untrusted ssh tunnels - use "-Y" instead of "-X"
                   or use "ForwardX11Trusted yes' in ssh_config (if you change the
                   default ssh options from -x to -X)

       · If you require support, please run the following commands and post it
         on the web site in the support/problems forum:

         "perl -V"

         "perl -MTk -e 'print $Tk::VERSION,$/'"

         "perl -MX11::Protocol -e 'print $X11::Protocol::VERSION,$/'"

         "cat /etc/csshrc $HOME/.clusterssh/config"

       · Use the debug switches (-d, -D, or -dD) will turn on debugging
         output.  However, please only use this option with one host at a
         time, i.e. "cssh -d <host>" due to the amount of output produced (in
         both main and child windows).

       <>, "ssh", Tk::overview,
       X11::Protocol, "perl"

       A web site for comments, requests, bug reports and bug fixes/patches is
       available at <>

       Duncan Ferguson, "<duncan_j_ferguson at>"

       Copyright 1999-2010 Duncan Ferguson.

       This program is free software; you can redistribute it and/or modify it
       under the terms of either: the GNU General Public License as published
       by the Free Software Foundation; or the Artistic License.

       See for more information.

perl v5.14.2                      2012-06-24                          CSSH(1p)

For Microsoft users, consider the powershell and Systems Internal utilities.