fping получает ответный пакет при запуске из терминала, скрипта, но не когда скрипт вызывается transmission-daemon.

Вопрос или проблема

Я использую следующее ..

fping -c1 computer

Когда я запускаю это вручную из терминала, я получаю 0% потерь пакетов. Я получаю 0% потерь пакетов, когда запускаю это из скрипта, ~/scripts/torrent.done.script.

Но я получаю 100% потерь пакетов, когда срабатывает transmission-daemon и запускает скрипт.

computer : xmt/rcv/%loss = 1/0/100%

Я в недоумении, пытаясь выяснить это. Я пытался явно указать IP-адрес, я пытался использовать только IPv4, но результаты те же. Я пробовал с публичным IP-адресом, результаты те же. Я пробовал с VPN и без него, результаты те же.

ping работает, fping не работает. Это так странно для меня.

Ответ или решение

Причины проблемы с fping, вызываемого transmission-daemon

Ситуация, которую вы описали, интересна и может быть вызвана рядом факторов, связанных с окружением и контекстом выполнения скрипта. Давайте подробно разберем возможные причины, почему команда fping работает в терминале и в скрипте, но не при вызове daemon’ом.

1. Разные окружения

Когда вы запускаете скрипт вручную из терминала, он выполняется в вашем пользовательском окружении. Однако, когда transmission-daemon вызывает скрипт, он работает в другом контексте с возможными ограничениями на доступ к сетевым ресурсам. Убедитесь, что:

  • Пользователь, от имени которого работает transmission-daemon, имеет необходимые права доступа и возможность выполнять сетевые команды. Возможно, стоит протестировать его через sudo -u transmission-daemon -i (или соответствующий пользовательский контекст).

2. Сетевые ограничения

Daemon может работать в среде с ограничением доступа в сеть:

  • Firewall: Проверьте настройки фаервола (iptables, ufw и т.д.), так как они могут блокировать ICMP-пакеты, отправляемые fping.
  • SELinux/AppArmor: Если у вас включена система безопасности, она может ограничить выполнение некоторых команд и сетевых запросов. Убедитесь, что правила безопасности разрешают работу fping.

3. Проблемы с маршрутизацией

Иногда при работе в разных режимах окружение может использовать различные сетевые маршруты:

  • Проверьте, как transmission-daemon обрабатывает сетевые соединения. Возможен ли конфликт маршрутизации, когда пакеты уходят в неожиданные направления.

4. Отладка и журналирование

Поскольку fping не дает результата в одном случае, добавьте вывод логов для отладки:

  • Модифицируйте ваш скрипт, чтобы добавлять логи действий. Например, добавьте команды echo перед выполнением fping и перенаправьте вывод в файл. Это поможет отследить, с какими параметрами и от чьего имени исполняется команда.
echo "Выполняем fping для компьютера" >> /tmp/fping_log.txt
fping -c1 computer >> /tmp/fping_log.txt 2>&1

5. Используйте альтернативные команды

Если fping не работает так, как ожидается, вы можете попробовать другие инструменты для диагностики:

  • Проверить с помощью ping (вы уже упомянули, что он работает) и других аналогичных инструментов, таких как mtr для более глубокой диагностики сети.

Заключение

Резюме: причина проблемы заключается в различиях контекста выполнения скрипта при его запуске от имени пользователя и daemon’а. Проверьте окружение, права доступа, настройки безопасности и сетевые правила, проводя при этом отладку с помощью логов. Если ни одна из этих рекомендаций не поможет, вам могут помочь журналы системных ошибок, которые могут указать на дополнительные проблемы в работе сети.

Оцените материал
Добавить комментарий

Капча загружается...