Error connection failure connection refused
Я настроил nut для мониторинга моего ИБП и управления завершением работы моей рабочей станции. После того, как я заработал, я установил пакет nut-cgi для более удобного интерфейса для проверки состояния ИБП. Моя конфигурация nut была настроена и уже работает должным образом. Я добавил информацию в hosts.conf, чтобы программа CGI возвращала данные мониторинга.
Когда я запустил скрипт через свой веб-браузер, он смог вывести список ИБП, но там, где должны были быть данные, я просто получил сообщение:
Code:
Connection failure: connection refused.
Мой файл hosts.conf содержит:
Code:
MONITOR smart-ups@myserver “smart-ups: APC Smart-UPS 1100XL on MyServer”
Вот что я получаю в качестве страницы состояния:
Code:
Network UPS Tools upsstats 2.4.3
Wed Feb 23 14:06:39 EST 2011
System Model Status Battery Input (VAC) Output (VAC) Load (%) UPS
Temp Battery
Runtime Data
Tree
smart-ups: APC Smart-UPS 1100XL on MyServer [error: Connection failure: Connection refused] [error: Connection failure: Connection refused]
Я проверил, что upsd работает и отвечает правильно.
Может кто-нибудь сказать мне, как это исправить, чтобы я мог использовать скрипт CGI для отображения моего статуса ИБП?
Решение
После нескольких часов бессмысленного поиска в Интернете, включая форумы Ubuntu, я оказался пустым. Но чтение сообщений о проблемах, связанных с nut, дало мне идею просмотреть мои файлы конфигурации и попробовать различные изменения.
Оказывается, решение связано с сетевой безопасностью, реализованной самим nut. В моем файле /etc/nut/hosts.conf я добавил запись “smart-ups@myserver”, которая представляет собой ИБП на моем сервере с именем “myserver”. upsmon, upsd и мой веб-сервер, на котором запущен upsstats.cgi, находятся на одном компьютере.
Я запускал nut в автономном режиме и ничего не настраивал в upsd.conf, поэтому upsd привязывался к порту по умолчанию, как если бы там была следующая запись:
Code:
LISTEN 127.0.0.1 3493
Результатом стало то, что upsd привязывается к определенному сетевому интерфейсу, в данном случае 127.0.0.1 (то есть localhost), или к интерфейсу обратной связи, lo. Поскольку я указал имя сервера в hosts.conf, upsstats.cgi пытался получить доступ к upsd по адресу 192.168.1.5, который является моим интерфейсом Ethernet, eth1, на моем сервере.
Исправление состояло в том, чтобы изменить hosts.conf с “smart-ups @myserver” на “smart-ups @localhost”, чтобы направить upsstats.cgi на использование правильного интерфейса.
Теперь это работает, и у меня есть хорошее отображение состояния ИБП.
What can be the reasons of connection refused errors?
Я пытаюсь написать серверную программу на C, используя другой клиент, я получаю эту ошибку, когда пытаюсь подключиться, например, через порт 2080.
connection refused
Каковы могут быть причины этой ошибки?
Ответ
Причин может быть много, но наиболее распространенными являются:
- Порт не открыт на целевом компьютере.
- Порт открыт на целевой машине, но его список ожидающих подключений заполнен.
- Брандмауэр между клиентом и сервером блокирует доступ (также проверьте локальные брандмауэры).
После проверки наличия брандмауэров и того, что порт открыт, используйте telnet для подключения к ip / порту для проверки подключения. Это устраняет любые потенциальные проблемы с вашим приложением.