connectivity_test

ansible-role-connectivity-test

Используйте nc (netcat) для проверки сетевых проблем с указанным IP-адресом и портом (TCP или UDP).
Динамически определяет исходный IP-адрес для использования на основе целевого IP-адреса из доступного маршрута.

По умолчанию используется протокол TCP. Вы можете указать protocol: udp, если для теста требуется UDP.

Тестируемые дистрибутивы

  • Ubuntu 18.04 / 16.04
  • CentOS / RHEL: 7.x, 6.5, 5.9

Зависимости

Команды ОС:

  • nc (netcat) - будет установлен, если отсутствует
  • ip
  • awk

Настройки по умолчанию

  • Включить отладку
debug_enabled_default: false
  • Тайм-аут
connectivity_test_wait_default: 5
  • Аргумент UDP, который используется, если в конфигурации указано 'udp'
connectivity_test_udp_command: "-u"
  • Прокси
proxy_env: []

Пример конфигурационного файла (group_vars/xxx/connectivity-test-vars.yml)

По умолчанию используется протокол TCP (не нужно указывать).

---
connectivity_test_destinations:
  - { ip: 192.168.56.10, port: 22 }
  - { ip: 192.168.56.10, port: 5000 }
  - { ip: 127.0.0.1, port: 53, protocol: udp }

Пример плейбука connectivity-test.yml

---
- hosts: '{{inventory}}'
  become: yes
  roles:
  - connectivity-test

Использование

ansible-playbook connectivity-test.yml --extra-vars "inventory=all-dev" -i hosts

Пропустить установку пакетов (если они уже известны - ускоряет задачу)

ansible-playbook connectivity-test.yml --extra-vars "inventory=all-dev" -i hosts --skip-tags connectivity_install_pkg

Пример вывода

TASK [setup] *******************************************************************
ok: [centos7]

TASK [connectivity-test : Установка зависимых пакетов на RedHat] *
ok: [centos7] => (item=[u'nc'])

TASK [connectivity-test : Получение исходного IP на основе конечного IP] ***************
ok: [centos7] => (item=source ip: 127.0.0.1, destination ip: 127.0.0.1)
ok: [centos7] => (item=source ip: 127.0.0.1, destination ip: 127.0.0.1)
ok: [centos7] => (item=source ip: 192.168.56.9, destination ip: 192.168.56.10)

TASK [connectivity-test : отладка] ***********************************************

TASK [connectivity-test : тестирование сетевой связи] ***************************
ok: [centos7] => (item=source ip: 192.168.56.9, destination ip: 192.168.56.10, port: 22, protocol: tcp, time: 2019-07-09 23:02:56.518272, stdout: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, stderr: Соединение с 192.168.56.10 на 22 порт [tcp/ssh] успешно!

)
ok: [centos7] => (item=source ip: 127.0.0.1, destination ip: 127.0.0.1, port: 53, protocol: udp, time: 2019-07-09 23:03:12.337049, stdout: , stderr: Соединение с 127.0.0.1 на 53 порт [udp/domain] успешно!

)
failed: [centos7] (item=source ip: 192.168.56.9, destination ip: 192.168.56.10, port: 5000, protocol: tcp, time: 2019-07-09 23:03:33.893978, stdout: , stderr: nc: соединение с 192.168.56.10 на порт 5000 (tcp) истекло: Операция в процессе

)

TASK [connectivity-test : отладка] ***********************************************

PLAY RECAP *********************************************************************
centos7                    : ok=3    changed=0    unreachable=0    failed=1  

Ручной способ

dIP="192.168.56.10 192.168.56.13";
dPORT="5000";
sIP=$(/sbin/ip route get "$(echo $dIP|awk -F" " 'NR==1{print $1}')"|awk 'NR==1{print $NF}');
uname -n;
echo "Исходный IP: $sIP";
for i in $dIP;
do date;
nc -v -w 3 -s "$sIP" "$i" "$dPORT";
echo " ";
done
О проекте

Role to test for network issues to specified IP and port (TCP or UDP) from your Ansible hosts.

Установить
ansible-galaxy install ryandaniels/ansible-role-connectivity-test
Лицензия
mit
Загрузки
3841
Владелец
Ansible all the things