listen_ports_facts – Gather facts on processes listening on TCP and UDP ports

New in version 2.9.

Synopsis

  • Gather facts on processes listening on TCP and UDP ports.

Examples

- name: Gather facts on listening ports
  listen_ports_facts:

- name: TCP whitelist violation
  debug:
    msg: TCP port {{ item.port }} by pid {{ item.pid }} violates the whitelist
  vars:
    tcp_listen_violations: "{{ ansible_facts.tcp_listen | selectattr('port', 'in', tcp_whitelist) | list }}"
    tcp_whitelist:
      - 22
      - 25
  loop: "{{ tcp_listen_violations }}"

- name: List TCP ports
  debug:
    msg: "{{ ansible_facts.tcp_listen  | map(attribute='port') | sort | list }}"

- name: List UDP ports
  debug:
    msg: "{{ ansible_facts.udp_listen | map(attribute='port') | sort | list }}"

- name: List all ports
  debug:
    msg: "{{ (ansible_facts.tcp_listen + ansible_facts.udp_listen) | map(attribute='port') | unique | sort | list }}"

Returned Facts

Facts returned by this module are added/updated in the hostvars host facts and can be referenced by name just like any other host fact. They do not need to be registered in order to use them.

Fact Returned Description
tcp_listen
list
if TCP servers were found
A list of processes that are listening on a TCP port.

address
string
always
The address the server is listening on.

Sample:
0.0.0.0
name
string
if user permissions allow
The name of the listening process.

Sample:
mysqld
pid
integer
always
The pid of the listening process.

Sample:
1223
port
integer
always
The port the server is listening on.

Sample:
3306
protocol
string
always
The network protocol of the server.

Sample:
tcp
stime
string
always
The start time of the listening process.

Sample:
Thu Feb 2 13:29:45 2017
user
string
always
The user who is running the listening process.

Sample:
mysql
udp_listen
list
if UDP servers were found
A list of processes that are listening on a UDP port.

address
string
always
The address the server is listening on.

Sample:
0.0.0.0
name
string
if user permissions allow
The name of the listening process.

Sample:
rsyslogd
pid
integer
always
The pid of the listening process.

Sample:
609
port
integer
always
The port the server is listening on.

Sample:
514
protocol
string
always
The network protocol of the server.

Sample:
udp
stime
string
always
The start time of the listening process.

Sample:
Thu Feb 2 13:29:45 2017
user
string
always
The user who is running the listening process.

Sample:
root


Status

Authors

  • Nathan Davison (@ndavison)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.