shell脚本如何执行指定函数(ansbile任务脚本及ansbile

您所在的位置:网站首页 ansible执行shell脚本 shell脚本如何执行指定函数(ansbile任务脚本及ansbile

shell脚本如何执行指定函数(ansbile任务脚本及ansbile

2023-05-08 04:49| 来源: 网络整理| 查看: 265

由于工作中经常需要使用ansible去批量执行脚本,再对ansible返回的结果进行过滤统计入库,为了实现自动化采集,设置定时任务执行ansible采集及过滤脚本

 

举例说明:

#定时任务脚本内容#!/bin/bash #调用ansible script模块执行本地脚本,获取所有被管理主机的磁盘信息 ansible all -m script -a "采集脚本路径" -b > 临时文件 #根据成功返回内容过滤出有效信息 for info in $(awk '过滤规则' 临时文件) do #将成功信息insert入数据库 done #根据错误返回内容过滤出有效信息 for err_info in $(awk '过滤规则' 临时文件) do #将错误信息insert入数据库 done #采集脚本内容 #!/bin/bash #采集内容略

 

采集逻辑是,通过执行定时任务脚本,调用ansbile管理机上的采集脚本,获取所有被管理机器的数据信息。

此脚本的缺陷是,移植性极差,并且强依赖采集脚本(若采集脚本丢失,则导致定时任务执行失败),随着脚本增加会导致脚本管理不方便,因此考虑将两个脚本合成一个脚本,做到一个脚本实现全功能。

 

合成脚本的实现想法:

根据传入的参数决定执行的函数,样例:

#!/bin/bash #数据采集函数 function info_collect() { #采集内容 } #定时任务函数 function cron_script() {  ansible all -m script -a "$0 info_collect" -b}

#主函数,传入$1变量,根据变量内容决定执行的函数function main() {  case $1 in    "info_collect")      info_collect      ;;    "cron_script")      cron_script      ;;    *)      echo "error"      exit 1      ;;    esac}

func_select=${1:-cron_script}  #脚本默认执行cron_script这个函数main $func_select

脚本逻辑:脚本执行时根据位置变量$1(若没有传入参数,则默认值为cron_script)选择执行对应的函数,此函数使用ansible的script模块调用同个脚本自身,根据传入新位置变量info_collect调用数据采集函数执行相关操作。

至此,实现脚本二合一。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3