Я пытаюсь использовать 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" выше. Если вы совершите эту ошибку, вы получите именно те проблемы, которые указаны выше.