![如果客户端包含带有特定文本行的文件,如何扫描所有客户端](https://linux22.com/image/1063804/%E5%A6%82%E6%9E%9C%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8C%85%E5%90%AB%E5%B8%A6%E6%9C%89%E7%89%B9%E5%AE%9A%E6%96%87%E6%9C%AC%E8%A1%8C%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E6%89%AB%E6%8F%8F%E6%89%80%E6%9C%89%E5%AE%A2%E6%88%B7%E7%AB%AF.png)
因此,我要在这里询问一个重要问题,那就是我是否可以从一个设备扫描所有其他连接的设备,以查看它们的任何文件中是否有特定的文本行。
这有点像使用grep -rl "text to find" "file location"
命令,但它在你当前正在使用的一台机器上执行。现在我要问的是让我正在使用的机器扫描同一文件夹中的所有其他设备,查找包含要找到的文本的文件,如果它确实打印出包含文件的机器名称,就像在一台机器上一样
/etc/asterisk/sip.conf
/etc/network/interfaces
/etc/firewall
这是在一台机器上的操作,但现在我希望可以这样做
machine name /etc/firewall
machine name /etc/network/interfaces
或者是否可以做得更好一点
machine name
/etc/firewall
/etc/network/interfaces
我可能在要求不可能的事情,但我以前见过 ubuntu 做过不可能的事情
update1:自从我从 Rinzwind 那里得到一个解决方案后,我能够进入某些机器,但其他机器的 22 端口已关闭,因此仍然存在该问题update2:在 Rinzwind 的解决方案中添加和之间
已解决了端口问题-p 220
user@host
"grep
答案1
这
ssh user@host -p port "grep -rl 'help' /home/" >> /tmp/search.txt
将返回远程服务器 {host} 上 {port} 上使用 {user} 的 /home 内包含“help”的任何文件,并将其添加到“/tmp/search.txt”。这假定 {host} 将接受 {user} 作为有效用户,并可能提示输入密码。
为了使此方法在多台机器上工作,您可以读取包含用户和主机的配置文件并对其进行迭代。使用“python”或“perl”执行此操作可能更容易,因为您可以轻松地操作和格式化每次传递的结果,然后将结果写入标准输出。