如何使用Ansible检测远程服务器Ethernet端口的运行状态
用Ansible核查远程主机以太网端口启用状态的两种方案
方案1:基于原生setup模块采集(无额外依赖)
Ansible的setup模块默认会采集目标主机的网卡信息,无需在目标主机安装额外工具,适合常规核查场景:
- 单次adhoc查询命令:
ansible <目标主机/主机组> -m setup -a "filter=ansible_*_interfaces"
返回结果中对应以太网端口的active值为true即代表端口处于up状态,反之则为down。 - Playbook批量核查示例(以端口eth0为例):
--- - name: 批量核查以太网端口状态 hosts: your_target_hosts gather_facts: yes tasks: - name: 输出eth0端口状态 debug: msg: "eth0 状态:{{ 'up' if ansible_eth0.active else 'down' }}" - name: 端口down时抛出异常 fail: msg: "eth0端口未处于启用状态" when: not ansible_eth0.active
方案2:调用系统命令查询实时状态(准确度更高)
如果需要确认端口的最新实时状态,可直接调用目标主机的ip命令查询,结果更精准:
- 单次adhoc查询命令:
ansible <目标主机/主机组> -m shell -a "ip link show eth0 | grep -q 'UP'; echo $?"
返回结果为0代表端口up,返回1代表端口down。 - Playbook批量核查示例:
--- - name: 实时核查以太网端口状态 hosts: your_target_hosts gather_facts: no tasks: - name: 查询eth0端口状态 shell: "ip link show eth0 | grep -q 'UP'" register: eth0_status ignore_errors: yes changed_when: false - name: 输出状态结果 debug: msg: "eth0 状态:{{ 'up' if eth0_status.rc == 0 else 'down' }}" - name: 异常终止 fail: msg: "eth0端口未启用" when: eth0_status.rc != 0
提示:将上述示例中的
eth0替换为你实际要核查的端口名(常见命名还有ens33、enp0s3等),可先在目标主机执行ip addr确认端口命名。
内容的提问来源于stack exchange,提问作者user16848245
相关产品推荐
相关产品推荐

