Zabbix_Agent一键安装脚本(包含ansible-playbook批量执行脚本)

为了快速安装配置zabbix_agent,特地写了此shell脚本,脚本实现功能如下:
1、自动检测操作系统类型,目前支持Ubuntu/Centos/Redhat
2、自动获取安装agent主机IP地址
3、交互判断主机IP是否可用,用户输入正确IP地址
4、输出信息友好性:输出带颜色提示信息
5、脚本健壮性:自动判断zabbix_agent配置文件路径

#!/bin/bash# 输出绿色文本函数
echo_green() {echo -e "\e[32m$1\e[0m"
}# 输出红色文本函数
echo_red() {echo -e "\e[31m$1\e[0m"
}# 获取主机非本地回环IP地址
detected_ip=$(hostname -I | awk '{print $1}') # 获取第一个非本地回环IP地址
echo_green "检测到的IP地址是: $detected_ip"# 询问用户是否要使用检测到的IP地址
read -p "您要使用这个IP地址吗?(Y/n): " use_detected_ip
if [[ $use_detected_ip =~ ^([nN][oO]|[nN])$ ]]
thenread -p "请输入您要使用的IP地址: " user_ipzabbix_server_ip=$user_ip
elsezabbix_server_ip=$detected_ip
fi# 检测操作系统并安装Zabbix Agent
echo_green "正在检测操作系统..."
if [ -f /etc/debian_version ]; thenecho_green "检测到Debian/Ubuntu系统,正在使用apt安装Zabbix Agent..."sudo apt install -y zabbix-agent
elif [ -f /etc/redhat-release ]; thenecho_green "检测到RedHat/CentOS系统,正在使用yum安装Zabbix Agent..."sudo yum install -y zabbix-agent
elseecho_red "不支持的操作系统"exit 1
fi# 寻找Zabbix Agent配置文件
zabbix_conf=$(find / -name zabbix_agentd.conf 2>/dev/null | head -n 1)
if [ -z "$zabbix_conf" ]; thenecho_red "未找到Zabbix Agent配置文件。"exit 1
fi
echo_green "找到Zabbix Agent配置文件: $zabbix_conf"# 获取本机主机名
hostname=$(hostname)# 更新zabbix_agentd.conf文件
echo_green "正在更新Zabbix Agent配置..."
sudo sed -i "s/^Server=.*$/Server=$zabbix_server_ip/" $zabbix_conf
sudo sed -i "s/^ServerActive=.*$/ServerActive=$zabbix_server_ip/" $zabbix_conf
sudo sed -i "s/^Hostname=.*$/Hostname=$hostname/" $zabbix_conf# 重启Zabbix Agent服务并设置开机自启动
echo_green "正在重启Zabbix Agent并设置开机自启..."
sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent# 输出修改的配置和端口信息
echo_green "Zabbix Agent配置已更新:"
echo_green "Server: $zabbix_server_ip"
echo_green "ServerActive: $zabbix_server_ip"
echo_green "Hostname: $hostname"
echo_green "Zabbix Agent使用的端口:10050"  # 默认端口echo_green "Zabbix Agent安装和配置完成。"

使用方法:
保存脚本为install_zabbix_agent.sh。
赋予脚本执行权限:chmod +x install_zabbix_agent.sh。
以root用户或使用sudo运行脚本:./install_zabbix_agent.sh。

脚本转换为Ansible playbook的基本框架

---
- name: Install Zabbix Agenthosts: allbecome: yesvars_prompt:- name: zabbix_server_ipprompt: "Enter the Zabbix server IP"private: no- name: user_defined_ipprompt: "Do you want to use the detected IP or enter a new one? (detected/enter)"private: notasks:- name: Detect IP addressshell: hostname -I | awk '{print $1}'register: detected_ipwhen: user_defined_ip == "detected"- name: Set IP to user definedset_fact:zabbix_server_ip: "{{ hostvars[inventory_hostname]['detected_ip'].stdout }}"when: user_defined_ip == "detected"- name: Install Zabbix agent on Debian/Ubuntuapt:name: zabbix-agentstate: presentwhen: ansible_os_family == "Debian"- name: Install Zabbix agent on RedHat/CentOSyum:name: zabbix-agentstate: presentwhen: ansible_os_family == "RedHat"- name: Find Zabbix Agent configuration filefind:paths: "/"patterns: "zabbix_agentd.conf"recurse: trueregister: zabbix_conf- name: Update Zabbix Agent configurationlineinfile:path: "{{ zabbix_conf.files[0].path }}"regexp: "^{{ item.param }}=.*$"line: "{{ item.param }}={{ item.value }}"with_items:- { param: 'Server', value: "{{ zabbix_server_ip }}" }- { param: 'ServerActive', value: "{{ zabbix_server_ip }}" }- { param: 'Hostname', value: "{{ ansible_hostname }}" }- name: Restart and enable Zabbix Agentsystemd:name: zabbix-agentstate: restartedenabled: yes

说明:

变量提示:
使用vars_prompt来在playbook运行前收集用户输入。你可以根据实际情况调整它来收集IP地址等信息。
任务执行条件:
使用when语句来根据操作系统执行相应的安装任务。
配置文件搜索和编辑:
使用find模块来查找配置文件,然后用lineinfile模块更新文件内容。

运行Playbook:

要运行这个playbook,你需要先安装Ansible,然后保存上面的内容到一个文件中(例如install_zabbix_agent.yml),之后可以使用以下命令来运行它:

ansible-playbook install_zabbix_agent.yml -i inventory_file

这里的inventory_file是你的Ansible inventory文件,其中包含了你想要管理的主机列表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术周刊的转变:如何平衡热爱与现实?

