Переход с одного на другой сервер в сценарии оболочки

Вот сценарий,

$hostname
server1

У меня есть сценарий ниже в server1,

#!/bin/ksh
echo "Enter server name:"
read server

rsh -n ${server} -l mquser "/opt/hd/ca/scripts/envscripts.ksh"
qdisplay
 # script ends.

В приведенном выше сценарии я захожу на другой сервер, скажем server2, и выполняю сценарий "envscripts.ksh", который устанавливает несколько псевдонимов (псевдоним "qdisplay"), определенных в нем.

Я могу успешно войти в систему на server1, но не могу использовать псевдоним, установленный скриптом "envscripts.ksh".

Получение ниже ошибки,

-bash: qdisplay: command not found

Можно ли, пожалуйста, указать, что необходимо исправить здесь.

Спасибо виньеш

2 ответа

Другие ответы и комментарии верны. Ваш rsh команда должна выполнить и сценарий ksh, и последующую команду в одном вызове. Однако я подумал, что предложу дополнительное предложение.

Похоже, что вы пишете пользовательские инструменты для WebSphere MQ. Ваш подход заключается в удаленной оболочке к серверу WMQ и выполнении команды для отображения атрибутов очереди (возможно, глубины).

Задача написания собственного инструментария достойна восхищения, однако попытка сделать это в качестве удаленной оболочки не является оптимальным подходом. Это требует от вас поддерживать библиотеку сценариев на каждом сервере MQ и в некоторых случаях поддерживать эти сценарии на разных языках.

Я бы предположил, что НАМНОГО лучше подходить к использованию клиента MQSC, доступного в http://bit.ly/SupportPacMO72. Это позволяет вам написать сценарии один раз, а затем выполнить их с центрального сервера. Поскольку все команды MQSC выполняются через клиент MQ, один и тот же сценарий обрабатывает Windows, UNIX, Linux, iSeries и т. Д.

Например, вы могли бы написать сценарий, который удаленно запрашивал бы глубину очереди и печатать список всех очередей с глубиной> 0. Затем вы могли бы либо выполнить этот сценарий непосредственно для данного администратора очередей, либо написать сценарий для перебора списка администраторов очередей. и собрать один и тот же отчет для всей сети. Поскольку все сценарии выполняются на одном центральном сервере, вам не нужно беспокоиться о получении $PATH верно, различия в командах, таких как tr или grep, где установлены ksh или perl и т. д. и т. д.

Десять лет назад я написал сценарии, над которыми вы работаете, когда моя сеть WMQ была маленькой. Когда сеть стала больше, эти различия в платформах поглотили меня, и я не смог поддерживать автоматизацию в рабочем состоянии. Когда я переключился на использование клиента WMQ и имел только один набор сценариев, я смог сохранить его с гораздо меньшими затратами времени и сил.

Следующий скрипт предполагает, что имя QMgr совпадает с именем хоста, кроме как в UPPER CASE. Вместо этого вы можете передать QMgr name, hostname, port и channel в командной строке, чтобы сделать скрипт полезным, если имена QMgr не совпадают с именем хоста.

#! / usr / bin / perl -w # --------------------------------------- ---------------------------------------- # mqsc.pl # # Оболочка для M072 SupportPac mqsc исполняемый файл # Введите имя файла parm в командной строке и имена хостов через STDIN.
# Программа пытается подключиться к имени хоста на SYSTEM.AUTO.SVRCONN и порту 1414 
#, перенаправляя файл parm в mqsc. # # Предполагаемое использование is... # # mqsc.pl parmfile.mqsC# host1 # host2 # # - или - # # mqsc.pl parmfile.mqsc

Parmfile.mqsc - это любой допустимый скрипт MQSC. Тот, который собирает все глубины очереди, выглядит так:

ОТОБРАЗИТЬ QL(*) CURDEPTH

Я думаю, что реальная проблема заключается в том, что r (o) sh cmd выполняет только удаленный файл envscripts.ksh и что ваш скрипт затем пытается выполнить qdisplay на вашем локальном компьютере.

Вам необходимо "склеить" две команды вместе, чтобы они выполнялись удаленно. Отредактировано за комментарий от Жиля (Он прав)

rosh -n ${server} -l mquser ". /opt/hd/ca/scripts/envscripts.ksh ; qdisplay"

Надеюсь, это поможет.

PS, поскольку вы, кажется, являетесь новым пользователем, если вы получаете ответ, который помогает вам, не забудьте пометить его как принятый, или дать ему + (или -) в качестве полезного ответа

Другие вопросы по тегам