gpssh
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配置文件gpssh配置文件。
选项
- bash_command
- 在此会话中涉及的所有主机上执行的bash shell命令(可选择封闭在引号中)。 如果未指定,则gpssh启动交互式会话。
- -d(延迟)seconds
- 可选。指定用ssh开始gpssh交互开始时等待 的时间(以秒为单位)。默认值是0.05。此选项将覆盖gpssh.conf 配置文件中指定的delaybeforesend的值。
- 增加此值可能会导致在gpssh启动过程中等待很长时间。
- -e(回显)
- 可选。以非交互模式运行时,回显传递给每个主机的命令及其结果输出。
- -f hostfile_gpssh
- 指定包含将参与此SSH会话的主机列表的文件的名称。主机文件的语法是每行一个主机。
- -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'