linux - ssh-into多台服务器时如何创建一个日志文件

标签 linux bash ssh mount logfile

我想创建一个 bash 脚本来自动将自己连接到一堆服务器,在那里执行一些命令并将这些命令的输出保存在我用来连接的服务器上的一个日志文件中我自己到所有其他服务器。

到目前为止,我能够在我自己连接的每台服务器上创建一个日志文件,或者在我用来访问所有其他服务器的服务器的控制台上显示每条命令的输出。

我的脚本目前看起来像这样(我知道 for 循环,但我不想在这种情况下使用它们,因为我需要在每个服务器上执行不同的命令):

#!/bin/bash
ssh server1 <<EOF
hostname
printf '\n'
mount
EOF 

printf '\n'
printf '\n'
printf '\n'

ssh server2 <<EOF
hostname
printf '\n'
mount
EOF

...

我的想法是使用 &>> 运算符,因为我需要知道所有命令是否成功执行。最后,我希望只有一个日志文件,它应该看起来有点像这样:

server1

output of mount 



server 2 

output of mount 

... 

那么,我怎样才能设法只创建一个包含所有已执行命令结果的大型日志文件呢?另外,如果我使用 ssh -T 选项摆脱消息“由于标准输入不是终端,将不会分配伪终端”,这个脚本是否仍然可以正常工作?在我的脚本中使用 mount 挂载某些东西时,我是否必须转义/_ 等特殊字符?

提前致谢!

最佳答案

我建议使用像 logstash 这样的开源实用程序或 fluentd .

关于linux - ssh-into多台服务器时如何创建一个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253031/

相关文章:

c++ - 为什么结构和 union 之间存在大小不匹配?

php 文件自动重命名为 php.suspected

regex - 惰性正则表达式运算符在 bash 中不起作用

bash - su输入命令中如何定义环境变量

bash - 外壳 : Is it possible to parse optional parameters after non-optional ones?

php - 具有自定义 docker 镜像 SSH 的 Azure Web 应用程序

ssh - 如何通过SSH执行Mathematica脚本

linux - 如何以编程方式检查连接?

linux - 查找并sed : remove lines

python - 通过 SSH 打开 Python shell