Jump to content

Recommended Posts

Posted

Есть коммутатор, который умеет загружать/выгружать конфиги по FTP/TFTP.

На разных коммутаторах конфиги однотипны, но отличаются некоторые параметры: IP-адрес, имя хоста, snmp-строки, некоторые другие параметры.

Хочу сделать так:

- на коммутаторе выполняю команду upload configuration tftp 1.2.3.4 base_config.txt

- коммутатор подключается к TFTP-серверу 1.2.3.4 и запрашивает файл base_config.txt

- TFTP-сервер берет шаблонный файл base_config.tpl, подставляет в него часть параметров (ориентируясь на IP-адрес коммутатора) и возвращает в виде текстового файла

 

Есть ли такое готовое?

Или нужно писать TFTP-сервер на каком-нибудь ЯП (хоть на Perl)?

Posted

tftp с хендлерами я не видел, но в принципе можно сделать такой вокэраунд без написания своего tftp-сервера:

- на коммутаторе выполняю команду upload configuration tftp 1.2.3.4 SWITCH_IP.txt

- коммутатор подключается к TFTP-серверу 1.2.3.4 и запрашивает файл SWITCH_IP.txt

- tftp-сервер отправляет сообщение в syslog

- syslog-ng ловит сообщение и запускает внешний скрипт для генерации конфига

- коммутатор подключается к TFTP-серверу 1.2.3.4 и запрашивает файл SWITCH_IP.txt второй раз

- TFTP-сервер отдаёт сгенерённый файл SWITCH_IP

- (опционально) syslog-ng ловит сообщение от tftp-сервера о том, что файл скачали и удаляет файл SWITCH_IP.txt

Posted

Или нужно писать TFTP-сервер на каком-нибудь ЯП (хоть на Perl)?

Всё уже украденонаписано, до нас. ©

 

Там делов то на десяток строк.

#!/usr/bin/perl -w
use strict;
use Net::TFTPd;

 my $tftpdOBJ = Net::TFTPd->new('RootDir' => '/ololo') or die Net::TFTPd->error;
 my $has_incoming_msg = 0;
 while (1) {
   $has_incoming_msg = 1;
   my $tftpRQ = $tftpdOBJ->waitRQ(1) or $has_incoming_msg = 0;
   next if ($has_incoming_msg == 0);
   #IP кто запросил
   print $tftpRQ->getPeerAddr() . "\n";
   #Тут генерим конфиг и ложим его в /ololo/$tftpRQ->getFileName()
   $tftpRQ->processRQ();
 }

 

в принципе можно сделать такой вокэраунд

)))

Posted

pppoetest

Такой вариант же тупо однопоточный и обслуживает лишь одного клиента в момент времени. Надо либо к inet.d его прикручивать, делать потоки как минимум

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.