hawq ssh
Provides SSH access to multiple hosts at once.
Synopsis
hawq ssh -f <hostfile_hawqssh>) | (-h <hostname> [-h <hostname> ...]
[-e]
[-u <username>]
[-v]
[<bash_command>]
hawq ssh [-? | --help]
hawq ssh --version
Description
The hawq ssh
utility allows you to run bash shell commands on multiple hosts at once using SSH (secure shell). You can execute a single command by specifying it on the command-line, or omit the command to enter into an interactive command-line session.
To specify the hosts involved in the SSH session, use the -f
option to specify a file containing a list of host names, or use the -h
option to name single host names on the command-line. At least one host name (-h
) or a host file (-f
) is required. Note that the current host is not included in the session by default — to include the local host, you must explicitly declare it in the list of hosts involved in the session.
Before using hawq ssh
, you must have a trusted host setup between the hosts involved in the SSH session. You can use the utility hawq ssh-exkeys
to update the known host files and exchange public keys between hosts if you have not done so already.
If you do not specify a command on the command-line, hawq ssh
will go into interactive mode. At the hawq ssh
command prompt (=>
), you can enter a command as you would in a regular bash terminal command-line, and the command will be executed on all hosts involved in the session. To end an interactive session, press CTRL
+D
on the keyboard or type exit
or quit
.
If a user name is not specified in the host file or via the -u
option, hawq ssh
will execute commands as the currently logged in user. To determine the currently logged in user, do a whoami
command. By default, hawq ssh
goes to $HOME
of the session user on the remote hosts after login. To ensure commands are executed correctly on all remote hosts, you should always enter absolute paths.
Arguments
[username@]hostname[:ssh_port]
-h
option multiple times to specify multiple host names.Options
hawq ssh
will start an interactive session.Examples
Start an interactive group SSH session with all hosts listed in the file hostfile_hawqssh
:
$ hawq ssh -f hostfile_hawqssh
At the hawq ssh
interactive command prompt, run a shell command on all the hosts involved in this session.
=> ls -a /data/path-to-masterdd/*
Exit an interactive session:
=> exit
=> quit
Start a non-interactive group SSH session with the hosts named sdw1
and sdw2
and pass a file containing several commands named command_file
to hawq ssh
:
$ hawq ssh -h sdw1 -h sdw2 -v -e < command_file
Execute single commands in non-interactive mode on hosts sdw2
and localhost
:
$ hawq ssh -h sdw2 -h localhost -v -e 'ls -a /data/primary/*'
$ hawq ssh -h sdw2 -h localhost -v -e 'echo $GPHOME'
$ hawq ssh -h sdw2 -h localhost -v -e 'ls -1 | wc -l'