【发布时间】:2022-01-07 23:52:24
【问题描述】:
最近开始熟悉ansible。
在这样的任务上把我踢向正确的方向。有必要使用 ansible 在 bash 上重复该脚本,该脚本依次处理多个 if else 循环,该脚本还使用执行命令的变量。
我应该使用哪个构造来重新创建if else 在 ansible playbook 中循环?
让我举个例子。
非常感谢您的帮助。
file1=$(cat /root/md_sum/00-system.conf.bak)
file2=$(cat /usr/lib/sysctl.d/00-system.conf)
file_time2=$(date -r /usr/lib/sysctl.d/00-system.conf)
date_audit2=$(date -r /usr/lib/sysctl.d/00-system.conf +%H:%M:%S)
audit_key=config_kernel_activ
#check audit
if [[ $(auditctl -l) = *"-w /usr/lib/sysctl.d/00-system.conf -p rwa"* ]];
then
echo "audit up"
else
echo "audit down";auditctl -w /usr/lib/sysctl.d/00-system.conf -p war -k $audit_key
fi
#check sum
if (ls -A /root/md_sum/00-system.md5);
then
echo "sum up"
else
echo "sum down";md5sum /usr/lib/sysctl.d/00-system.conf > /root/md_sum/00-system.md5
fi
#check bak file
if (ls -A /root/md_sum/00-system.conf.bak);
then
echo "bak files are present"
else
echo "bak files are not present";cp /usr/lib/sysctl.d/00-system.conf /root/md_sum/00-system.conf.bak
fi
#if sum was change/else compare
if [[ $(md5sum -c /root/md_sum/00-system.md5) = *OK* ]];
then
echo "files have not changed"
else
echo "files has changed "$file_time2;echo "CHANGES 00-system.conf ";comm -31 <(tr ' ' $'\n' <<< $file1 | sort) <(tr ' ' $'\n' <<< $file2 | sort);echo "more details ";ausearch -k $audit_key -i | grep $date_audit2 | grep "ouid"
fi
【问题讨论】:
-
问题是什么?期望的输出是什么?请细化问题,以便我们正确回答。
-
校验和命令中的条件看起来是不必要的复杂。为什么要创建子外壳?您可以使用
if [[ -e /root/md_sum/00-system.md5 ]]; ...达到相同的效果。 -
@KevinC 感谢您的回答。我需要 ansible 来做 bash 脚本所做的事情,不包括传递脚本或将其存储在服务器上。
-
@user1934428 感谢您的评论,我会考虑的!