gpt4 book ai didi

bash - 通过ssh更新远程cron

转载 作者:行者123 更新时间:2023-12-02 14:07:18 25 4
gpt4 key购买 nike

我需要在多台计算机上添加/删除cron作业。我在下面将通过一个变量添加单个cron,但我需要该变量添加多个即

CRON1 =添加cron &&添加第二个cron &&添加第三个cron。

我尝试了各种表达式,但是在执行第二个命令时总是会出错。

#!/bin/bash
USERNAME=user
HOSTS="1.2.3.4 4.3.2.1"

CRON1='(crontab -l 2>/dev/null; echo "*/5 * * * * /path/to/job") | crontab -'

for HOSTNAME in ${HOSTS} ; do
ssh -l ${USERNAME} ${HOSTNAME} << EOF

$CRON1

EOF
done

最佳答案

存储多个值会尖叫“数组”。使用数组存储cron作业。然后,您可以做的是将Heredoc切换到一个可动态生成必要的echo命令的管道。

#!/bin/bash

username=user
hostnames=(1.2.3.4 4.3.2.1)
jobs=(
'*/5 * * * * /path/to/job1'
'*/5 * * * * /path/to/job2'
'*/5 * * * * /path/to/job3'
)

for hostname in "${hostnames[@]}"; do
{
printf '{\n'
printf 'crontab -l 2>/dev/null\n'
for job in "${jobs[@}}"; do printf 'echo %q\n' "$job"; done
printf '} | crontab -'
} | ssh -l "$username" "$hostname"
done

其他建议:
  • 所有caps变量名都保留给shell。最好自己避免。
  • 成对使用单数和复数变量名。 $hostname$hostnames数组的一个元素。
  • 关于bash - 通过ssh更新远程cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48207637/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com