由于我使用ansible来设置cron任务,因为我想避免在所有服务器上同时运行完全相同的任务,所以我正在寻找一个优雅当我重新扮演我的角色时,通过保持独立性来“随机”生成cron的解决方案。基于字符串生成剩余相同的cron值
我做这个工作的脚本:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "Syntax error : at least one argument is needed"
echo "Syntax: $0 string [ -hmbf ]"
echo "-h : display only the hour"
echo "-m : display only the minute"
echo "-b : display both hour and minute"
echo "-f : display both hour and minute in cron format"
exit
fi
case $2 in
-h|--hour)
onlyhour=true
;;
-m|--minute)
onlyminute=true
;;
-b|--both)
bothhourminute=true
;;
-f|--full)
fullcron=true
;;
*)
# unknown option
;;
esac
n=$(md5sum <<< "$1")
number=$((0x${n%% *}))
number=${number#-}
position=0
while [ $position -lt ${#number} ]; do
onenumber=${number:$position:1}
twonumber=${number:$position:2}
if [[ $onenumber -ge 0 && $onenumber -le 6 && -z ${hour+x} ]]; then hour=$onenumber; fi
if [[ $twonumber -ge 0 && $twonumber -le 59 && -z ${minute+x} ]]; then minute=$twonumber; fi
let position=position+1
if [[ -n "$hour" && -n "$minute" ]]
then
if [ "$onlyhour" = true ] ; then
echo $hour
exit 0
elif [ "$onlyminute" = true ] ; then
echo $minute
exit 0
elif [ "$fullcron" = true ] ; then
echo $minute $hour '* * *'
exit 0
else
echo $minute $hour
exit 0
fi
fi
done
的想法是调用脚本,并给服务器名作为参数。
我仍然不相信我自己的解决方案。有没有更好的方法来做到这一点?我正在寻找Ansible中直接可用的东西。
这interresting ......但不具有不确定性。结果每次都会有所不同 –