Удаленное выполнение команд здесь документы и назначение переменных - PullRequest
0 голосов
/ 26 сентября 2018

Формат, синтаксис, я получил из другого поста [здесь] [1] Сбор результатов удаленной команды ssh в переменной :

Я пытаюсь получитьсписок содержимого папки и сравнение их со списком конкретных процессов.Мне нужно это знать, чтобы все необходимые экземпляры, скажем, IHS / WAS работали, как ожидалось.Я не могу использовать определенные команды IHS или WAS, потому что у меня нет доступа к командам.У меня ограниченный доступ для чтения к системам, и я пишу скрипт для получения списка установленных, запущенных и т. Д. Экземпляров.

Ниже приведен мой код:

#!/bin/bash
HOST='xyzhostname'
$vari=$(ssh -T $HOST <<'EOF'
        printf "getting folders: \n"
        instances=$(ls /samplefolder/samplefolder/)
        printf "got folders.\n"
        printf "${instances}"
EOF
 )

больше кода для получения процессов(ps -ef .....) и сравнение с каждой папкой, полученной в приведенных выше примерах, будет следовать ...

Я получаю приведенную ниже ошибку при запуске этого кода

./test.sh: line 9: =getting: command not found

Будетпризнателен за любую помощь в этом ..

1 Ответ

0 голосов
/ 19 октября 2018

Я получил его, используя приведенный ниже код, но был занят, поэтому не мог вернуться и опубликовать.

Теперь я ищу способ входа на несколько серверов одновременно, чтобы я мог быстрее получать результаты со всех серверов, а не проходить через них один за другим.

Я прошел черезнесколько ссылок на распараллеливание циклов, но не могу понять многое .. Может кто-нибудь, пожалуйста, помогите мне с этим?Я не могу использовать & в конце, потому что мне нужно обрабатывать данные в цикле, а это не просто пара строк.Мне нужно иметь возможность запускать несколько команд ssh и добавлять res в файл.

env="abcd" # assigned from user input
for HOST in $servers; do
    #       printf "\nConnecting and fetching information from $HOST"
    res=$(ssh -T -q $HOST "bash -s $env" <<'EOF'
        env=$1
        servername=$(hostname)
        wasinstances=$(ls -d /logfolder/WAS??/* 2> /dev/null | cut -d/ -f4)
        for instance in $instances; do
            inscount=$(ps -ef | grep -v grep | grep -c $instance)
            # build a result variable
        done
        printf "${result}"
    EOF
    )
    #   do something with res
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...