Команды ping и traceroute не отображают вывод в ansible

- name: traceroute   
  shell: traceroute {{ my_ip }}    
  register: result    
- debug: msg="{{ result.stdout_lines }}"

Я добавил это в свою книгу для проверки трассировки, но задача не остановлена, она не показывает вывод. Как остановить и отобразить вывод через определенное время, когда мы используем ping и traceroute.

Я использовал асинхронность и опрос, но та же проблема


person Mahesh Reddy    schedule 16.08.2019    source источник
comment
Можете ли вы показать нам результат запуска вашего плейбука?   -  person larsks    schedule 16.08.2019


Ответы (2)


По умолчанию ping не заканчивается, пока вы не CTRL^C.

Но вы можете запустить его с аргументом -c, чтобы указать количество пингов для отправки на сервер:

$ ping -c5 google.com
PING google.com (216.58.201.238) 56(84) bytes of data.
64 bytes from google.com (216.58.201.238): icmp_seq=1 ttl=50 time=14.8 ms
64 bytes from google.com (216.58.201.238): icmp_seq=2 ttl=50 time=14.8 ms
64 bytes from google.com (216.58.201.238): icmp_seq=3 ttl=50 time=14.3 ms
64 bytes from google.com (216.58.201.238): icmp_seq=4 ttl=50 time=14.7 ms
64 bytes from google.com (216.58.201.238): icmp_seq=5 ttl=50 time=15.3 ms

--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4020ms
rtt min/avg/max/mdev = 14.329/14.826/15.373/0.357 ms

См. также: https://linux.die.net/man/8/ping

То же самое относится и к traceroute, который будет пытаться использовать 30 прыжков по умолчанию.
Он заканчивается, но через довольно продолжительное время.
Попробуйте ограничить это параметром -m.

$ traceroute -m5 google.com
traceroute to google.com (216.58.201.238), 5 hops max, 60 byte packets
 1  x.x.x.x (x.x.x.x)  0.452 ms  0.427 ms  0.145 ms
 2  x.x.x.x (x.x.x.x)  1.169 ms  0.873 ms  1.641 ms
 3  * * *
 4  * * *
 5  * * *

См. также: https://linux.die.net/man/8/traceroute

person β.εηοιτ.βε    schedule 16.08.2019
comment
Большое спасибо, позвольте мне попробовать это, я обновлю, если это работает или нет для меня. - person Mahesh Reddy; 19.08.2019

Как ранее ответили, вам нужно ограничить количество пакетов, вы можете попробовать эти 2 задачи:

  - name: Execute ping
    shell: "ping -c 4 {{ my_ip }}"
    register: result

  - name: Show result
    debug:
      msg: "{{ result['stdout_lines'] }}"

Имейте в виду, что переменная «my_ip» была взята из другого файла. После выполнения этих задач я получил следующий вывод:

    "msg": [
        "PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.",
        "64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=3.86 ms",
        "64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=3.35 ms",
        "64 bytes from 8.8.8.8: icmp_seq=3 ttl=54 time=3.22 ms",
        "64 bytes from 8.8.8.8: icmp_seq=4 ttl=54 time=3.54 ms",
        "",
        "--- 8.8.8.8 ping statistics ---",
        "4 packets transmitted, 4 received, 0% packet loss, time 3005ms",
        "rtt min/avg/max/mdev = 3.224/3.494/3.860/0.246 ms"
    ]

Надеюсь, поможет!

person ErnestoQ    schedule 17.08.2019