Shell 登录主服务器然后登录其节点的脚本

Shell 登录主服务器然后登录其节点的脚本,shell,Shell,我需要编写一个脚本,使用ssh登录到主服务器,并使用fuel node命令查看节点,然后分别连接到其节点以查看/var/log/nova all.log中所有节点的日志文件 t.ex node a 192.168.1.2 node b 192.168.1.3 node c 192.168.1.4 我试着这么做 #!/bin/bash for i in 192.168.1.2 192.168.1.3 192.168.1.4 do ssh -t "*masterserver name*" s

我需要编写一个脚本,使用
ssh
登录到主服务器,并使用
fuel node
命令查看节点,然后分别连接到其节点以查看
/var/log/nova all.log中所有节点的日志文件

t.ex
node a 192.168.1.2
node b 192.168.1.3
node c 192.168.1.4
我试着这么做

#!/bin/bash

for i in 192.168.1.2 192.168.1.3 192.168.1.4

do

ssh -t "*masterserver name*" ssh $i | cat /var/log/nova-all.log

done

它卡在第一个节点中,什么也不做。

您的方法不起作用的原因是管道将由您的本地系统解释。因此,只有
ssh$i
(其中
$i
被相应的IP
替换)将在主服务器上执行。
cat/var/log/nova all.log`将在本地计算机上执行,而不是通过主服务器发送以在子节点上执行

如果您使用本地shell并且
$yourmasterserver
上的shell是
bash
,则应使用以下类似操作:


ssh$yourmasterserver主服务器可以是任何名称,,,,我想连接到节点a.b,c并显示所有节点的日志文件。如果您可以添加代码,这会有所帮助,这样我们就可以看到您迄今为止所做的尝试。您想让主服务器或本地主机连接到您的节点吗?首先从我的锁定主机连接到主服务器对于节点,我无法直接连接到节点。非常感谢您的回答。据我所知,我将在一个文件中保存这四行。我将在masterserver上的主机中保存此文件吗?不,不涉及任何文件。“here document”不是一个文件,它是一个临时文档,写在命令行上,并由那里的某个命令用作stdin。只需键入即可(或粘贴)第一个代码块的所有6行到您的shell中,它们应该可以工作。(如果我没有犯任何错误,我无法测试它们,因为我没有访问您的服务器的权限。)因此,我将只在命令行中复制这六行,然后这四行将自动保存在此处文档中?是的,除非它们不会保存。(这里的文档是临时的和不稳定的。它们只存在于内存中,并且只在命令行需要它们的时候才存在。)这四行将成为第一行的输入。它现在可以工作了,但是您能帮助我以如下格式输出:ddmmyy hh:mm:ss node xx PROCESS LOGLEVEL MESSAGE吗
for subnode in $(fuel node | awk '{ print $3 }')
do
  ssh $subnode cat /var/log/nova-all.log
done