简介

Ansible 是一款开源的自动化工具,广泛应用于配置管理、应用部署、任务自动化以及多节点管理等领域。它由 Michael DeHaan 于 2012 年创建,ansible 目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。

官网文档地址:Ansible Documentation — Ansible Community Documentation

特点:

  • 无代理架构

不需要再被控节点上安装任何专门的代理软件。通过 SSH 与被控节点通信,实现任务的执行和数据的传输

    优点

  1. 简化部署:无需在每个被控节点上安装和维护代理程序,减少运维工作量。

  2. 提高安全性:减少了潜在的攻击面,因为不需要开放额外的端口或运行额外的服务。

  3. 节省资源:避免了代理软件占用系统资源的问题。

  • 基于SSH

  • 通过 SSH 协议与被控节点通信,能都在大多数 Unix 系统上无缝运行。且支持Windows 主机,使用 PowerShell 或 WinRM 进行管理

   优点

  1. 广泛兼容性:支持多种操作系统,无需额外配置。

  2. 安全性高:利用现有的 SSH 安全机制,确保数据传输的机密性和完整性。

  • 声明式任务

  • 使用声明式语言(YAML)定义任务,描述的是目标状态而非具体的执行步骤。这是的配置更加直观易读,同时减少了错误和不一致性

    优点

  1. 可读性强:YAML 格式简洁明了,易于理解和编写。

  2. 可重用性高:通过剧本(Playbook) 和角色(Roles)的复用,实现复杂任务的模块化管理。

  3. 幂等性:确保多次运行相同的任务不会导致不一致的状态。

各个板块的概念

主机清单

Ansible 中用于管理目标主机的配置文件。它是一个文本文件,其中列出了要在其上执行 Ansible 任务的远程主机。
可以包含 IP 地址、域名或主机别名等信息,且可以将主机分组以便更好地组织和管理。文件默认位于 /etc/ansible/hosts 文件中,但也可以使用 -i 参数指定其他位置的清单文件。
#这是一个示例:
[web-servers]
webserver1.example.com
webserver2.example.com[database-servers]
dbserver1.example.com
dbserver2.example.com

 连接插件

Ansible 中的组件,用建立与远程主机的连接。Ansible 支持多种连接插件,包括 SSH、WinRM 等。连接插件的选择取决于目标主机的操作系统和配置。
通过连接插件,Ansible 可以与目标主机进行通信,并在其上执行任务。在主机清单中,可以通过在主机名后连接插件名称来指定连接插件。如果不指定,默认使用 SSH 连接插件。
这是一个示例
[web-servers]
webserver1.example.com ansible_connection=ssh
webserver2.example.com ansible_connection=ssh[database-servers]
dbserver1.example.com ansible_connection=ssh
dbserver2.example.com ansible_connection=winrm

模块

是 Ansible 的核心组件,用于在远程主机上执行任务。
Ansible 提供了丰富的内置模块,涵盖了各种任务,如文件操作、软件包管理、服务管理、用户管理等。还能通过在剧本中调用模块,可以实现自动化任务的执行。以下是一些常见的模块:
  • ping:检测远程主机的连通性。
  • command/shel:在目标主机上执行命令或命令字符串。
  • copy:将文件从控制节点复制到远程主机。
  • file:创建、修改或删除文件和目录。
  • template:使用 jinja2 模板生成文件,并将其复制到远程主机。
  • apt/yum:在基于 Debian/RedHat 的系统上安装、升级或移除软件包。
  • service:启动、停止、重新启动或重载系统服务。
  • user/group:创建、修改或删除用户和用户组。
  • lineinfile:在文中添加、修改或删除一行文本。
  • raw:在目标主机上执行原始命令,绕过模块系统。
  • wait_for:等待一定时间或直到某个条件为真。
  • script:在在目标主机上执行本地脚本。
  • git:克隆或更新 Git 代码库。
  • debug:打印调试信息。

