Gerar o conteúdo TFTP em tempo real?

4

Eu sei que esse não é o propósito do TFTP, mas estou trabalhando em um ambiente em que muitos tipos diferentes de dispositivos obtêm informações de provisionamento de um servidor TFTP. O que eu estou desenvolvendo é um sistema de provisionamento que rastreia e mantém as configurações do dispositivo, e eu gostaria de ter os arquivos solicitados gerados em tempo real, da mesma forma que você faria com qualquer aplicativo da Web.

Sim, alguns desses dispositivos podem suportar HTTP para provisionamento, mas nem todos eles, e queremos que as coisas sejam consistentes.

Existe algum daemon TFTP que possa fornecer algo análogo ao CGI?

    
por andyortlieb 24.06.2011 / 22:31

3 respostas

2

Uma pesquisa rápida revelou este projeto tftpd-cgi no Sourceforge - pode valer a pena conferir.

Eu também acabei de escrever um simples servidor tftpd capaz de servir o CGI, disponível no no Github , então é definitivamente possível. Ainda não testei com nenhum cliente PXE, mas ele funciona com o cliente tftp do meu sistema operacional.

Meu uso de teste:

./tftpd-cgi.py &

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

Quais são as saídas do meu script CGI simples:

Hello from CGI land!
127.0.0.1:61796
    
por 25.06.2011 / 05:17
5

Isso é endereçado aqui . Infelizmente, parece ser difícil ou impossível, dadas as limitações do protocolo TFTP.

> Hi.
>
> Has there ever been any consideration to allowing the tftp server to
> provide dynamic content?
>

Yes. The protocol makes it difficult.

You pretty much have to guarantee that the contents is generated in a fraction of a second, or your client will most likely flood your server.

The problem is that in order to be able to answer a tsize query you have to know the full size of the output. However, since TFTP isn't guaranteed to distinguish between an RRQ resend and a new request (pxelinux will make the distinction, but it's hard for the TFTP server to make use of it), so you have to have a reply before the first request.

I have a proposal for a TFTP "pause" option and opcode, but I would have to (a) implement it, and (b) write it up as an RFC, (c) figure out how to get it through IETF, which like to pretend TFTP doesn't exist.

    
por 24.06.2011 / 22:48
3

Um design melhor seria gerar todos os arquivos de configuração e armazená-los em cache no diretório tftpboot, em vez de tentar gerá-los rapidamente. Idealmente, o nome do arquivo que seus dispositivos solicitam seria exclusivo ou identificável e você poderia gerar previamente arquivos com base nisso.

    
por 25.06.2011 / 00:17