Tạo nội dung TFTP một cách nhanh chóng?


4

Tôi biết đây không phải là mục đích của TFTP, nhưng tôi đang làm việc trong một môi trường có rất nhiều loại thiết bị khác nhau lấy thông tin cung cấp từ máy chủ TFTP. Những gì tôi đang phát triển là một hệ thống cung cấp theo dõi và duy trì cấu hình thiết bị và tôi muốn có các tệp được yêu cầu được tạo nhanh chóng, giống như bạn có thể làm với bất kỳ ứng dụng web nào.

Có, một số thiết bị này có thể hỗ trợ HTTP để cung cấp, nhưng không phải tất cả chúng đều được, và chúng tôi muốn mọi thứ phải nhất quán.

Có bất kỳ trình tiện ích TFTP nào có thể cung cấp một cái gì đó tương tự như CGI không?

Câu trả lời:


2

Một tìm kiếm nhanh đã tiết lộ dự án tftpd-cgi này trên Sourceforge - có thể đáng để kiểm tra.

Tôi cũng vừa viết một máy chủ tftpd đơn giản có khả năng phục vụ CGI, có sẵn trên Github , vì vậy điều đó chắc chắn là có thể. Tôi chưa thử nghiệm với bất kỳ máy khách PXE nào, nhưng nó hoạt động với máy khách tftp của hệ điều hành của tôi.

Sử dụng thử nghiệm của tôi:

./tftpd-cgi.py &

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

Những kết quả đầu ra từ tập lệnh CGI đơn giản của tôi:

Hello from CGI land!
127.0.0.1:61796

Điều này thật tuyệt, tôi rất thích xem bạn đi đâu với điều này. Tôi đã kiểm tra dự án tftpd-cgi nhưng nó dường như chưa hoàn thành.
andyortlieb

+1 vì đã trở thành siêu gung-ho & thám hiểm!
andyortlieb

5

Điều này được giải quyết ở đây . Đáng buồn thay, nó dường như là khó khăn hoặc không thể, với các ràng buộc trên giao thức TFTP.

> Xin chào.
>>
Đã bao giờ có bất kỳ xem xét để cho phép máy chủ tftp
> cung cấp nội dung động?
>

Đúng. Giao thức gây khó khăn.

Bạn phải đảm bảo rằng các nội dung được tạo ra trong một phần của giây hoặc khách hàng của bạn rất có thể sẽ làm ngập máy chủ của bạn.

Vấn đề là để có thể trả lời một truy vấn tsize, bạn phải biết kích thước đầy đủ của đầu ra. Tuy nhiên, vì TFTP không được đảm bảo để phân biệt giữa gửi lại RRQ và yêu cầu mới (pxelinux sẽ phân biệt, nhưng thật khó để máy chủ TFTP sử dụng nó), vì vậy bạn phải trả lời trước yêu cầu đầu tiên .

Tôi có một đề xuất cho tùy chọn "tạm dừng" TFTP và opcode, nhưng tôi sẽ phải (a) thực hiện nó và (b) viết nó dưới dạng RFC, (c) tìm cách chuyển nó qua IETF, như giả vờ TFTP không tồn tại.


1
Dựa trên các thử nghiệm và đọc các chủ đề xa hơn, điều này hoàn toàn có thể với ứng dụng khách tftp trên hệ thống của tôi. Bạn chỉ cần bỏ yêu cầu đầu tiên (và loại bỏ mọi yêu cầu trùng lặp), sau đó trả lời khi tập lệnh cgi của bạn kết thúc. Miễn là tập lệnh cgi kết thúc trước khi máy khách tftp hết nội bộ, máy khách có thể nhận đầu ra của nó để đáp ứng với bất kỳ yêu cầu nào và sẽ không khiếu nại. Tôi đang làm việc trên một bằng chứng về khái niệm và sẽ cập nhật câu trả lời của tôi khi kết thúc.
lunixbochs

3

Một thiết kế tốt hơn sẽ là tạo tất cả các tệp cấu hình và lưu trữ chúng trong thư mục tftpboot thay vì cố gắng tạo chúng một cách nhanh chóng. Lý tưởng nhất là tên tệp yêu cầu thiết bị của bạn sẽ là duy nhất hoặc có thể nhận dạng được và bạn có thể tạo trước các tệp dựa trên đó.


Đây là cách tftp thường được sử dụng. Nếu nhiều thiết bị có thể chia sẻ một cấu hình, hãy tạo nó một lần và tạo liên kết tượng trưng cho nó cho từng thiết bị.
TomOnTime

Mặc dù tôi thường đồng ý với cả hai bạn, tôi đang xử lý một trường hợp hơi độc đáo cung cấp nhiều thiết bị có thể hoặc không thể kế thừa một hoặc nhiều lớp cấu hình cha, tất cả có thể được thay đổi thường xuyên. Phần lớn các thiết bị này hỗ trợ HTTP để cung cấp, nhưng một số thì không, và các thiết bị khác chỉ cách đó một nửa.
andyortlieb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.