Прежде всего, я бы рекомендовал использовать cmp
вместо diff
(я считаю, что это более эффективно), но это решение должно работать в любом случае.
Все, что вам нужно сделать, это написать скрипт bash с оператором if. Если команда cmp
или diff
ничего не возвращает, вам не нужно предпринимать никаких действий. В другом случае вам просто нужно scp
ваш текущий файл main
на удаленном хосте.
Если вы решите использовать cmp
, то выражение if просто должно выглядеть следующим образом:
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
, прокомментируйте ниже, и я могу написать что-то действительно быстрое, что эквивалентно.
Проверка удаленного файла (запуск сценария bash) каждые 30 секунд может быть немного излишней, но это действительно ваше дело. Для выполнения периодической проверки (это работает только для временных интервалов свыше 1 минуты), вы можете использовать планировщик cron. Я рекомендую использовать Crontab Guru для создания расписаний cron и понять, как они работают. Для вашей цели вам просто нужно добавить одну строку в ваш crontab (в вашем терминале введите crontab -e
, чтобы отредактировать ваш crontab) следующим образом:
* * * * * /absolute/path/to/shell/script.sh
Убедитесь, что у вас есть chmod
скрипт с необходимыми правами доступа!