gpssh
Предоставляет SSH-доступ к нескольким хостам одновременно.
Синтаксис
gpssh { -f <hostfile_gpssh> | -h <hostname> [ -h <hostname> ... ] }
[ -u <userid> ]
[ -s ] [ -e ]
[ -d <seconds> ]
[ -t <multiplier> ]
[ -v ]
[ <bash_command> ]
gpssh -?
gpssh --version
Описание
Утилита gpssh позволяет выполнять команды оболочки Bash на нескольких хостах одновременно через SSH (secure shell).
Можно выполнить одну команду, указав ее в командной строке, или войти в интерактивный режим, не указывая команду.
Для указания хостов используйте параметр -f с файлом со списком хостов или параметр -h с именами отдельных хостов.
Необходим хотя бы один хост (-h) или хост-файл (-f).
Текущий хост не включается в сессию автоматически — для его включения явно укажите его в списке.
Перед использованием gpssh настройте доверенные соединения между хостами, участвующими в SSH-сессии.
Для обновления файлов известных хостов и обмена открытыми ключами воспользуйтесь утилитой gpssh-exkeys.
Без указания команды gpssh работает в интерактивном режиме.
В приглашении командной строки gpssh (=>) вводите команды как в обычном терминале Bash — они будут выполнены на всех хостах сессии.
Для завершения интерактивной сессии нажмите Ctrl+D или введите exit или quit.
Если в файле хостов не указано имя пользователя, команды выполняются от имени текущего пользователя.
Для определения текущего пользователя выполните команду whoami.
По умолчанию после входа gpssh переходит в каталог $HOME пользователя на удаленных хостах.
Для корректного выполнения команд на всех хостах всегда указывайте абсолютные пути.
При возникновении проблем с сетевыми тайм-аутами используйте параметры -d и -t или настройте соответствующие интервалы в файле gpssh.conf для управления проверкой SSH-подключений.
Подробности о конфигурационном файле см. в разделе Конфигурационный файл gpssh.
Параметры
- <bash_command>
-
Команда оболочки Bash для выполнения на всех хостах сессии (можно заключать в кавычки). Если команда не указана,
gpsshзапускает интерактивную сессию. - -d <seconds>
-
Время ожидания в секундах перед началом взаимодействия
gpsshсssh. По умолчанию —0.05секунды. Переопределяет параметрdelaybeforesendв конфигурационном файле gpssh.conf.Увеличение этого значения замедляет запуск
gpssh. - -e
-
Выводит команды, отправленные каждому хосту, и их результаты при работе в неинтерактивном режиме.
- -f <hostfile_gpssh>
-
Имя файла со списком хостов для SSH-сессии. Файл должен содержать по одному хосту на строку.
- -h <hostname>
-
Имя хоста для SSH-сессии. Параметр можно указывать несколько раз для задания нескольких хостов.
- -s
-
Перед выполнением команд на целевом хосте загружает файл greengage_path.sh из каталога, указанного в переменной окружения GPHOME.
Параметр работает как в интерактивном режиме, так и при выполнении одной команды.
- -t <multiplier>
-
Десятичное число больше
0, являющееся множителем тайм-аута при проверке приглашенияssh. По умолчанию —1. Переопределяет параметрprompt_validation_timeoutв конфигурационном файле gpssh.conf.Увеличение значения слегка замедляет запуск
gpssh. - -u <userid>
-
Указывает идентификатор пользователя для данной SSH-сессии.
- -v
-
Выводит дополнительные сообщения вместе с результатами команд в неинтерактивном режиме.
- --version
-
Отображает версию утилиты.
- -?
-
Выводит справку.
Конфигурационный файл gpssh
Файл gpssh.conf содержит параметры для настройки временных интервалов при проверке начального ssh-подключения.
Эти параметры влияют на сетевое соединение до выполнения команд через ssh.
Расположение файла задается переменной окружения MASTER_DATA_DIRECTORY.
Если переменная не определена или файл отсутствует, используются значения по умолчанию или значения, заданные параметрами -d и -t.
Файл gpssh.conf является текстовым и содержит секцию [gpssh] с параметрами.
Символ # используется для комментариев.
Пример файла gpssh.conf:
[gpssh]
delaybeforesend = 0.05
prompt_validation_timeout = 1.0
sync_retries = 5
Параметры gpssh.conf:
- delaybeforesend = <seconds>
-
Время ожидания в секундах перед началом взаимодействия
gpsshсssh. По умолчанию —0.05. Увеличение значения замедляет запускgpssh. Параметр-dпереопределяет это значение. - prompt_validation_timeout = <multiplier>
-
Десятичное число больше
0, множитель тайм-аута при проверке приглашенияssh. По умолчанию —1. Увеличение значения слегка замедляет запускgpssh. Параметр-tпереопределяет это значение. - sync_retries = <attempts>
-
Неотрицательное целое число, задающее максимальное количество попыток подключения к удаленному хосту Greengage DB. По умолчанию —
3. Если указано0,gpsshвозвращает ошибку при первой неудачной попытке. Увеличение количества попыток также увеличивает интервал между ними. Этот параметр настраивается только через конфигурационный файл.Параметр
-tтакже влияет на интервал между повторами.Увеличение значения помогает компенсировать низкую производительность сети или сегмент-хостов (например, при высокой нагрузке на CPU или ввод-вывод). Однако при невозможности установить соединение увеличенное значение также увеличивает задержку перед возвратом ошибки.
Примеры
Запуск интерактивной групповой SSH-сессии со всеми хостами из файла hostfile_gpssh:
$ gpssh -f hostfile_gpssh
Выполнение команды на всех хостах в интерактивном режиме gpssh:
=> ls -a /data1/primary/*
Выход из интерактивной сессии:
=> exit
=> quit
Запуск неинтерактивной групповой SSH-сессии с хостами sdw1 и sdw2 и передача файла команд command_file в gpssh:
$ gpssh -h sdw1 -h sdw2 -v -e < command_file
Выполнение отдельных команд в неинтерактивном режиме на хостах sdw2 и localhost:
$ gpssh -h sdw2 -h localhost -v -e 'ls -a /data1/primary/*'
$ gpssh -h sdw2 -h localhost -v -e 'echo $GPHOME'
$ gpssh -h sdw2 -h localhost -v -e 'ls -1 | wc -l'