Назад | Перейти на главную страницу

Inetd / xinetd не работает под cygwin, почему?

Я пытаюсь использовать xinetd (или inetd) с netcat в качестве TCP-прокси. Эта установка работает в Linux без проблем.

В Cygwin, либо в качестве службы, либо из командной строки Cygwin, (x) inetd не может открыть netcat с ошибкой «нет такого файла или каталога».

Я пробовал указать /usr/bin/nc, /usr/bin/nc.exe, /cygdrive/d/cygwin/usr/bin/nc.exe, d:\cygwin\bin\nc.exeи ТОННА других комбинаций прямых вспышек, обратных косых черт, путей Windows и путей Cygwin. Независимо от того, что я получаю errno 2, no such file or directory.

Любые идеи? Мне нужно, чтобы это работало как можно скорее.

Изменить: я думал, что это может быть связано с тем, что он находится в d:\cygwin (неудачное жесткое кодирование?), но я тестировал его на машине с cygwin на C:\, проблема существует и там.

xinetd, как и любой другой процесс, импортированный из unix, может видеть каталог unix. Таким образом, вам не нужно было использовать какой-либо формат каталогов Windows, особенно варианты с обратной косой чертой.

Во-вторых: cygwin устанавливает большую часть своих двоичных файлов в /bin, а не в /usr/bin. /bin/nc.exe нет между вашими перечисленными попытками.

Если что-то работает с полным путем из командной строки, это должно работать и из xinetd.

Рядом с этим есть еще один потенциальный источник проблем. Это обычная синтаксическая проблема при настройке xinetd. Ваши сервисы должны выглядеть так:

service service_name {
 ...
        server          = /path/to/your/binary
        server_args     = --your --args
 ...
}

... таким образом, в настройки "сервера", не следует вставлять аргументы! Их нужно вставить в "server_args" выше. Если вы совершите эту ошибку, вы получите именно те проблемы, которые указаны выше.