我需要在多台机器上添加/删除cron作业。我有以下将通过varible添加单个cron,但我需要varible添加多个,即
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
答案 0 :(得分:0)
存储多个值尖叫&#34;数组&#34;。使用数组来存储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
其他建议:
$hostname
是$hostnames
数组的一个元素。