大家好,我是那个自己打脸自己的猫哥,本来说周刊不做订阅制的,现在却推出了订阅专栏。今天想为自己辩护一下,同时聊聊技术周刊今后的发展计划。 首先回顾一下我过去的想法吧,然后再解释为什么会突然出现转变。 出于对…

2024.4.12力扣每日一题——找到冠军 I

2024.4.12 题目来源我的题解方法一 哈希表方法二 列式遍历统计方法三 列式遍历优化统计 题目来源 力扣每日一题;题序:2923 我的题解 方法一 哈希表 哈希表存储不可能是冠军的队伍,最后没在哈希表中的队伍就是冠军。 时间复杂度&#xff1a…

Python学习之-Pandas详解

前言: Pandas 是一个开源的 Python 数据分析库,它提供了高性能、易于使用的数据结构和数据分析工具。Pandas提供 了方便的类表格和类SQL的操作,同时提供了强大的缺失值处理方法,可以方便的进行数据导入、选取、清洗、处理、合并、…

如何进行宏观经济预测

理性预期经济学提出了理性预期的概念,强调政府在制定各种宏观经济政策时,要考虑到各行为主体预期对政策实施有效性的影响,积极促成公众理性预期的形成,从而更好地实现宏观调控的目标。政府统计要深入开展统计分析预测研究&#xf…

poi-tl的使用(通俗易懂,全面,内含动态表格实现 包会!!)

最近在做项目时候有一个关于解析Html文件,然后将解析的数据转化成word的需求,经过调研,使用poi-tl来实现这个需求,自己学习花费了一些时间,现在将这期间的经验总结起来,让大家可以快速入门 poi-tl的介绍 …

979: 输出利用先序遍历创建的二叉树的后序遍历序列

解法&#xff1a; #include<iostream> using namespace std; struct TreeNode {char val;TreeNode* left;TreeNode* right;TreeNode(char c) :val(c), left(NULL), right(NULL) {}; }; TreeNode* buildTree() {char c;cin >> c;if (c #) {return NULL;}TreeNode*…

Android图形显示架构概览

图形显示系统作为Android系统核心的子系统&#xff0c;掌握它对于理解Android系统很有帮助&#xff0c;下面从整体上简单介绍图形显示系统的架构&#xff0c;如下图所示。 这个框架只包含了用户空间的图形组件&#xff0c;不涉及底层的显示驱动。框架主要包括以下4个图形组件。…

内网通如何去除广告,内网通免广告生成器

公司使用内网通内部传输确实方便&#xff01;但是会有广告弹窗推送&#xff01;这个很烦恼&#xff01;那么如何去除广告呢&#xff01; 下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1CVVdWexliF3tBaFgN1W9aw?pwdhk7m 提取码&#xff1a;hk7m ID&#xff1a;…

Uniapp小程序路由拦截器、navigator不被拦截

添加一个文件interceptor.js&#xff08;名字随意、位置随意&#xff09; import store from "./store";let config {//白名单页面whiteList: ["/pages/login/login","/pages/guides/guides","/pages/index/index"],//登录页loginPa…

mysql dll文件的缺失和Can‘t connect to MySQL server on ‘localhost‘ (10061)

个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔…

InternlM2

第一次作业 基础作业 进阶作业 1. hugging face下载 2. 部署 首先&#xff0c;从github上git clone仓库 https://github.com/InternLM/InternLM-XComposer.git然后里面的指引安装环境

【自研网关系列】请求服务模块和客户端模块实现

&#x1f308;Yu-Gateway&#xff1a;&#xff1a;基于 Netty 构建的自研 API 网关&#xff0c;采用 Java 原生实现&#xff0c;整合 Nacos 作为注册配置中心。其设计目标是为微服务架构提供高性能、可扩展的统一入口和基础设施&#xff0c;承载请求路由、安全控制、流量治理等…

【机器学习】数学基础详解

线性代数&#xff1a;构建数据的骨架 数学对象 标量&#xff08;Scalar&#xff09; 标量是最基本的数学对象&#xff0c;代表了单个的数值&#xff0c;无论是整数还是实数。在机器学习中&#xff0c;标量可以用来表示一个模型的单个参数&#xff0c;如偏差&#xff08;bias&…

如何更好地理解 Vue 3 watch 侦听器的用法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Java中Map和Set的用法及介绍

在Java中&#xff0c;Map 和 Set 是两种非常常用的集合类型&#xff0c;它们分别属于Java集合框架的一部分。以下是它们的介绍和用法&#xff1a; Map (映射) Map 是一个存储键值对&#xff08;key-value pairs&#xff09;的集合&#xff0c;它允许你通过键&#xff08;key&…

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数…

【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.哈希概念2.哈希冲突…

18. Linux API 编程预备知识

【操作系统基础程序】 操作系统提供了一组用户使用计算机所需的基础程序&#xff0c;实现了使用计算机必备的基础功能&#xff0c;比如&#xff1a;用户管理、外存储器管理、文件管理、设置网络连接、编译程序&#xff0c;这组程序所在目录会记录在环境变量中&#xff0c;直接…

java项目实战之图书管理系统(1)

✅作者简介&#xff1a;大家好&#xff0c;我是再无B&#xff5e;U&#xff5e;G&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 1.背景 图书管理系统是一种用于管理图书…

基于springboot的网上订餐管理系统

前言 本次毕业设计的题目就是基于Java的网上订餐管理系统。本论文就毕业设计的容&#xff0c;系统地阐述了整个基于Java的网上订餐管理系统的功能与实现。实现了从菜品管理&#xff0c;菜品分类和查询&#xff0c;到订餐车实现&#xff0c;用户订单处理&#xff0c;再到系统管…