如何在 Linux 上监控远程文件系统?

如何在 Linux 上监控远程文件系统?

我的业务目的是监控Linux上的远程文件系统,如果有任何新文件,将它们SFTP到另一台机器上并删除它们。

但是,限制是我无法在远程计算机上安装任何库。因此,我正在考虑对远程计算机实施间隔 SSH 命令轮询。

我的问题:

  1. 间隔轮询可以实现吗?或者你有更好的想法吗?

  2. 我应该使用什么样的 SSH 命令来监控远程计算机?

答案1

简单又偷懒的方法:

crontab与本地系统上的普通用户(每 15 分钟):

*/15 * * * * /bin/bash /path/to/script.sh

代码:

#!/bin/bash

source ~/.bashrc

ssh-add /home/me/.ssh/id_rsa
ssh user@remote-server printf '%s\n' '/path/to/new_files/*' > ~/.$$_remote-files
if ! cmp ~/.$$_remote-files ~/.remote-files &>/dev/null; then
    echo 'new file(s) or dir(s) detected !'
    # ssh user@remote-server rm -rf '/path/to/new_files/*'
    mv ~/.$$_remote-files ~/.remote-files
fi

要实现自动 ssh 登录,您必须生成一个没有密码的 ssh-passphrase:

$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/me/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/me/.ssh/id_rsa
Your public key has been saved in /home/me/.ssh/id_rsa.pub
The key fingerprint is:
123456789ABCDEF

答案2

进入

您还可以使用entr男人,主页):文件更改时运行任意命令

ls pathToRead | entr -r scp pathToRead remoteDestination

还检查其他复制方式

答案3

  1. 更好的方法是在文件服务器上安装扫描仪(基于inotify)。一旦新文件出现,扫描仪就会向任何感兴趣的人发送某种消息(无论是 UDP 广播、电子邮件还是其他消息)。这将需要一些编程,并且此类应用程序必须安装并在文件服务器上运行。
    如果您无法做到这一点 - 投票是唯一的选择。

  2. 不是ssh命令,而是sftp命令。该命令是ls.它还需要一些编程,但可以完全在 shell 中完成。

相关内容