首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本检查"diff“命令的输出

问使用shell脚本检查"diff“命令的输出
EN

Stack Overflow用户
提问于 2019-04-14 13:03:17
回答 2查看 811关注 0票数 0

我正在使用以下命令将我的linux计算机上的文件与远程计算机(两个AWS实例)上的另一个文件进行比较:

代码语言:javascript
复制
diff -s main <(ssh -i /home/ubuntu/sai_key.pem ubuntu@w.x.y.z 'cat /home/ubuntu/c1')

我想写一个shell脚本,当两个文件相同时什么也不做,并在linux机器(主机)中的文件发生变化时更新远程机器中的文件。

我希望shell脚本每30秒检查一次远程文件。

我只在我的主机上运行shell脚本,而不是在远程计算机上。

你能帮我一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-14 13:30:34

首先,我建议使用cmp而不是diff (我相信它更有效),但是这个解决方案应该可以在任何一种方式下工作。

您所需要做的就是编写一个bash脚本,其中包含一个if语句。如果cmp或diff命令不返回任何内容,则不需要执行任何操作。在另一种情况下,您只需要将当前的main文件scp到远程主机。

如果您决定使用cmp,If语句只需如下所示:

代码语言:javascript
复制
if cmp -s main <(ssh -i /home/ubuntu/sai_key.pem ubuntu@w.x.y.z 'cat /home/ubuntu/c1')
then
    echo "Match!"
else
    echo "No match!"
    scp ...
fi

如果你真的执着于使用diff,请在下面发表评论,我可以很快地写出一些等同的东西。

每隔30秒检查一次远程文件(运行此bash脚本)可能有点过分,但这实际上取决于您。要实现定期检查(这只适用于超过1分钟的时间间隔),您可以使用cron调度程序。我建议使用Crontab Guru创建cron调度并了解它们是如何工作的。出于您的目的,您只需要在crontab中添加一行代码(在终端中运行crontab -e来编辑您的crontab),如下所示:

代码语言:javascript
复制
* * * * * /absolute/path/to/shell/script.sh

确保您也使用正确的权限chmod脚本!

票数 1
EN

Stack Overflow用户

发布于 2019-04-14 15:03:42

不需要bash,diff,cmd,cron,...在ssh的帮助下,Python可以做任何事情:

代码语言:javascript
复制
import subprocess
import time

key_pair = 'AWS_Linux_key_pair.pem'
remote_name = 'ec2-user@ec2-3-16-214-98.us-east-2.compute.amazonaws.com'
file_name = 'fibonacci.py'
cat_string = "cat " + file_name

while True:
    command = 'ssh -i ' + key_pair + ' ' + remote_name + " '" + cat_string + "'"
    remote_lines = subprocess.getoutput(command)
    local_lines = subprocess.getoutput(cat_string)

    if remote_lines != local_lines:
        print("update")
        command = 'scp -i ' + key_pair + ' ' + file_name + ' ' + remote_name + ':'
        subprocess.getoutput(command)
    else:
        print("the same")
    time.sleep(30)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55672106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档