Playbook【剧本】

是 Ansible 的核心组件之一,是一种以 YAML 格式编写的自动化任务描述文件。
每个 Playbook 由一个或多个 Play 组成。在每个 Play 下面,通过 tasks 关键字来定义一组任务。每个任务由一个或多个模块组成,用于在远程主机上实现自动化部署、配置和管理等操作。
# 这是一个示例
- name: Install and start Nginx # 描述 Playbook 或任务的简短名称hosts: web_servers # 指定要执行任务的目标主机或主机组become: yes # 可选参数,用于指定是否以管理员权限执行任务及执行任务的用户。tasks:- name: Install Nginxapt:name: nginxstate: present- name: Start Nginx serviceservice:name: nginxstate: started

安装操作

主机规划

主机IP说明
ansible-controller192.168.72.63安装ansible
ansible-node1192.168.72.64
ansible-node2192.168.72.65

环境准备【在对应的主机上执行命令】

配置主机名

# hostnamectl hostname ansible-controller# hostnamectl hostname ansible-node1# hostnamectl hostname ansible-node2

配置IP地址【改成自己主机所在的网段】

[root@ansible-controller ~]# nmcli c m ens160 ipv4.method manual ipv4.addresses 172.25.250.63/24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@ansible-controller ~]# nmcli c up ens160[root@ansible-node1 ~]# nmcli c m ens160 ipv4.method manual ipv4.addresses 172.25.250.64/24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@ansible-node1 ~]# nmcli c up ens160[root@ansible-node2 ~]# nmcli c m ens160 ipv4.method manual ipv4.addresses 172.25.250.65/24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@ansible-node2 ~]# nmcli c up ens160

关闭防火墙【三台主机均要执行】

systemctl disable --now firewalld

关闭Selinux

setenforece 0sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config

挂载仓库

临时挂载
mount /dev/sr0 /mnt
永久挂载
vim /etc/fstab
....
/dev/sr0	/mnt	iso9660		defaults	0	0# 检查挂载是否出错
mount -a

安装方法:

nsible 有三种安装方式,源码安装发行版安装Python 安装

使用发行版安装Python 安装两种方式时,Ansible 的安装包有两个,区别如下:

  • ansible-core:一种极简语言和运行时包,包含一组内置模块和插件。

  • ansible:一个更大的“包含电池”的软件包,它添加了社区精选的 Ansible 集合选择,用于自动化各种设备。

在用源码或者 Python 安装 Ansible 时,默认不会安装 sshpass 软件包,该软件包用来给 Ansible 提供密码验证被控端,因此如果在执行 Ansible 的命令时需要输入 ssh 的密码,则需要该软件包,该软件包通过 dnf install -y sshpass

源码安装【它只能安装 Ansible-core 且只需要在主节点上安装即可】

[root@ansible-controller ~]# dnf install python3.12 python3.12-pip sshpass
[root@ansible-controller ~]# tar xf ansible-2.16.3.tar.gz
[root@ansible-controller ~]# cd ansible-2.16.3/
[root@ansible-controller ansible-2.16.3]# python3 -m pip install -r ./requirements.txt
[root@ansible-controller ansible-2.16.3]# python3 setup.py install

发行版安装【只需要在主节点上安装即可】

安装epel源
[root@ansible-controller ~]# dnf install https://mirrors.aliyun.com/epel/epel-release-latest-9.noarch.rpm -y[root@ansible-controller ~]# ls /etc/yum.repos.d/
base.repo  epel-cisco-openh264.repo  epel.repo  epel-testing.repo  redhat.repo
安装ansible
# 安装包含常用模块的 Ansible
[root@ansible-controller ~]# dnf install ansible -y
# 或
# 安装最简洁的 Ansible
[root@ansible-controller ~]# dnf install ansible-core -y
安装验证
[root@ansible-controller ~]# ansible --version
ansible [core 2.14.9]config file = /etc/ansible/ansible.cfgconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python3.9/site-packages/ansibleansible collection location = /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/bin/ansiblepython version = 3.9.18 (main, Sep  7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/usr/bin/python3)jinja version = 3.1.2libyaml = True

