远程命令执行在这里文档和分配变量

时间:2018-09-26 04:15:03

标签: linux bash variables ssh scripting

格式,语法,我从另一篇文章[这里] [1]获得 Collecting the output of a remote ssh command in a variable

我正在尝试获取文件夹内容的列表,并将它们与特定进程的列表进行比较。我需要知道所有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 :(得分:0)

我通过使用以下代码使其工作,但是一直很忙,因此无法返回并发布。

现在,我正在寻找一种同时登录多台服务器的方法,这样我就可以更快地从所有服务器获得结果,而不必一一遍遍。

我在并行化循环中遍历了几个链接,但了解得不多。.有人可以帮我这个忙吗?最后,我无法使用&,因为我需要在循环中处理数据,而不仅仅是两行。我需要能够触发多个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