gpssh

一次提供对多台主机的SSH访问。

概要

  1. gpssh { -f hostfile_gpssh | - h hostname [-h hostname ...] } [-s] [-e]
  2. [-d seconds] [-t multiplier] [-v]
  3. [bash_command]
  4. gpssh -?
  5. gpssh --version

描述

gpssh工具允许用户使用SSH(安全shell)一次在多台主机上运行bash shell命令。用户可以通过在命令行上指定一个命令来执行单个命令,也可以省略该命令以进入交互式命令行会话。

要指定参与SSH会话的主机,请使用-f选项指定包含主机名列表的文件,或使用 -h选项在命令行上指明单个主机名。至少需要一个主机名(-h)或主机文件(-f)。请注意,当前主机默认包含在会话中 — 要包含本地主机,用户必须在会话中涉及的主机列表中明确声明它。

在使用gpssh之前,用户必须在涉及SSH会话的主机之间建立可信的主机设置。 用户可以使用工具gpssh-exkeys更新已知的主机文件并在主机之间交换公钥(如果尚未这样做的话)。

如果用户没有在命令行上指定命令,gpssh将进入交互模式。在gpssh命令提示符(\=>)处,用户可以像在常规bash终端命令行中那样输入命令,并且该命令将在会话涉及的所有主机上执行。要结束交互式会话,请按键盘上的CTRL+D或键入exit或quit。

如果主机文件中没有指定用户名,则gpssh将以当前登录的用户身份执行命令。要确定当前登录的用户,请执行whoami命令。默认情况下,登录后gpssh将转到远程主机上的会话用户的$HOME。为确保所有远程主机上的命令都能正确执行,应始终输入绝对路径。

如果在使用gpssh时遇到网络超时问题,可以使用-d和-t选项或者在gpssh.conf文件中设置参数来控制gpssh在验证初始ssh连接时使用的时间。有关配置文件的信息,请参阅gpssh配置文件

选项

bash_command

在此会话中涉及的所有主机上执行的bash shell命令(可选择封闭在引号中)。如果未指定,则gpssh启动交互式会话。

-d (延迟) seconds

可选。指定用ssh开始gpssh交互开始时等待的时间(以秒为单位)。默认值是0.05。此选项将覆盖gpssh.conf配置文件中指定的delaybeforesend的值。

增加此值可能会导致在gpssh启动过程中等待很长时间。

-e (回显)

可选。以非交互模式运行时,回显传递给每个主机的命令及其结果输出。

-f hostfile_gpssh

指定包含将参与此SSH会话的主机列表的文件的名称。主机名是必需的,用户可以选择指定每台主机的备用用户名和/或SSH端口号。主机文件的语法是每行一个主机,如下所示:

  1. [username@]hostname[:ssh_port]

-h hostname

指定将参与此SSH会话的单个主机名。用户可以多次使用-h选项来指定多个主机名。

-s

可选。如果指定,则在执行目标主机上的任何命令之前,gpssh 将在$GPHOME环境变量指定的目录中引用文件greenplum_path.sh。

该选项对交互模式和单命令模式都有效。

-t multiplier

可选。大于0的十进制数,它是gpssh在验证ssh提示时使用的超时的倍数。默认值为1。此选项将覆盖gpssh.conf配置文件中的prompt_validation_timeout值。

增加此值对gpssh启动过程影响不大。

-v (详细模式)

可选。在非交互模式下运行时,除了输出命令外,还会报告其他消息。

--version

显示此工具的版本。

-? (帮助)

显示在线帮助。

gpssh配置文件

gpssh.conf文件包含的参数可让用户调整gpssh在验证初始ssh连接时使用的时间。gpssh会话使用ssh执行命令之前,这些参数会影响网络连接。该文件的位置由环境MASTER_DATA_DIRECTORY指定。如果未定义环境变量或gpssh.conf文件不存在,gpssh将使用默认值或使用-d和-t选项设置的值。有关环境变量的信息,请参考Greenplum数据库参考指南。

gpssh.conf文件是由[gpssh]部分和参数组成的文本文件。#(井号)代表注释的开始。这是一个gpssh.conf文件的例子。

  1. [gpssh]
  2. delaybeforesend = 0.05
  3. prompt_validation_timeout = 1.0
  4. sync_retries = 5

这些是gpssh.conf参数。

delaybeforesend = seconds

指定用ssh启动gpssh交互时等待的时间(以秒为单位)。默认是0.05。增加此值可能会导致gpssh启动过程中等待很长时间。-d选项覆盖此参数。

prompt_validation_timeout = multiplier

大于0的十进制数,它是gpssh在验证ssh提示时使用的超时的倍数。增加这个值对gpssh启动过程影响不大。默认值是1。-t选项覆盖此参数。

sync_retries = attempts

一个非负整数,指定gpssh尝试连接远程Greenplum数据库主机的最大次数。缺省值为3。如果值为0,则如果初始连接尝试失败,gpssh将返回错误。增加尝试次数也增加了重试次数之间的时间。此参数不能使用命令行选项进行配置。

-t选项也影响重试尝试之间的时间。

增加此值可以弥补网络性能下降或部分主机性能问题,例如繁重的CPU或I/O负载。但是,当无法建立连接时,增加的值也会增加错误被返回时的延迟。

示例

与文件hostfile_gpssh中列出的所有主机启动交互式SSH会话组:

  1. $ gpssh -f hostfile_gpssh

在gpssh交互式命令提示符处,在此会话中涉及的所有主机上运行shell命令。

  1. => ls -a /data/primary/*

退出交互式会话:

  1. => exit
  2. => quit

使用名为sdw1和sdw2 的主机启动非交互式SSH会话组,并将包含多个名为command_file的命令的文件传递给gpssh:

  1. $ gpssh -h sdw1 -h sdw2 -v -e < command_file

在主机sdw2和localhost上以非交互模式执行单个命令:

  1. $ gpssh -h sdw2 -h localhost -v -e 'ls -a /data/primary/*'
  2. $ gpssh -h sdw2 -h localhost -v -e 'echo $GPHOME'
  3. $ gpssh -h sdw2 -h localhost -v -e 'ls -1 | wc -l'

另见

gpssh-exkeysgpscp