Python安装

安装Python
# 安装 Python3 和 pip
[root@ansible-controller ~]# dnf install python3.12 python3.12-pip sshpass
安装ansible
# 安装 Ansible-core
[root@ansible-controller ~]# python3.12 -m pip install ansible-core==2.16.3# 安装 Ansible
[root@ansible-controller ~]# python3.12 -m pip install ansible
Requirement already satisfied: ansible in /usr/lib/python3.9/site-packages (7.7.0)
Requirement already satisfied: ansible-core>=2.14.7 in /usr/lib/python3.9/site-packages (from ansible) (2.14.17)
Requirement already satisfied: PyYAML>=5.1 in /usr/lib64/python3.9/site-packages (from ansible-core>=2.14.7->ansible) (5.4.1)
Requirement already satisfied: cryptography in /usr/lib64/python3.9/site-packages (from ansible-core>=2.14.7->ansible) (36.0.1)
Requirement already satisfied: packaging in /usr/lib/python3.9/site-packages (from ansible-core>=2.14.7->ansible) (20.9)
Requirement already satisfied: resolvelib<0.9.0,>=0.5.3 in /usr/lib/python3.9/site-packages (from ansible-core>=2.14.7->ansible) (0.5.4)
Requirement already satisfied: cffi>=1.12 in /usr/lib64/python3.9/site-packages (from cryptography->ansible-core>=2.14.7->ansible) (1.14.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging->ansible-core>=2.14.7->ansible) (2.4.7)
Requirement already satisfied: pycparser in /usr/lib/python3.9/site-packages (from cffi>=1.12->cryptography->ansible-core>=2.14.7->ansible) (2.20)
Requirement already satisfied: ply==3.11 in /usr/lib/python3.9/site-packages (from pycparser->cffi>=1.12->cryptography->ansible-core>=2.14.7->ansible) (3.11)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
安装验证
# 查看版本
[root@ansible-controller ~]# ansible --version
ansible [core 2.14.17]config file = /etc/ansible/ansible.cfgconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python3.9/site-packages/ansibleansible collection location = /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/bin/ansiblepython version = 3.9.19 (main, Aug 23 2024, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-2)] (/usr/bin/python3)jinja version = 3.1.2libyaml = True
设置参数自动补全
[root@ansible-controller ~]# python3.12 -m pip install argcomplete
[root@ansible-controller ~]# activate-global-python-argcomplete --user

配置主机映射

[root@ansible-controller ~]# cat >> /etc/hosts <<EOF
192.168.72.63	ansible-controller
192.168.72.64	ansible-node1
192.168.72.65	ansible-node2
EOF
# 后面可以跟个简短名,后续使用n1和n2
[root@ansible-controller .ssh]# vim /etc/hosts
192.168.23.63   ansible-controller
192.168.23.64   ansible-node1 n1
192.168.23.65   ansible-node2 n2
主机映射执行成功之后将文件复制到另外两个被控节点
[root@ansible-controller ~]# scp /etc/hosts ansible-node1:/etc
[root@ansible-controller ~]# scp /etc/hosts ansible-node2:/etc

免密登录

控制节点是运行 Ansible 的主机,负责发送任务并收集结果。被控节点是被 Ansible 管理的主机,无需安装任何额外软件,仅需确保 SSH 服务正常运行,并具备必要的访问权限。

只需要在主控节点上创建密钥对就好

