Необходимо определить, блокирует ли брандмауэр исходящее соединение.

Вы можете перенаправить stderr/stdout на подстановку процесса, которая добавляет выбранный префикс. Например, этот скрипт:

#! /bin/bash
exec > >(trap "" INT TERM; sed 's/^/foo: /')
exec 2> >(trap "" INT TERM; sed 's/^/foo: (stderr) /' >&2)
echo foo
echo bar >&2
date

Производит этот вывод:

foo: foo
foo: (stderr) bar
foo: Fri Apr 27 20:04:34 IST 2018

Первые две строки перенаправляют stdout и stderr соответственно на команды sed, которые добавляют foo: и foo: (stderr)к входным данным.
Вызовы встроенной оболочки -в команде trapгарантируют, что подоболочка не завершится при завершении сценария с помощью Ctrl+Cили при отправке сигнала SIGTERMс помощью kill $pid. Это гарантирует, что ваша оболочка не завершит ваш скрипт принудительно, потому что файловый дескриптор stdoutисчезает при завершении sed, потому что он также получил сигнал завершения. По сути, вы по-прежнему можете использовать ловушки выхода в своем основном скрипте, и sedпо-прежнему будет работать для обработки любых выходных данных, сгенерированных при запуске ваших ловушек выхода. Подоболочка все еще должна завершиться после завершения вашего основного скрипта, чтобы процесс sedне оставался запущенным навсегда.

0
04.02.2020, 01:03
1 ответ

Не так много информации, но вот руководство, которому я бы следовал, чтобы отладить проблему такого рода, если бы не управление брандмауэром:

  • Пинг не поможет, протокол ICMP тоже может быть заблокирован где-то/как-то по пути.
  • Выполните тест, используя другое подключение, если применимо.
  • Выполните тестовое подключение к другому сайту SSH/SFTP.
  • Устраните сложность протокола/конфигурации и просто попробуйте подключиться через telnet к порту 22 удаленного хоста и посмотреть, мигает ли курсор или появляется баннер ssh (в обоих случаях соединение не заблокировано ).
  • Используйте tcpdump -на вашем _интерфейсном порту 22 и следите за двунаправленным трафиком и трехсторонним рукопожатием.
0
28.04.2021, 23:24

Теги

Похожие вопросы