用于从多个服务器收集信息的Bash脚本

时间:2016-04-20 12:37:35

标签: bash shell

我只有一点问题。

我制作了一个小shell脚本,允许我连接到服务器并收集某些文件并将它们压缩到另一台服务器上的另一个位置,这样可以正常工作。

这是风向标:

NullPointerException

我真正想做的是:

  1. 通过ssh连接时使用root密码登录
  2. 运行命令
  3. 注销
  4. 登录下一个服务器
  5. 重复直到所有日志都已编译完毕。
  6. 此外,它不是必不可少的,但是,如果我可以显示进度(也许是一个栏),那就太酷!!

    如果有人能提供帮助那就太棒了。

    我在n00b和新手之间所以请温柔地对待我!!

2 个答案:

答案 0 :(得分:1)

ssh可以将命令作为参数在远程计算机上运行:

ssh -T user@server1 "tar -czf - /somefolder/anotherfolder"

这将在远程机器上执行tar命令,将tar的输出写入stdout,该命令由ssh命令传递给本地机器。所以你可以在某处本地编写它(远程机器上不需要/tmp/logs/):

ssh -T user@server1 "tar -czf - /somefolder/anotherfolder" > /path/on/local/machine/log1.tgz

如果您只想在删除服务器上收集它们(不希望将它们传输到本地计算机),只需执行直接版本:

ssh -T user@server1 "mkdir /tmp/logs/"
ssh -T user@server1 "tar -cvzf /tmp/logs/log1.tgz /somefolder/anotherfolder"
ssh -T user@server1 "tar -cvzf /tmp/logs/log2.tgz /somefolder/anotherfolder"
…
ssh -T user@server1 "tar -czvf /tmp/logs_all.tgz /tmp/logs"

答案 1 :(得分:1)

您可以发送一个tar命令,将压缩存档写入标准输出并将其保存在本地:

ssh user@server1 'tar -C /somefolder -czvf - anotherfolder' > server1.tgz
ssh user@server2 'tar -C /somefolder -czvf - anotherfolder' > server2.tgz
...