[root@ansible-controller ~]# ssh-keygen
# -t可以指定加密算法
[root@ansible-controller ~]# ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 	# 一直按回车键
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub	# 公钥位置
The key fingerprint is:
SHA256:mnbdYPHKXn9SSKSSAgpSiZ20tnkrAJcbXmKM03P6c/Q root@ansible-controller
The key's randomart image is:
+---[RSA 3072]----+
| =oo             |
|o+=o  .       .  |
|+.%.o. .  .. o   |
|.* @.   . oo. .  |
|. * . . S.o... . |
| . o o + + +  . .|
|  . + = E + o  . |
|   . + . . . .. .|
|          .   .o |
+----[SHA256]-----+

拷贝公钥

创建成功后,执行以下命令将公钥拷贝到两台被控节点
# 查看隐藏目录
[root@ansible-controller ~]# ls -a
[root@ansible-controller ~]# cd .ssh/
# .pub即为公钥,使用rsa算法
[root@ansible-controller .ssh]# ls
id_rsa  id_rsa.pub  known_hosts  known_hosts.old
# 复制本机公钥到其它被控节点
[root@ansible-controller ~]# ssh-copy-id ansible-node1
# 或
[root@ansible-controller ~]# ssh-copy-id n1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ansible-node1's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'ansible-node1'"
and check to make sure that only the key(s) you wanted were added.[root@ansible-controller ~]# ssh-copy-id ansible-node2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ansible-node2's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'ansible-node2'"
and check to make sure that only the key(s) you wanted were added.# 或
# 执行命令后,输入正确密码即可
[root@ansible-controller ~]# ssh-copy-id root@192.168.72.64
[root@ansible-controller ~]# ssh-copy-id root@192.168.72.65
配置好之后做测试连接
# 如果免密做成功则无需密码即可登录
[root@ansible-controller ~]# ssh root@192.168.72.64
# exit可退回原来的主机
[root@ansible-node1 ~]# exit

注意:ssh-copy-id 命令格式有两种:

  1. ssh-copy-id 远程用户@远程IP 或 仅IP

  2. ssh-copy-id -i /root/.ssh/id_rsa.pub 远程用户@远程IP 或 仅IP

  3. 如果在生成密钥时指定了密钥的名称,此处需要通过 ssh-copy-id -i 指定的名称 远程用户@远程IP 或 仅IP

快速使用

创建项目目录

[root@ansible-controller ~]# mkdir ansible_ping
[root@ansible-controller ~]# cd ansible_ping/

创建清单文件

# 名称任意,直接命名inventory也可以
[root@ansible-controller ansible_ping]# vim inventory.ini
[root@ansible-controller ansible_ping]# cat inventory.ini 
[server]
192.168.72.64
n2

执行Ansible 

# 这里server是配置文件中括号内的名称,-m指模块  概念在前面有所提及
[root@ansible-controller ansible_ping]# ansible server -i inventory.ini -m ping
ansible-node1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}
# 此时node2节点报错,因为使用了缩写名n2
192.168.23.65 | UNREACHABLE! => {"changed": false,"msg": "Failed to connect to the host via ssh: Host key verification failed.","unreachable": true
}
# 只需改为节点对应IP或者全称即可(ansible-node2)
[root@ansible-controller ~]# cat inventory 
[server]
192.168.23.64
192.168.23.65
[root@ansible-controller ~]# ansible server -i inventory -m ping
192.168.23.64 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}
192.168.23.65 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}

文档就写到这里,若有需要请查看附加文件,里面有具体的综合示例

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

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

相关文章

超光谱相机的原理和应用场景

超光谱相机是光谱成像技术的尖端形态&#xff0c;具备亚纳米级光谱分辨率与超千波段连续覆盖能力&#xff0c;通过“图谱合一”的三维数据立方体实现物质的精准识别与分析。其核心技术架构、应用场景及发展趋势如下&#xff1a;一、核心技术原理1、‌分光机制‌‌干涉分光‌&am…

掌握MySQL函数:高效数据处理指南

