gpssh
一次提供对多台主机的SSH访问。
概要
gpssh { -f hostfile_gpssh | - h hostname [-h hostname ...] } [-s] [-e]
[-d seconds] [-t multiplier] [-v]
[bash_command]
gpssh -?
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端口号。主机文件的语法是每行一个主机,如下所示:
[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
文件的例子。
[gpssh]
delaybeforesend = 0.05
prompt_validation_timeout = 1.0
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会话组:
$ gpssh -f hostfile_gpssh
在gpssh
交互式命令提示符处,在此会话中涉及的所有主机上运行shell命令。
=> ls -a /data/primary/*
退出交互式会话:
=> exit
=> quit
使用名为sdw1
和sdw2
的主机启动非交互式SSH会话组,并将包含多个名为command_file
的命令的文件传递给gpssh
:
$ gpssh -h sdw1 -h sdw2 -v -e < command_file
在主机sdw2
和localhost
上以非交互模式执行单个命令:
$ gpssh -h sdw2 -h localhost -v -e 'ls -a /data/primary/*'
$ gpssh -h sdw2 -h localhost -v -e 'echo $GPHOME'
$ gpssh -h sdw2 -h localhost -v -e 'ls -1 | wc -l'
另见
[gpssh-exkeys](gpssh-exkeys.html#topic1)
、[gpscp](gpscp.html#topic1)