mirror of
https://github.com/duncs/clusterssh.git
synced 2025-04-21 09:09:06 +00:00
Initial reworking of options code
This commit is contained in:
parent
17cbd36d7c
commit
31d2d6dd07
8 changed files with 2026 additions and 2 deletions
38
Build.PL
38
Build.PL
|
@ -1,11 +1,14 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use Cwd;
|
||||
|
||||
use Module::Build;
|
||||
|
||||
my $class = Module::Build->subclass(
|
||||
class => "Module::Build::Custom",
|
||||
code => q{
|
||||
use File::Slurp;
|
||||
|
||||
sub ACTION_email {
|
||||
my ($self, @args) = @_;
|
||||
|
||||
|
@ -39,6 +42,40 @@ SF release: http://sourceforge.net/projects/clusterssh/files/2.%20ClusterSSH%20S
|
|||
SF/net git repo: https://sourceforge.net/scm/?type=git&group_id=89139
|
||||
==========
|
||||
EOF
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub ACTION_build {
|
||||
my ($self, @args) = @_;
|
||||
|
||||
print "Building pod files",$/;
|
||||
|
||||
my $common_file = File::Slurp::read_file('pod_data/common_file');
|
||||
die "Failed to read 'pod_data/common_file'" unless($common_file);
|
||||
|
||||
# Each file in bin/ should have a file within pod_data.
|
||||
# If not, there is a problem.
|
||||
my @files=glob('bin/*');
|
||||
foreach my $binfile (@files) {
|
||||
next unless(-f $binfile);
|
||||
(my $podfile = $binfile) =~ s!bin!pod_data!;
|
||||
warn "checking $podfile",$/;
|
||||
|
||||
if(!-f $podfile) {
|
||||
warn "$podfile does not exist",$/;
|
||||
next;
|
||||
}
|
||||
my $pod = read_file( $podfile );
|
||||
warn "Unable to read '$podfile'" unless ($pod);
|
||||
|
||||
$pod =~ s/%FILES%/$common_file/;
|
||||
|
||||
my $options = qx{ $binfile -h 2>&1 };
|
||||
warn "Unable to run '$binfile -h'" unless ($options);
|
||||
|
||||
}
|
||||
|
||||
$self->SUPER::ACTION_build;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
@ -76,6 +113,7 @@ my $build = $class->new(
|
|||
'Test::DistManifest' => 0,
|
||||
'Test::Differences' => 0,
|
||||
'CPAN::Changes' => 0.27,
|
||||
'File::Slurp' => 0,
|
||||
},
|
||||
configure_requires => { 'Module::Build' => 0, },
|
||||
add_to_cleanup => ['App-ClusterSSH-*'],
|
||||
|
|
12
bin/cssh
12
bin/cssh
|
@ -8,9 +8,17 @@ use lib $FindBin::Bin. '/../lib/perl5';
|
|||
use App::ClusterSSH;
|
||||
|
||||
my $app = App::ClusterSSH->new();
|
||||
|
||||
$app->options->add_common_ssh_options;
|
||||
|
||||
$app->add_option(
|
||||
spec => 'freddo|z',
|
||||
help => "--freddo\n\tSome help output",
|
||||
);
|
||||
|
||||
$app->run();
|
||||
|
||||
__END__
|
||||
__DATA__
|
||||
|
||||
=pod
|
||||
|
||||
|
@ -125,6 +133,8 @@ C<$HOME/.clusterssh/config> below to resolve this).
|
|||
Some of these options may also be defined within the configuration file.
|
||||
Default options are shown as appropriate.
|
||||
|
||||
%OPTIONS%
|
||||
|
||||
=over
|
||||
|
||||
=item --action,-a '<command>'
|
||||
|
|
1
bin/ctel
1
bin/ctel
|
@ -1 +0,0 @@
|
|||
cssh
|
890
bin/ctel
Executable file
890
bin/ctel
Executable file
|
@ -0,0 +1,890 @@
|
|||
#!/usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use FindBin;
|
||||
use lib $FindBin::Bin. '/../lib';
|
||||
use lib $FindBin::Bin. '/../lib/perl5';
|
||||
use App::ClusterSSH;
|
||||
|
||||
my $app = App::ClusterSSH->new();
|
||||
|
||||
$app->options->add_common_ssh_options;
|
||||
|
||||
$app->add_option(
|
||||
spec => 'freddo|z',
|
||||
help => "--freddo\n\tSome help output",
|
||||
);
|
||||
|
||||
$app->run();
|
||||
|
||||
__DATA__
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
ctel - Cluster administration tool
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
S<< ctel [options] [<server>[:port]|<tag>] [...] >>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
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 directly.
|
||||
|
||||
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.
|
||||
It's better to search for the specific line to be changed and double-check
|
||||
before changes are committed.
|
||||
|
||||
=head2 Further Notes
|
||||
|
||||
Please also see L</KNOWN BUGS>.
|
||||
|
||||
=over
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
If your window manager menu bars are obscured by terminal windows see
|
||||
the C<screen_reserve_XXXXX> options in the F<$HOME/.clusterssh/config> file (see L</"FILES">).
|
||||
|
||||
=item *
|
||||
|
||||
If the terminals overlap too much see the C<terminal_reserve_XXXXX>
|
||||
options in the F<$HOME/.clusterssh/config> file (see L</"FILES">).
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
If client windows fail to open, try running:
|
||||
|
||||
C<< cssh -e {single host name} >>
|
||||
|
||||
This will test the mechanisms used to open windows to hosts. This could
|
||||
be due to either the C<-xrm> terminal option which enables C<AllowSendEvents>
|
||||
(some terminals do not require this option, other terminals have another
|
||||
method for enabling it - see your terminal documentation) or the
|
||||
C<ConnectTimeout> ssh option (see the configuration option C<-o> or file
|
||||
C<$HOME/.clusterssh/config> below to resolve this).
|
||||
|
||||
=back
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
Some of these options may also be defined within the configuration file.
|
||||
Default options are shown as appropriate.
|
||||
|
||||
%OPTIONS%
|
||||
|
||||
=over
|
||||
|
||||
=item --action,-a '<command>'
|
||||
|
||||
Run the command in each session, e.g. C<-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).
|
||||
|
||||
=item --autoclose,-A <seconds>
|
||||
|
||||
Number of seconds to wait before closing finished terminal windows.
|
||||
|
||||
=item --autoquit,-q|--no-autoquit,-Q
|
||||
|
||||
Enable|Disable automatically quiting after the last client window has closed
|
||||
(overriding the config file)
|
||||
|
||||
=item --cluster-file,-c <file>
|
||||
|
||||
Use supplied file as additional cluster file (see also L</"FILES">)
|
||||
|
||||
=item --config-file,-C <file>
|
||||
|
||||
Use supplied file as additional configuration file (see also L</"FILES">)
|
||||
|
||||
=item -d
|
||||
|
||||
DEPRECATED. See '--debug'.
|
||||
|
||||
=item -D
|
||||
|
||||
DEPRECATED. See '--debug'.
|
||||
|
||||
=item --debug [number].
|
||||
|
||||
Enable debugging. Either a level can be provided or the option can be
|
||||
repeated multiple times. Maximum level is 4.
|
||||
|
||||
=item --evaluate,-e [user@]<hostname>[:port]
|
||||
|
||||
Display and evaluate the terminal and connection arguments to display any
|
||||
potential errors. The <hostname> is required to aid the evaluation.
|
||||
|
||||
=item --font,-f "5x8"
|
||||
|
||||
Specify the font to use in the terminal windows. Use standard X font notation.
|
||||
|
||||
=item --help,-h|-?
|
||||
|
||||
Show basic help text, and exit
|
||||
|
||||
=item --list, -L
|
||||
|
||||
List available cluster tags.
|
||||
|
||||
=item --man,-H
|
||||
|
||||
Show full help text (the man page), and exit
|
||||
|
||||
=item --master,-M <master>
|
||||
|
||||
The console client program polls master as the primary server, rather than the
|
||||
default set at compile time (typically ``console'').
|
||||
|
||||
=item --options,-o "-x -o ConnectTimeout=10" - for ssh connections
|
||||
|
||||
=item --options,-o "" - for rsh connections
|
||||
|
||||
Specify arguments to be passed to ssh or rsh when making the connection.
|
||||
|
||||
B<NOTE:> any "generic" change to the method (e.g., specifying the ssh port to use)
|
||||
should be done in the medium's own config file (see C<ssh_config> and
|
||||
F<$HOME/.ssh/config>).
|
||||
|
||||
=item --output-config,-u
|
||||
|
||||
Output the current configuration in the same format used by the
|
||||
F<$HOME/.clusterssh/config> file.
|
||||
|
||||
=item --port,-p <port>
|
||||
|
||||
Specify an alternate port for connections.
|
||||
|
||||
=item --show-history,-s
|
||||
|
||||
IN BETA: Show history within console window. This code is still being
|
||||
worked upon, but may help some users.
|
||||
|
||||
=item --tag-file,-r <file>
|
||||
|
||||
Use supplied file as additional tag file (see also L</"FILES">)
|
||||
|
||||
=item --term-args,-t ""
|
||||
|
||||
Specify arguments to be passed to terminals being used
|
||||
|
||||
=item --tile,-g|--no-tile,-G
|
||||
|
||||
Enable|Disable window tiling (overriding the config file)
|
||||
|
||||
=item --title,-T "CSSH"
|
||||
|
||||
Specify the initial part of the title used in the console and client windows
|
||||
|
||||
=item --unique-servers,-m
|
||||
|
||||
Connect to each host only once
|
||||
|
||||
=item --use_all_a_records,-A
|
||||
|
||||
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)
|
||||
|
||||
=item --username,-l $LOGNAME
|
||||
|
||||
Specify the default username to use for connections (if different from the
|
||||
currently logged in user). B<NOTE:> will be overridden by <user>@<host>
|
||||
|
||||
=item --version,-v
|
||||
|
||||
Show version information and exit
|
||||
|
||||
=back
|
||||
|
||||
=head1 ARGUMENTS
|
||||
|
||||
The following arguments are supported:
|
||||
|
||||
=over
|
||||
|
||||
=item [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 the standard port (i.e., not listening on port 22) and ssh_config cannot
|
||||
be used.
|
||||
|
||||
=item <tag> ...
|
||||
|
||||
Open a series of xterms defined by <tag> in one of the supplementary
|
||||
configuration files (see L</"FILES">).
|
||||
|
||||
Note: specifying a username on a cluster tag will override any usernames
|
||||
defined in the cluster
|
||||
|
||||
=back
|
||||
|
||||
=head1 KEY SHORTCUTS
|
||||
|
||||
The following key shortcuts are available within the console window, and all
|
||||
of them may be changed via the configuration files.
|
||||
|
||||
=over
|
||||
|
||||
=item Control-q
|
||||
|
||||
Quit the program and close all connections and windows
|
||||
|
||||
=item Control-+
|
||||
|
||||
Open the 'Add Host(s) or Cluster(s)' dialogue box. Multiple host or cluster
|
||||
names can be entered, separated by spaces.
|
||||
|
||||
=item Alt-n
|
||||
|
||||
Paste in the hostname part of the specific connection string to each
|
||||
client, minus any username or port, i.e.
|
||||
|
||||
C<< scp /etc/hosts server:files/<Alt-n>.hosts >>
|
||||
|
||||
would replace the <Alt-n> with the client's name in each window
|
||||
|
||||
=item Alt-r
|
||||
|
||||
Retile all the client windows
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
=over
|
||||
|
||||
=item Open up a session to 3 servers
|
||||
|
||||
S<$ cssh server1 server2 server3>
|
||||
|
||||
=item 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
|
||||
|
||||
S<$ cssh -T 'Web Farm Cluster 1' farm1>
|
||||
|
||||
=item Connect to different servers using different login names. NOTE: this can
|
||||
also be achieved by setting up appropriate options in the F<.ssh/config> file.
|
||||
Do not close cssh when the last terminal exits.
|
||||
|
||||
S<$ cssh -Q user1@server1 admin@server2>
|
||||
|
||||
=item Open up a cluster defined in a non-default configuration file
|
||||
|
||||
S<$ cssh -c $HOME/cssh.config db_cluster>
|
||||
|
||||
=item Use telnet on port 2022 instead of ssh
|
||||
|
||||
S<$ ctel -p 2022 server1 server2>
|
||||
|
||||
=item Use rsh instead of ssh
|
||||
|
||||
S<$ crsh server1 server2>
|
||||
|
||||
=item Use console with master as the primary server instead of ssh
|
||||
|
||||
S<$ ccon -M master server1 server2>
|
||||
|
||||
=back
|
||||
|
||||
=head1 FILES
|
||||
|
||||
=over
|
||||
|
||||
=item F</etc/clusters>, F<$HOME/.clusterssh/clusters>
|
||||
|
||||
These files contain 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
|
||||
format is as follows:
|
||||
|
||||
S<< <tag> [user@]<server> [user@]<server> [...] >>
|
||||
|
||||
e.g.
|
||||
|
||||
# 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 using recursive tags as they are not checked for.
|
||||
|
||||
Extra cluster files may also be specified either as an option on the
|
||||
command line (see C<cluster-file>) or in the user's F<$HOME/.clusterssh/config>
|
||||
file (see C<extra_cluster_file> configuration option).
|
||||
|
||||
NOTE: the last tag read overwrites any pre-existing tag of that name
|
||||
|
||||
NOTE: there is a special cluster tag called C<default> - any tags or hosts
|
||||
included within this tag will be automatically opened if no other tags
|
||||
are specified on the command line.
|
||||
|
||||
=item F</etc/tags>, F<$HOME/.clusterssh/tags>
|
||||
|
||||
Very similar to F<cluster> files but the definition is reversed. The
|
||||
format is:
|
||||
|
||||
S<< <host> <tag> [...] >>
|
||||
|
||||
This allows one host to be specified as a member of a number of tags. This
|
||||
format can be clearer than using F<clusters> files.
|
||||
|
||||
Extra tag files may be specified either as an option (see C<tag-file>) or within
|
||||
the user's F<$HOME/.clusterssh/config> file (see C<extra_tag_file>
|
||||
configuration option).
|
||||
|
||||
NOTE: All tags are added together
|
||||
|
||||
=item F</etc/csshrc> & F<$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.
|
||||
|
||||
B<NOTE:> values for entries do not need to be quoted unless it is required
|
||||
for passing arguments, e.g.
|
||||
|
||||
terminal_allow_send_events="-xrm '*.VT100.allowSendEvents:true'"
|
||||
|
||||
should be written as
|
||||
|
||||
terminal_allow_send_events=-xrm '*.VT100.allowSendEvents:true'
|
||||
|
||||
=over
|
||||
|
||||
=item 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 C<-K> on the command line.
|
||||
|
||||
=item auto_quit = yes
|
||||
|
||||
Automatically quit after the last client window closes. Set to anything
|
||||
other than "yes" to disable. Can be overridden by C<-Q> on the command line.
|
||||
|
||||
=item clusters = <blank>
|
||||
|
||||
Define a number of cluster tags in addition to (or to replace) tags defined
|
||||
in the F</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 F</etc/clusters> file, be sure not to create recursively nested tags.
|
||||
|
||||
=item comms = ssh
|
||||
|
||||
Sets the default communication method (initially taken from the name of the
|
||||
program, but can be overridden here).
|
||||
|
||||
=item 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).
|
||||
|
||||
=item external_cluster_command = <null>
|
||||
|
||||
Define the full path to an external command that can be used to resolve tags
|
||||
to host names. This command can be written in any language. The script must
|
||||
accept a list of tags to resolve and output a list of hosts on a single line.
|
||||
Any tags that cannot be resolved should be returned unchanged.
|
||||
|
||||
A non-0 exit code will be counted as an error, a warning will be printed and
|
||||
output ignored.
|
||||
|
||||
=item extra_cluster_file = <null>
|
||||
|
||||
Define an extra cluster file in the format of F</etc/clusters>. Multiple
|
||||
files can be specified, separated by commas. Both ~ and $HOME are acceptable
|
||||
as a reference to the user's home directory, i.e.
|
||||
|
||||
extra_cluster_file = ~/clusters, $HOME/clus
|
||||
|
||||
=item ignore_host_errors
|
||||
|
||||
THIS OPTION IS DEPRECATED. It has been left in so current systems continue
|
||||
to function as expected.
|
||||
|
||||
=item key_addhost = Control-Shift-plus
|
||||
|
||||
Default key sequence to open AddHost menu. See below notes on shortcuts.
|
||||
|
||||
=item key_clientname = Alt-n
|
||||
|
||||
Default key sequence to send cssh client names to client. See below notes
|
||||
on shortcuts.
|
||||
|
||||
=item key_localname = Alt-l
|
||||
|
||||
Default key sequence to send hostname of local server to client. See below
|
||||
notes on shortcuts.
|
||||
|
||||
=item key_paste = Control-v
|
||||
|
||||
Default key sequence to paste text into the console window. See below notes
|
||||
on shortcuts.
|
||||
|
||||
=item key_quit = Control-q
|
||||
|
||||
Default key sequence to quit the program (will terminate all open windows).
|
||||
See below notes on shortcuts.
|
||||
|
||||
=item key_retilehosts = Alt-r
|
||||
|
||||
Default key sequence to retile host windows. See below notes on shortcuts.
|
||||
|
||||
=item key_username = Alt-u
|
||||
|
||||
Default key sequence to send username to client. See below notes
|
||||
on shortcuts.
|
||||
|
||||
=item macro_servername = %s
|
||||
|
||||
=item macro_hostname = %h
|
||||
|
||||
=item macro_username = %u
|
||||
|
||||
=item macro_newline = %n
|
||||
|
||||
=item macro_version = %v
|
||||
|
||||
Change the replacement macro used when either using a 'Send' menu item, or when
|
||||
pasting text into the main console.
|
||||
|
||||
=item macros_enabled = yes
|
||||
|
||||
Enable or disable macro replacement. Note: this affects pasting into the
|
||||
main console, items on the 'Send' menu and key_clientname, key_localname,
|
||||
key_servername and key_username.
|
||||
|
||||
=item max_addhost_menu_cluster_items = 6
|
||||
|
||||
Maximum number of entries in the 'Add Host' menu cluster list before
|
||||
scrollbars are used
|
||||
|
||||
=item max_host_menu_items = 30
|
||||
|
||||
Maximum number of hosts to put into the host menu before starting a new column
|
||||
|
||||
=item menu_host_autotearoff = 0
|
||||
|
||||
=item menu_send_autotearoff = 0
|
||||
|
||||
When set to non-0 will automatically tear-off the host or send menu at
|
||||
program start
|
||||
|
||||
=item 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.
|
||||
|
||||
=item rsh = rsh
|
||||
|
||||
=item ssh = ssh
|
||||
|
||||
=item telnet = telnet
|
||||
|
||||
Set the path to the specific binary to use for the communication method, else
|
||||
uses the first match found in $PATH
|
||||
|
||||
=item rsh_args = <blank>
|
||||
|
||||
=item ssh_args = "-x -o ConnectTimeout=10"
|
||||
|
||||
=item telnet_args = <blank>
|
||||
|
||||
Sets any arguments to be used with the communication method (defaults to ssh
|
||||
arguments).
|
||||
|
||||
B<NOTE:> The given defaults are based on OpenSSH, not commercial ssh software.
|
||||
|
||||
B<NOTE:> Any "generic" change to the method (e.g., specifying the ssh port to use)
|
||||
should be done in the medium's own config file (see C<ssh_config> and
|
||||
F<$HOME/.ssh/config>).
|
||||
|
||||
=item screen_reserve_top = 0
|
||||
|
||||
=item screen_reserve_bottom = 60
|
||||
|
||||
=item screen_reserve_left = 0
|
||||
|
||||
=item screen_reserve_right = 0
|
||||
|
||||
Number of pixels from the screen's 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.
|
||||
|
||||
=item rsh = /path/to/rsh
|
||||
|
||||
=item ssh = /path/to/ssh
|
||||
|
||||
Depending on the value of comms, set the path of the communication binary.
|
||||
|
||||
=item terminal = /path/to/terminal
|
||||
|
||||
Path to the X-Windows terminal used for the client.
|
||||
|
||||
=item terminal_args = <blank>
|
||||
|
||||
Arguments to use when opening terminal windows. Otherwise takes defaults
|
||||
from F<$HOME/.Xdefaults> or $<$HOME/.Xresources> file.
|
||||
|
||||
=item terminal_font = 6x13
|
||||
|
||||
Font to use in the terminal windows. Use standard X font notation.
|
||||
|
||||
=item terminal_reserve_top = 5
|
||||
|
||||
=item terminal_reserve_bottom = 0
|
||||
|
||||
=item terminal_reserve_left = 5
|
||||
|
||||
=item terminal_reserve_right = 0
|
||||
|
||||
Number of pixels from the terminal's 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.
|
||||
|
||||
=item 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 color.
|
||||
|
||||
=item terminal_bg_style = dark
|
||||
|
||||
If set to dark, 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.
|
||||
|
||||
=item 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).
|
||||
|
||||
=item terminal_title_opt = -T
|
||||
|
||||
Option used with C<terminal> to set the title of the window
|
||||
|
||||
=item terminal_allow_send_events = -xrm '*.VT100.allowSendEvents:true'
|
||||
|
||||
Option required by the terminal to allow XSendEvents to be received
|
||||
|
||||
=item title = cssh
|
||||
|
||||
Title of windows to use for both the console and terminals.
|
||||
|
||||
=item 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.
|
||||
|
||||
=item use_all_a_records = no
|
||||
|
||||
If a hostname resolves to multiple IP addresses, set to C<yes> to connect
|
||||
to all of them, not just the first one found.
|
||||
|
||||
=item use_hotkeys = yes
|
||||
|
||||
Setting to anything other than C<yes> will disable all hotkeys.
|
||||
|
||||
=item user = $LOGNAME
|
||||
|
||||
Sets the default user for running commands on clients.
|
||||
|
||||
=item window_tiling = yes
|
||||
|
||||
Perform window tiling (set to C<no> to disable)
|
||||
|
||||
=item 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
|
||||
|
||||
=back
|
||||
|
||||
B<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".
|
||||
|
||||
=item F<$HOME/.csshrc_send_menu>
|
||||
|
||||
This (optional) file contains items to populate the send menu. The
|
||||
default entry could be written as:
|
||||
|
||||
<send_menu>
|
||||
<menu title="Use Macros">
|
||||
<toggle/>
|
||||
<accelerator>ALT-p</accelerator>
|
||||
</menu>
|
||||
<menu title="Remote Hostname">
|
||||
<command>%s</command>
|
||||
<accelerator>ALT-n</accelerator>
|
||||
</menu>
|
||||
<menu title="Local Hostname">
|
||||
<command>%s</command>
|
||||
<accelerator>ALT-l</accelerator>
|
||||
</menu>
|
||||
<menu title="Username">
|
||||
<command>%u</command>
|
||||
<accelerator>ALT-u</accelerator>
|
||||
</menu>
|
||||
<menu title="Test Text">
|
||||
<command>echo "ClusterSSH Version: %v%n</command>
|
||||
</menu>
|
||||
</send_menu>
|
||||
|
||||
Submenus can also be specified as follows:
|
||||
|
||||
<send_menu>
|
||||
<menu title="Default Entries">
|
||||
<detach>yes</detach>
|
||||
<menu title="Hostname">
|
||||
<command>%s</command>
|
||||
<accelerator>ALT-n</accelerator>
|
||||
</menu>
|
||||
</menu>
|
||||
</send_menu>
|
||||
|
||||
B<Caveats:>
|
||||
|
||||
=over 4
|
||||
|
||||
=item There is currently no strict format checking of this file.
|
||||
|
||||
=item The format of the file may change in the future
|
||||
|
||||
=item If the file exists, the default entry (Hostname) is not added
|
||||
|
||||
=back
|
||||
|
||||
The following replacement macros are available (note: these can be changed in the configuration file):
|
||||
|
||||
=over 4
|
||||
|
||||
=item %s
|
||||
|
||||
Hostname part of the specific connection string to each client, minus any
|
||||
username or port
|
||||
|
||||
=item %u
|
||||
|
||||
Username part of the connection string to each client
|
||||
|
||||
=item %h
|
||||
|
||||
Hostname of server where cssh is being run from
|
||||
|
||||
=item %n
|
||||
|
||||
<RETURN> code
|
||||
|
||||
=back
|
||||
|
||||
B<NOTE:> requires L<XML::Simple> to be installed
|
||||
|
||||
=back
|
||||
|
||||
=head1 KNOWN BUGS
|
||||
|
||||
=over 4
|
||||
|
||||
=item 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 separator, i.e. is the
|
||||
following just an IPv6 address, or an address + port number of 2323?
|
||||
|
||||
2001:db8::1428:2323
|
||||
|
||||
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 workarounds include:
|
||||
|
||||
=over 4
|
||||
|
||||
=item 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 ambiguity
|
||||
|
||||
=item b.
|
||||
|
||||
Use the full IPv6 address if also using a port number - the 8th colon
|
||||
is assumed to be the port separator.
|
||||
|
||||
=item 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.
|
||||
|
||||
=back
|
||||
|
||||
=item 2.
|
||||
|
||||
Swapping virtual desktops can cause 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)
|
||||
|
||||
=back
|
||||
|
||||
Anyone with any good ideas to fix the above bugs is more than welcome to get
|
||||
in touch and/or provide a patch.
|
||||
|
||||
=head1 REPORTING BUGS
|
||||
|
||||
=over 2
|
||||
|
||||
=item *
|
||||
|
||||
If you have issues running cssh, first try:
|
||||
|
||||
C<< cssh -e [user@]<hostname>[:port] >>
|
||||
|
||||
This performs two tests to confirm cssh is able to work properly with the
|
||||
settings provided within the F<$HOME/.clusterssh/config> file (or internal defaults).
|
||||
|
||||
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<$HOME/.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)
|
||||
|
||||
=item *
|
||||
|
||||
If you require support, please run the following commands
|
||||
and post it on the web site in the support/problems forum:
|
||||
|
||||
C<< perl -V >>
|
||||
|
||||
C<< perl -MTk -e 'print $Tk::VERSION,$/' >>
|
||||
|
||||
C<< perl -MX11::Protocol -e 'print $X11::Protocol::VERSION,$/' >>
|
||||
|
||||
C<< cat /etc/csshrc $HOME/.clusterssh/config >>
|
||||
|
||||
=item *
|
||||
|
||||
Using 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).
|
||||
|
||||
=back
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<http://clusterssh.sourceforge.net/>,
|
||||
C<ssh>,
|
||||
L<Tk::overview>,
|
||||
L<X11::Protocol>,
|
||||
C<perl>
|
||||
|
||||
=head1 CREDITS
|
||||
|
||||
A web site for comments, requests, bug reports and bug fixes/patches is
|
||||
available at L<http://clusterssh.sourceforge.net/>
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Duncan Ferguson, C<< <duncan_j_ferguson at yahoo.co.uk> >>
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
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 http://dev.perl.org/licenses/ for more information.
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
|
@ -12,6 +12,7 @@ use App::ClusterSSH::Host;
|
|||
use App::ClusterSSH::Config;
|
||||
use App::ClusterSSH::Helper;
|
||||
use App::ClusterSSH::Cluster;
|
||||
use App::ClusterSSH::Getopt;
|
||||
|
||||
use FindBin qw($Script);
|
||||
|
||||
|
@ -58,6 +59,7 @@ sub new {
|
|||
$self->{config} = App::ClusterSSH::Config->new();
|
||||
$self->{helper} = App::ClusterSSH::Helper->new();
|
||||
$self->{cluster} = App::ClusterSSH::Cluster->new();
|
||||
$self->{options} = App::ClusterSSH::Getopt->new();
|
||||
|
||||
# catch and reap any zombies
|
||||
$SIG{CHLD} = \&REAPER;
|
||||
|
@ -80,6 +82,21 @@ sub helper {
|
|||
return $self->{helper};
|
||||
}
|
||||
|
||||
sub options {
|
||||
my ($self) = @_;
|
||||
return $self->{options};
|
||||
}
|
||||
|
||||
sub getopts {
|
||||
my ($self) = @_;
|
||||
return $self->{options}->getopts;
|
||||
}
|
||||
|
||||
sub add_option {
|
||||
my ($self, %args) = @_;
|
||||
return $self->{options}->add_option(%args);
|
||||
}
|
||||
|
||||
sub REAPER {
|
||||
my $kid;
|
||||
do {
|
||||
|
@ -1877,6 +1894,11 @@ sub populate_send_menu {
|
|||
|
||||
sub run {
|
||||
my ($self) = @_;
|
||||
|
||||
$self->getopts;
|
||||
|
||||
warn "THROUGH";
|
||||
#die;
|
||||
### main ###
|
||||
|
||||
# Note: getopts returns "" if it finds any options it doesn't recognise
|
||||
|
|
187
lib/App/ClusterSSH/Getopt.pm
Normal file
187
lib/App/ClusterSSH/Getopt.pm
Normal file
|
@ -0,0 +1,187 @@
|
|||
package App::ClusterSSH::Getopt;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use version;
|
||||
our $VERSION = version->new('0.01');
|
||||
|
||||
use Carp;
|
||||
use Try::Tiny;
|
||||
use Getopt::Long qw(:config no_ignore_case bundling no_auto_abbrev);
|
||||
|
||||
use base qw/ App::ClusterSSH::Base /;
|
||||
|
||||
my %command_options = (
|
||||
'debug:+' => {
|
||||
spec => 'debug:+',
|
||||
help =>
|
||||
"--debug [number]\n\tEnable debugging. Either a level can be provided or the option can be repeated multiple times. Maximum level is 4.",
|
||||
default => 0,
|
||||
},
|
||||
'd' => { help => "-d\n\tDEPRECATED. See '--debug'.", },
|
||||
'D' => { help => "-D\n\tDEPRECATED. See '--debug'.", },
|
||||
'help|h|?' =>
|
||||
{ help => "--help, -h, -?\n\tShow basic help text and exit", },
|
||||
'version|v' =>
|
||||
{ help => "--version, -v\n\tShow version information and exit", },
|
||||
'man|H' => {
|
||||
help => "--man, -H\n\tShow full help text (the man page) and exit",
|
||||
},
|
||||
);
|
||||
|
||||
sub new {
|
||||
my ( $class, %args ) = @_;
|
||||
|
||||
my $self = $class->SUPER::new(%args);
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub add_option {
|
||||
my ( $self, %args ) = @_;
|
||||
$command_options{ delete $args{spec} } = \%args;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub add_common_ssh_options {
|
||||
my ( $self ) = @_;
|
||||
|
||||
$self->add_option(
|
||||
spec => 'ssh_cmd1|c1',
|
||||
help => "--ssh_cmd1\n\tCommon ssh option 1",
|
||||
);
|
||||
|
||||
$self->add_option(
|
||||
spec => 'ssh_cmd2|c2',
|
||||
help => "--ssh_cmd2\n\tCommon ssh option 2",
|
||||
);
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub getopts {
|
||||
my ($self) = @_;
|
||||
|
||||
use Data::Dump qw(dump);
|
||||
warn "master: ", dump \%command_options;
|
||||
|
||||
warn "ARGV: ", dump @ARGV;
|
||||
|
||||
my $options = {};
|
||||
if ( !GetOptions( $options, keys(%command_options) ) ) {
|
||||
$self->_usage;
|
||||
}
|
||||
|
||||
if ( $options->{help} ) {
|
||||
$self->_usage;
|
||||
$self->exit_prog;
|
||||
}
|
||||
|
||||
if ( $options->{version} ) {
|
||||
print "Version: $VERSION\n";
|
||||
$self->exit_prog;
|
||||
}
|
||||
|
||||
warn "end: ", dump $options;
|
||||
|
||||
#die "and out";
|
||||
warn "WAS DEAD HERE";
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub _usage {
|
||||
my ($self) = @_;
|
||||
|
||||
warn "**** USAGE ****";
|
||||
|
||||
my $options_pod;
|
||||
$options_pod .= "=over\n\n";
|
||||
|
||||
foreach my $option ( sort keys(%command_options) ) {
|
||||
my ( $short, $long )
|
||||
= $command_options{$option}{help} =~ m/^(.*)\n\t(.*)/;
|
||||
$options_pod .= "=item $short\n\n";
|
||||
$options_pod .= "$long\n\n";
|
||||
}
|
||||
$options_pod .= "=back\n\n";
|
||||
|
||||
# my $common_pod;
|
||||
# while (<DATA>) {
|
||||
# $common_pod .= $_;
|
||||
# }
|
||||
#
|
||||
# warn "common_pod=$common_pod";
|
||||
|
||||
# warn '#' x 60;
|
||||
warn "options_pod=$options_pod";
|
||||
warn '#' x 60;
|
||||
my $main_pod = '';
|
||||
while (<main::DATA>) {
|
||||
$main_pod .= $_;
|
||||
}
|
||||
|
||||
# warn "main_pod=$main_pod";
|
||||
|
||||
$main_pod =~ s/%OPTIONS%/$options_pod/;
|
||||
|
||||
die $main_pod;
|
||||
-return $self;
|
||||
}
|
||||
|
||||
#use overload (
|
||||
# q{""} => sub {
|
||||
# my ($self) = @_;
|
||||
# return $self->{hostname};
|
||||
# },
|
||||
# fallback => 1,
|
||||
#);
|
||||
|
||||
1;
|
||||
|
||||
__DATA__
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
App::ClusterSSH::Getopt - module to process command line args
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Object representing application configuration
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $host=ClusterSSH::Helper->new ({ })
|
||||
|
||||
Create a new helper object.
|
||||
|
||||
=item $host=ClusterSSH::Helper->script ({ })
|
||||
|
||||
Return the helper script
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Duncan Ferguson, C<< <duncan_j_ferguson at yahoo.co.uk> >>
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
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 http://dev.perl.org/licenses/ for more information.
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
5
lib/clusters.pod
Normal file
5
lib/clusters.pod
Normal file
|
@ -0,0 +1,5 @@
|
|||
=pod
|
||||
|
||||
=head 1
|
||||
|
||||
This is a test file for pod
|
409
pod_data/common_file
Normal file
409
pod_data/common_file
Normal file
|
@ -0,0 +1,409 @@
|
|||
=head1 FILES
|
||||
|
||||
=over
|
||||
|
||||
=item F</etc/clusters>, F<$HOME/.clusterssh/clusters>
|
||||
|
||||
These files contain 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
|
||||
format is as follows:
|
||||
|
||||
S<< <tag> [user@]<server> [user@]<server> [...] >>
|
||||
|
||||
e.g.
|
||||
|
||||
# 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 using recursive tags as they are not checked for.
|
||||
|
||||
Extra cluster files may also be specified either as an option on the
|
||||
command line (see C<cluster-file>) or in the user's F<$HOME/.clusterssh/config>
|
||||
file (see C<extra_cluster_file> configuration option).
|
||||
|
||||
NOTE: the last tag read overwrites any pre-existing tag of that name
|
||||
|
||||
NOTE: there is a special cluster tag called C<default> - any tags or hosts
|
||||
included within this tag will be automatically opened if no other tags
|
||||
are specified on the command line.
|
||||
|
||||
=item F</etc/tags>, F<$HOME/.clusterssh/tags>
|
||||
|
||||
Very similar to F<cluster> files but the definition is reversed. The
|
||||
format is:
|
||||
|
||||
S<< <host> <tag> [...] >>
|
||||
|
||||
This allows one host to be specified as a member of a number of tags. This
|
||||
format can be clearer than using F<clusters> files.
|
||||
|
||||
Extra tag files may be specified either as an option (see C<tag-file>) or within
|
||||
the user's F<$HOME/.clusterssh/config> file (see C<extra_tag_file>
|
||||
configuration option).
|
||||
|
||||
NOTE: All tags are added together
|
||||
|
||||
=item F</etc/csshrc> & F<$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.
|
||||
|
||||
B<NOTE:> values for entries do not need to be quoted unless it is required
|
||||
for passing arguments, e.g.
|
||||
|
||||
terminal_allow_send_events="-xrm '*.VT100.allowSendEvents:true'"
|
||||
|
||||
should be written as
|
||||
|
||||
terminal_allow_send_events=-xrm '*.VT100.allowSendEvents:true'
|
||||
|
||||
=over
|
||||
|
||||
=item 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 C<-K> on the command line.
|
||||
|
||||
=item auto_quit = yes
|
||||
|
||||
Automatically quit after the last client window closes. Set to anything
|
||||
other than "yes" to disable. Can be overridden by C<-Q> on the command line.
|
||||
|
||||
=item clusters = <blank>
|
||||
|
||||
Define a number of cluster tags in addition to (or to replace) tags defined
|
||||
in the F</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 F</etc/clusters> file, be sure not to create recursively nested tags.
|
||||
|
||||
=item comms = ssh
|
||||
|
||||
Sets the default communication method (initially taken from the name of the
|
||||
program, but can be overridden here).
|
||||
|
||||
=item 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).
|
||||
|
||||
=item external_cluster_command = <null>
|
||||
|
||||
Define the full path to an external command that can be used to resolve tags
|
||||
to host names. This command can be written in any language. The script must
|
||||
accept a list of tags to resolve and output a list of hosts on a single line.
|
||||
Any tags that cannot be resolved should be returned unchanged.
|
||||
|
||||
A non-0 exit code will be counted as an error, a warning will be printed and
|
||||
output ignored.
|
||||
|
||||
=item extra_cluster_file = <null>
|
||||
|
||||
Define an extra cluster file in the format of F</etc/clusters>. Multiple
|
||||
files can be specified, separated by commas. Both ~ and $HOME are acceptable
|
||||
as a reference to the user's home directory, i.e.
|
||||
|
||||
extra_cluster_file = ~/clusters, $HOME/clus
|
||||
|
||||
=item ignore_host_errors
|
||||
|
||||
THIS OPTION IS DEPRECATED. It has been left in so current systems continue
|
||||
to function as expected.
|
||||
|
||||
=item key_addhost = Control-Shift-plus
|
||||
|
||||
Default key sequence to open AddHost menu. See below notes on shortcuts.
|
||||
|
||||
=item key_clientname = Alt-n
|
||||
|
||||
Default key sequence to send cssh client names to client. See below notes
|
||||
on shortcuts.
|
||||
|
||||
=item key_localname = Alt-l
|
||||
|
||||
Default key sequence to send hostname of local server to client. See below
|
||||
notes on shortcuts.
|
||||
|
||||
=item key_paste = Control-v
|
||||
|
||||
Default key sequence to paste text into the console window. See below notes
|
||||
on shortcuts.
|
||||
|
||||
=item key_quit = Control-q
|
||||
|
||||
Default key sequence to quit the program (will terminate all open windows).
|
||||
See below notes on shortcuts.
|
||||
|
||||
=item key_retilehosts = Alt-r
|
||||
|
||||
Default key sequence to retile host windows. See below notes on shortcuts.
|
||||
|
||||
=item key_username = Alt-u
|
||||
|
||||
Default key sequence to send username to client. See below notes
|
||||
on shortcuts.
|
||||
|
||||
=item macro_servername = %s
|
||||
|
||||
=item macro_hostname = %h
|
||||
|
||||
=item macro_username = %u
|
||||
|
||||
=item macro_newline = %n
|
||||
|
||||
=item macro_version = %v
|
||||
|
||||
Change the replacement macro used when either using a 'Send' menu item, or when
|
||||
pasting text into the main console.
|
||||
|
||||
=item macros_enabled = yes
|
||||
|
||||
Enable or disable macro replacement. Note: this affects pasting into the
|
||||
main console, items on the 'Send' menu and key_clientname, key_localname,
|
||||
key_servername and key_username.
|
||||
|
||||
=item max_addhost_menu_cluster_items = 6
|
||||
|
||||
Maximum number of entries in the 'Add Host' menu cluster list before
|
||||
scrollbars are used
|
||||
|
||||
=item max_host_menu_items = 30
|
||||
|
||||
Maximum number of hosts to put into the host menu before starting a new column
|
||||
|
||||
=item menu_host_autotearoff = 0
|
||||
|
||||
=item menu_send_autotearoff = 0
|
||||
|
||||
When set to non-0 will automatically tear-off the host or send menu at
|
||||
program start
|
||||
|
||||
=item 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.
|
||||
|
||||
=item rsh = rsh
|
||||
|
||||
=item ssh = ssh
|
||||
|
||||
=item telnet = telnet
|
||||
|
||||
Set the path to the specific binary to use for the communication method, else
|
||||
uses the first match found in $PATH
|
||||
|
||||
=item rsh_args = <blank>
|
||||
|
||||
=item ssh_args = "-x -o ConnectTimeout=10"
|
||||
|
||||
=item telnet_args = <blank>
|
||||
|
||||
Sets any arguments to be used with the communication method (defaults to ssh
|
||||
arguments).
|
||||
|
||||
B<NOTE:> The given defaults are based on OpenSSH, not commercial ssh software.
|
||||
|
||||
B<NOTE:> Any "generic" change to the method (e.g., specifying the ssh port to use)
|
||||
should be done in the medium's own config file (see C<ssh_config> and
|
||||
F<$HOME/.ssh/config>).
|
||||
|
||||
=item screen_reserve_top = 0
|
||||
|
||||
=item screen_reserve_bottom = 60
|
||||
|
||||
=item screen_reserve_left = 0
|
||||
|
||||
=item screen_reserve_right = 0
|
||||
|
||||
Number of pixels from the screen's 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.
|
||||
|
||||
=item rsh = /path/to/rsh
|
||||
|
||||
=item ssh = /path/to/ssh
|
||||
|
||||
Depending on the value of comms, set the path of the communication binary.
|
||||
|
||||
=item terminal = /path/to/terminal
|
||||
|
||||
Path to the X-Windows terminal used for the client.
|
||||
|
||||
=item terminal_args = <blank>
|
||||
|
||||
Arguments to use when opening terminal windows. Otherwise takes defaults
|
||||
from F<$HOME/.Xdefaults> or $<$HOME/.Xresources> file.
|
||||
|
||||
=item terminal_font = 6x13
|
||||
|
||||
Font to use in the terminal windows. Use standard X font notation.
|
||||
|
||||
=item terminal_reserve_top = 5
|
||||
|
||||
=item terminal_reserve_bottom = 0
|
||||
|
||||
=item terminal_reserve_left = 5
|
||||
|
||||
=item terminal_reserve_right = 0
|
||||
|
||||
Number of pixels from the terminal's 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.
|
||||
|
||||
=item 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 color.
|
||||
|
||||
=item terminal_bg_style = dark
|
||||
|
||||
If set to dark, 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.
|
||||
|
||||
=item 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).
|
||||
|
||||
=item terminal_title_opt = -T
|
||||
|
||||
Option used with C<terminal> to set the title of the window
|
||||
|
||||
=item terminal_allow_send_events = -xrm '*.VT100.allowSendEvents:true'
|
||||
|
||||
Option required by the terminal to allow XSendEvents to be received
|
||||
|
||||
=item title = cssh
|
||||
|
||||
Title of windows to use for both the console and terminals.
|
||||
|
||||
=item 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.
|
||||
|
||||
=item use_all_a_records = no
|
||||
|
||||
If a hostname resolves to multiple IP addresses, set to C<yes> to connect
|
||||
to all of them, not just the first one found.
|
||||
|
||||
=item use_hotkeys = yes
|
||||
|
||||
Setting to anything other than C<yes> will disable all hotkeys.
|
||||
|
||||
=item user = $LOGNAME
|
||||
|
||||
Sets the default user for running commands on clients.
|
||||
|
||||
=item window_tiling = yes
|
||||
|
||||
Perform window tiling (set to C<no> to disable)
|
||||
|
||||
=item 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
|
||||
|
||||
=back
|
||||
|
||||
B<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".
|
||||
|
||||
=item F<$HOME/.csshrc_send_menu>
|
||||
|
||||
This (optional) file contains items to populate the send menu. The
|
||||
default entry could be written as:
|
||||
|
||||
<send_menu>
|
||||
<menu title="Use Macros">
|
||||
<toggle/>
|
||||
<accelerator>ALT-p</accelerator>
|
||||
</menu>
|
||||
<menu title="Remote Hostname">
|
||||
<command>%s</command>
|
||||
<accelerator>ALT-n</accelerator>
|
||||
</menu>
|
||||
<menu title="Local Hostname">
|
||||
<command>%s</command>
|
||||
<accelerator>ALT-l</accelerator>
|
||||
</menu>
|
||||
<menu title="Username">
|
||||
<command>%u</command>
|
||||
<accelerator>ALT-u</accelerator>
|
||||
</menu>
|
||||
<menu title="Test Text">
|
||||
<command>echo "ClusterSSH Version: %v%n</command>
|
||||
</menu>
|
||||
</send_menu>
|
||||
|
||||
Submenus can also be specified as follows:
|
||||
|
||||
<send_menu>
|
||||
<menu title="Default Entries">
|
||||
<detach>yes</detach>
|
||||
<menu title="Hostname">
|
||||
<command>%s</command>
|
||||
<accelerator>ALT-n</accelerator>
|
||||
</menu>
|
||||
</menu>
|
||||
</send_menu>
|
||||
|
||||
B<Caveats:>
|
||||
|
||||
=over 4
|
||||
|
||||
=item There is currently no strict format checking of this file.
|
||||
|
||||
=item The format of the file may change in the future
|
||||
|
||||
=item If the file exists, the default entry (Hostname) is not added
|
||||
|
||||
=back
|
||||
|
||||
The following replacement macros are available (note: these can be changed in the configuration file):
|
||||
|
||||
=over 4
|
||||
|
||||
=item %s
|
||||
|
||||
Hostname part of the specific connection string to each client, minus any
|
||||
username or port
|
||||
|
||||
=item %u
|
||||
|
||||
Username part of the connection string to each client
|
||||
|
||||
=item %h
|
||||
|
||||
Hostname of server where cssh is being run from
|
||||
|
||||
=item %n
|
||||
|
||||
<RETURN> code
|
||||
|
||||
=back
|
||||
|
||||
B<NOTE:> requires L<XML::Simple> to be installed
|
||||
|
||||
=back
|
464
pod_data/ctel
Normal file
464
pod_data/ctel
Normal file
|
@ -0,0 +1,464 @@
|
|||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
ctel - Cluster administration tool
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
S<< ctel [options] [<server>[:port]|<tag>] [...] >>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
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 directly.
|
||||
|
||||
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.
|
||||
It's better to search for the specific line to be changed and double-check
|
||||
before changes are committed.
|
||||
|
||||
=head2 Further Notes
|
||||
|
||||
Please also see L</KNOWN BUGS>.
|
||||
|
||||
=over
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
If your window manager menu bars are obscured by terminal windows see
|
||||
the C<screen_reserve_XXXXX> options in the F<$HOME/.clusterssh/config> file (see L</"FILES">).
|
||||
|
||||
=item *
|
||||
|
||||
If the terminals overlap too much see the C<terminal_reserve_XXXXX>
|
||||
options in the F<$HOME/.clusterssh/config> file (see L</"FILES">).
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
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.
|
||||
|
||||
=item *
|
||||
|
||||
If client windows fail to open, try running:
|
||||
|
||||
C<< cssh -e {single host name} >>
|
||||
|
||||
This will test the mechanisms used to open windows to hosts. This could
|
||||
be due to either the C<-xrm> terminal option which enables C<AllowSendEvents>
|
||||
(some terminals do not require this option, other terminals have another
|
||||
method for enabling it - see your terminal documentation) or the
|
||||
C<ConnectTimeout> ssh option (see the configuration option C<-o> or file
|
||||
C<$HOME/.clusterssh/config> below to resolve this).
|
||||
|
||||
=back
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
Some of these options may also be defined within the configuration file.
|
||||
Default options are shown as appropriate.
|
||||
|
||||
=====
|
||||
|
||||
%OPTIONS%
|
||||
|
||||
=====
|
||||
|
||||
=over
|
||||
|
||||
=item --action,-a '<command>'
|
||||
|
||||
Run the command in each session, e.g. C<-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).
|
||||
|
||||
=item --autoclose,-A <seconds>
|
||||
|
||||
Number of seconds to wait before closing finished terminal windows.
|
||||
|
||||
=item --autoquit,-q|--no-autoquit,-Q
|
||||
|
||||
Enable|Disable automatically quiting after the last client window has closed
|
||||
(overriding the config file)
|
||||
|
||||
=item --cluster-file,-c <file>
|
||||
|
||||
Use supplied file as additional cluster file (see also L</"FILES">)
|
||||
|
||||
=item --config-file,-C <file>
|
||||
|
||||
Use supplied file as additional configuration file (see also L</"FILES">)
|
||||
|
||||
=item -d
|
||||
|
||||
DEPRECATED. See '--debug'.
|
||||
|
||||
=item -D
|
||||
|
||||
DEPRECATED. See '--debug'.
|
||||
|
||||
=item --debug [number].
|
||||
|
||||
Enable debugging. Either a level can be provided or the option can be
|
||||
repeated multiple times. Maximum level is 4.
|
||||
|
||||
=item --evaluate,-e [user@]<hostname>[:port]
|
||||
|
||||
Display and evaluate the terminal and connection arguments to display any
|
||||
potential errors. The <hostname> is required to aid the evaluation.
|
||||
|
||||
=item --font,-f "5x8"
|
||||
|
||||
Specify the font to use in the terminal windows. Use standard X font notation.
|
||||
|
||||
=item --help,-h|-?
|
||||
|
||||
Show basic help text, and exit
|
||||
|
||||
=item --list, -L
|
||||
|
||||
List available cluster tags.
|
||||
|
||||
=item --man,-H
|
||||
|
||||
Show full help text (the man page), and exit
|
||||
|
||||
=item --master,-M <master>
|
||||
|
||||
The console client program polls master as the primary server, rather than the
|
||||
default set at compile time (typically ``console'').
|
||||
|
||||
=item --options,-o "-x -o ConnectTimeout=10" - for ssh connections
|
||||
|
||||
=item --options,-o "" - for rsh connections
|
||||
|
||||
Specify arguments to be passed to ssh or rsh when making the connection.
|
||||
|
||||
B<NOTE:> any "generic" change to the method (e.g., specifying the ssh port to use)
|
||||
should be done in the medium's own config file (see C<ssh_config> and
|
||||
F<$HOME/.ssh/config>).
|
||||
|
||||
=item --output-config,-u
|
||||
|
||||
Output the current configuration in the same format used by the
|
||||
F<$HOME/.clusterssh/config> file.
|
||||
|
||||
=item --port,-p <port>
|
||||
|
||||
Specify an alternate port for connections.
|
||||
|
||||
=item --show-history,-s
|
||||
|
||||
IN BETA: Show history within console window. This code is still being
|
||||
worked upon, but may help some users.
|
||||
|
||||
=item --tag-file,-r <file>
|
||||
|
||||
Use supplied file as additional tag file (see also L</"FILES">)
|
||||
|
||||
=item --term-args,-t ""
|
||||
|
||||
Specify arguments to be passed to terminals being used
|
||||
|
||||
=item --tile,-g|--no-tile,-G
|
||||
|
||||
Enable|Disable window tiling (overriding the config file)
|
||||
|
||||
=item --title,-T "CSSH"
|
||||
|
||||
Specify the initial part of the title used in the console and client windows
|
||||
|
||||
=item --unique-servers,-m
|
||||
|
||||
Connect to each host only once
|
||||
|
||||
=item --use_all_a_records,-A
|
||||
|
||||
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)
|
||||
|
||||
=item --username,-l $LOGNAME
|
||||
|
||||
Specify the default username to use for connections (if different from the
|
||||
currently logged in user). B<NOTE:> will be overridden by <user>@<host>
|
||||
|
||||
=item --version,-v
|
||||
|
||||
Show version information and exit
|
||||
|
||||
=back
|
||||
|
||||
=head1 ARGUMENTS
|
||||
|
||||
The following arguments are supported:
|
||||
|
||||
=over
|
||||
|
||||
=item [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 the standard port (i.e., not listening on port 22) and ssh_config cannot
|
||||
be used.
|
||||
|
||||
=item <tag> ...
|
||||
|
||||
Open a series of xterms defined by <tag> in one of the supplementary
|
||||
configuration files (see L</"FILES">).
|
||||
|
||||
Note: specifying a username on a cluster tag will override any usernames
|
||||
defined in the cluster
|
||||
|
||||
=back
|
||||
|
||||
=head1 KEY SHORTCUTS
|
||||
|
||||
The following key shortcuts are available within the console window, and all
|
||||
of them may be changed via the configuration files.
|
||||
|
||||
=over
|
||||
|
||||
=item Control-q
|
||||
|
||||
Quit the program and close all connections and windows
|
||||
|
||||
=item Control-+
|
||||
|
||||
Open the 'Add Host(s) or Cluster(s)' dialogue box. Multiple host or cluster
|
||||
names can be entered, separated by spaces.
|
||||
|
||||
=item Alt-n
|
||||
|
||||
Paste in the hostname part of the specific connection string to each
|
||||
client, minus any username or port, i.e.
|
||||
|
||||
C<< scp /etc/hosts server:files/<Alt-n>.hosts >>
|
||||
|
||||
would replace the <Alt-n> with the client's name in each window
|
||||
|
||||
=item Alt-r
|
||||
|
||||
Retile all the client windows
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
=over
|
||||
|
||||
=item Open up a session to 3 servers
|
||||
|
||||
S<$ cssh server1 server2 server3>
|
||||
|
||||
=item 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
|
||||
|
||||
S<$ cssh -T 'Web Farm Cluster 1' farm1>
|
||||
|
||||
=item Connect to different servers using different login names. NOTE: this can
|
||||
also be achieved by setting up appropriate options in the F<.ssh/config> file.
|
||||
Do not close cssh when the last terminal exits.
|
||||
|
||||
S<$ cssh -Q user1@server1 admin@server2>
|
||||
|
||||
=item Open up a cluster defined in a non-default configuration file
|
||||
|
||||
S<$ cssh -c $HOME/cssh.config db_cluster>
|
||||
|
||||
=item Use telnet on port 2022 instead of ssh
|
||||
|
||||
S<$ ctel -p 2022 server1 server2>
|
||||
|
||||
=item Use rsh instead of ssh
|
||||
|
||||
S<$ crsh server1 server2>
|
||||
|
||||
=item Use console with master as the primary server instead of ssh
|
||||
|
||||
S<$ ccon -M master server1 server2>
|
||||
|
||||
=back
|
||||
|
||||
%FILES%
|
||||
|
||||
=head1 KNOWN BUGS
|
||||
|
||||
=over 4
|
||||
|
||||
=item 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 separator, i.e. is the
|
||||
following just an IPv6 address, or an address + port number of 2323?
|
||||
|
||||
2001:db8::1428:2323
|
||||
|
||||
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 workarounds include:
|
||||
|
||||
=over 4
|
||||
|
||||
=item 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 ambiguity
|
||||
|
||||
=item b.
|
||||
|
||||
Use the full IPv6 address if also using a port number - the 8th colon
|
||||
is assumed to be the port separator.
|
||||
|
||||
=item 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.
|
||||
|
||||
=back
|
||||
|
||||
=item 2.
|
||||
|
||||
Swapping virtual desktops can cause 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)
|
||||
|
||||
=back
|
||||
|
||||
Anyone with any good ideas to fix the above bugs is more than welcome to get
|
||||
in touch and/or provide a patch.
|
||||
|
||||
=head1 REPORTING BUGS
|
||||
|
||||
=over 2
|
||||
|
||||
=item *
|
||||
|
||||
If you have issues running cssh, first try:
|
||||
|
||||
C<< cssh -e [user@]<hostname>[:port] >>
|
||||
|
||||
This performs two tests to confirm cssh is able to work properly with the
|
||||
settings provided within the F<$HOME/.clusterssh/config> file (or internal defaults).
|
||||
|
||||
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<$HOME/.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)
|
||||
|
||||
=item *
|
||||
|
||||
If you require support, please run the following commands
|
||||
and post it on the web site in the support/problems forum:
|
||||
|
||||
C<< perl -V >>
|
||||
|
||||
C<< perl -MTk -e 'print $Tk::VERSION,$/' >>
|
||||
|
||||
C<< perl -MX11::Protocol -e 'print $X11::Protocol::VERSION,$/' >>
|
||||
|
||||
C<< cat /etc/csshrc $HOME/.clusterssh/config >>
|
||||
|
||||
=item *
|
||||
|
||||
Using 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).
|
||||
|
||||
=back
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<http://clusterssh.sourceforge.net/>,
|
||||
C<ssh>,
|
||||
L<Tk::overview>,
|
||||
L<X11::Protocol>,
|
||||
C<perl>
|
||||
|
||||
=head1 CREDITS
|
||||
|
||||
A web site for comments, requests, bug reports and bug fixes/patches is
|
||||
available at L<http://clusterssh.sourceforge.net/>
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Duncan Ferguson, C<< <duncan_j_ferguson at yahoo.co.uk> >>
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
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 http://dev.perl.org/licenses/ for more information.
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
Loading…
Add table
Reference in a new issue