​ 在 MySQL 数据库管理系统中&#xff0c;函数扮演着极为重要的角色。它们就像是数据库操作的得力助手&#xff0c;能够帮助开发者高效地完成各种数据处理任务。本文将深入探讨 MySQL 函数的方方面面&#xff0c;从其基本概念到实际应用&#xff0c;帮助读者全面掌握这一强大的…

10.SpringBoot的统一异常处理详解

文章目录1. 异常处理基础概念1.1 什么是异常处理1.2 为什么需要统一异常处理1.3 Spring异常处理机制2. SpringBoot默认异常处理2.1 默认错误页面2.2 自定义错误页面3. 全局异常处理器3.1 基础全局异常处理器3.2 统一响应格式3.3 使用统一响应格式的异常处理器4. 自定义异常4.1 …

No Hack No CTF 2025Web部分个人WP

No Hack No CTF 2025 Next Song is 春日影 hint&#xff1a;NextJS Vulnerability at /adminCVE-2025-29927Next.js 中间件权限绕过漏洞 访问admin路由发现跳转利用CVE&#xff1a; curl -i \-H "x-middleware-subrequest: middleware:middleware:middleware:middleware:m…

STM32第十八天 ESP8266-01S和电脑实现串口通信

一&#xff1a; ESP和电脑实现串口通信1. 配置 WiFi 模式 ATCWMODE3 // softAPstation mode 响应 : OK 2. 连接路路由器器 ATCWJAP"SSID","password" // SSID and password of router 响应 : OK 3. 查询 ESP8266 设备的 IP 地址 ATCIFSR 响应 : CIFSR:APIP…

STM32第十七天ESP8266-01Swifi模块

ESP8266-01S wifi模块1&#xff1a;ESP8266是实现wifi通讯的一个模块种类&#xff0c;有很多分类包含esp8266-12、esp8266-12E、ESP8266-01S、esp32等等。esp8266-01S由一颗esp8266作为主控再由一块flash作为存储芯片组成&#xff0c;带有板载芯片供电采用3.3V电压使用串口进行…

ProCCD复古相机:捕捉复古瞬间

在数字摄影盛行的今天&#xff0c;复古胶片相机的独特质感和怀旧风格依然吸引着众多摄影爱好者。ProCCD复古相机APP正是这样一款能够满足用户对复古摄影需求的应用程序。它通过模拟复古CCD数码相机的效果&#xff0c;让用户在手机上也能轻松拍出具有千禧年风格的照片和视频。无…

Spring Boot 应用启动时,端口 8080 已被其他进程占用,怎么办

1、修改application.yml配置文件&#xff0c;将端口号更改为未被占用的端口&#xff08;例如9090&#xff09;2、以管理员身份运行命令提示符在命令提示符窗口中输入命令netstat -ano | findstr :8080”输出结果可能如下&#xff1a;“TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING xx…

使用Jenkins完成springboot项目快速更新

✨重磅&#xff01;盹猫的个人小站正式上线啦&#xff5e;诚邀各位技术大佬前来探秘&#xff01;✨ 这里有&#xff1a; 硬核技术干货&#xff1a;编程技巧、开发经验、踩坑指南&#xff0c;带你解锁技术新姿势&#xff01;趣味开发日常&#xff1a;代码背后的脑洞故事、工具…

HDLBits刷题笔记和一些拓展知识(九)

文章目录HDLBits刷题笔记CircuitsFsm1Fsm1sFsm2Fsm3onehotExams/ece241 2013 q4Lemmings1Lemmings2Lemmings3Lemmings4Fsm onehotFsm ps2Fsm ps2dataFsm serialFsm serialdataFsm serialdpFsm hdlc未完待续HDLBits刷题笔记 以下是在做HDLBits时的一些刷题笔记&#xff0c;截取一…

CD46.【C++ Dev】list的模拟实现(1)

