ops/cronjobs/save_cronjobs.sh

69 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
usage() {
echo "Usage: ${0} <local_root_dir>"
exit 1
}
get_hosts_json() {
curl -s http://cloud23.cvtt.vpn:6789/admin/cvtt_hosts | ${HOME}/bin/hjson -j
}
get_user_hosts() {
User=${1}
Domain=${2}
get_hosts_json | jq -r \
--arg domain "${Domain}" \
--arg usr "${User}" \
'.[$domain] | to_entries[] | select(.value.users[] | contains($usr)) | .key'
}
echo "Started ${0} ${*} ..."
Domain=cvtt.vpn
RootDir=${1}
if [ ! -d "${RootDir}" ]; then
usage
fi
cd ${RootDir}
Cmd="git pull"
echo ${Cmd} && eval ${Cmd}
for User in cvtt oleg
do
echo "User=$User"
hosts=$(get_user_hosts ${User} ${Domain})
mkdir -p ${RootDir}/${User}
print ${hosts}
exit
for host in ${hosts}
do
echo "===================="
echo "${host}:${User}"
Cmd="ssh ${User}@${host}.${Domain} 'crontab -l' | tee ${RootDir}/${User}/${host}.cron"
echo ${Cmd} && eval ${Cmd}
done
done
cd ${RootDir}
Cmd="find -type f -empty -delete -print"
echo ${Cmd} && eval ${Cmd}
Cmd="find -type d -empty -delete -print"
echo ${Cmd} && eval ${Cmd}
Cmd="git add ."
echo ${Cmd} && eval ${Cmd}
Cmd="git commit -a -m '$(date)'"
echo ${Cmd} && eval ${Cmd}
Cmd="git pushall"
echo ${Cmd} && eval ${Cmd}
echo "Done ${0} ${*}"