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

Создавать содержимое TFTP на лету?

Я знаю, что это не цель TFTP, но я работаю в среде, где множество различных типов устройств извлекают информацию о предоставлении с сервера TFTP. Я разрабатываю систему подготовки, которая отслеживает и поддерживает конфигурации устройств, и я хотел бы, чтобы запрошенные файлы генерировались на лету, как вы могли бы сделать с любым веб-приложением.

Да, некоторые из этих устройств могут поддерживать HTTP для обеспечения, но не все из них поддерживают, и мы хотим, чтобы все было согласовано.

Существуют ли какие-либо демоны TFTP, которые могут предоставить нечто подобное CGI?

Это адресовано Вот. К сожалению, это кажется трудным или невозможным, учитывая ограничения протокола TFTP.

> Привет.
>
> Рассматривалось ли когда-нибудь разрешение tftp-серверу
> предоставлять динамический контент?
>

Да. Протокол усложняет задачу.

Вы должны гарантировать, что содержимое будет сгенерировано за доли секунды, иначе ваш клиент, скорее всего, затопит ваш сервер.

Проблема в том, что для того, чтобы иметь возможность ответить на запрос tsize, вы должны знать полный размер вывода. Однако, поскольку TFTP не гарантирует различие между повторной отправкой RRQ и новым запросом (pxelinux сделает различие, но TFTP-серверу трудно его использовать), поэтому вы должны получить ответ перед первым запросом. .

У меня есть предложение для опции "пауза" и кода операции TFTP, но мне нужно (а) реализовать ее и (б) записать в виде RFC, (в) выяснить, как получить ее через IETF, который вроде притвориться, что TFTP не существует.

Лучше всего было бы сгенерировать все файлы конфигурации и кэшировать их в каталоге tftpboot, а не пытаться сгенерировать их на лету. В идеале имя файла, которое запрашивает ваше устройство, должно быть уникальным или идентифицируемым, и вы можете предварительно сгенерировать файлы на основе этого.

Быстрый поиск показал это tftpd-cgi проект на Sourceforge - возможно, стоит посмотреть.

Я также только что написал простой tftpd-сервер, способный обслуживать CGI, доступный на Github, так что это определенно возможно. Я еще не тестировал ни одного клиента PXE, но он работает с tftp-клиентом моей операционной системы.

Мое тестовое использование:

./tftpd-cgi.py &

echo 'get cgi/test' | tftp 127.0.0.1; cat test && rm test

Что выводит мой простой сценарий CGI:

Hello from CGI land!
127.0.0.1:61796