目录 1.STL库的list 2.模拟实现 节点结构体 list类 无参构造函数 尾插函数 迭代器★ begin() operator 前置 后置 operator-- 前置-- 后置-- operator! operator end() operator* const修饰的迭代器的设计 1.STL库的list 模拟实现list之前,先看看STL库里的…

数据结构——二叉树的基本介绍

————————————本文旨在讨论与学习计算机知识&#xff0c;欢迎交流————————————上一章&#xff0c;我们讲解了树结构的综述导论&#xff0c;那么&#xff0c;现在我们来深入了解一下树结构中最常用研究的结构——二叉树结构&#xff08;上一章的扩展——…

英伟达发布 Llama Nemotron Nano 4B:专为边缘 AI 和科研任务优化的高效开源推理模型

英伟达推出了 Llama Nem)otron Nano 4B&#xff0c;这是一款专为在科学任务、编程、符号运算、函数调用和指令执行方面提供强大性能与效率而设计的开源推理模型&#xff0c;其紧凑程度足以支持边缘部署。该模型仅包含 40 亿参数&#xff0c;却在内部基准测试中实现了比其他多达…

论文阅读笔记——Autoregressive Image Generation without Vector Quantization

MAR 论文 基于 VQ&#xff08;向量量化&#xff09;的图像生成方法具有显著优势&#xff0c;它通过离散化压缩将原始图像映射到有限的 codebook 空间&#xff0c;从而缩小学习范围、降低建模难度&#xff0c;同时这种离散表示更易于与自回归&#xff08;AG&#xff09;生成方式…

【科普】关于C 语言日志系统实战:如何同时输出到终端和文件?

1.概述 c语言没有现成的日志库&#xff0c;如果要记录日志&#xff0c;需要自己封装一个日志库。如果要实现日志级别和参数打印&#xff0c;还是比较麻烦的&#xff0c;正好在github找到了一个c语言开源日志库&#xff0c;可以实现日志级别打印&#xff0c;参数打印&#xff0…

2025,数字人借直播场景迈过“真假线”丨数智化观察

作者 | 曾响铃文 | 响铃说一夜带货超5500万GMV、观看人次1300万&#xff0c;罗永浩数字人在百度电商的直播首秀正在掀起新的行业浪潮——2025&#xff0c;数字人直播带货成功出圈&#xff0c;加速进入大众视野&#xff0c;被更多的消费者所认可。成就这场热潮的关键点之一&…

HTML表格导出为Excel文件的实现方案

1、前端javascript可通过mime类型、blob对象或专业库&#xff08;如sheetjs&#xff09;实现html表格导出excel&#xff0c;适用于中小型数据量&#xff1b;2、服务器端方案利用后端语言&#xff08;如python的openpyxl、java的apache poi&#xff09;处理复杂报表和大数据&…

企业微信iPad协议端强制拉群漏洞深度分析

正常一次最多邀请40人进群 超过40人的拉群&#xff0c;会变成邀请&#xff0c;需要对方同意 新版本修复了漏洞&#xff0c;但还是可以用老版本进行强制拉群 虽然官方也做了版本过低的限制&#xff0c;但还是有办法绕过 要么修改版本号或者登录几天新版本&#xff0c;之后就可以…

Python编译器(Pycharm Jupyter)

Pycharm下载不过多赘述pycharm导入anaconda创建的python环境选择想要的环境 Jupyter Jupyter 是一个开源的交互式计算环境&#xff0c;能够让用户将代码、文本&#xff08;包括 Markdown&#xff09;、可视化结果等内容整合在一个文档中&#xff0c;非常适合进行数据分析、科学…

漏洞修复与Fiddler抓包工具的使用

漏洞描述 1. 短信轰炸漏洞 Type:存在三个不同的值。Login是登录处,register是注册账号处的短信验证码获取值,还有一个update值。未注册的用户也可以进行发送短信。 2. 手机号绕过,修改密码漏洞(逻辑漏洞) 目前注册使用手机号与忘记密码的手机号验证测试都可以绕过, …