проверить состояние порта на сервере с помощью скриптов q - PullRequest
0 голосов
/ 29 мая 2019

Я написал небольшой скрипт для проверки состояния порта с помощью q.Он проверяет порты и запускает электронную почту, если в соединении отказано, что работает нормально.Затем я использовал дополнительный таймаут для порта, чтобы он не зависал там в ожидании.Хотя он возвращается с комментарием «тайм-аут», если порт отключен, он также, похоже, выбивает меня из функции и не попадает в часть sendemail [].

ProcessChecks:{[port]
            V:{@[value;("hopen (`::",(string x),";5000)");enlist]} [port];
            .keh.V:V;               :
            mail_body:(string V)," at .z.T time: ",(string .z.T);
            .keh.mail:mail_body;

  $[-6h=type V;"port accepted";SendEmail2[mail_body;"connection refused port: ",(string port)]];

Пространство имен .keh.mail не изменяется и SendEmail2 [] не отправляется, что является просто командой unix mailx.

Я получу .keh.V = "timeout"

    .keh.mail = " at .z.T time whatever the time is"

5000 - время ожидания 5 секунд, и его введение вызывает проблему.

1 Ответ

3 голосов
/ 29 мая 2019

Ваша проблема вызвана ошибкой : в третьей строке вашего скрипта.Это заставляет вашу функцию вернуться рано.Попробуйте следующее:

ProcessChecks:{[port]
  V:{@[value;("hopen (`::",(string x),";5000)");enlist]} [port];
  .keh.V:V;
  mail_body:(string V)," at .z.T time: ",(string .z.T);
  .keh.mail:mail_body;
  $[-6h=type V;"port accepted";SendEmail2[mail_body;"connection refused port: ",(string port)]];
  }
...