Jump to content
Калькуляторы

Софтовый концентратор под ДОС. Удаленный reboot.

ну так случилось, что есть у меня в хозяйстве много тачек досовых, на них работает софт, называемый концентратором. он собирает инфу с девайсов по ком-портам (мультипортовка) и по ip (pc-tcp) шлет их мне на nt-ёвую тачку, на сервер.

 

есть ли такая резидентная софтинка, которая бы слушала какой-нить порт и принимала команды? по сути мне нужна только одна - ребут. :)

 

просто такие концентраторы разбросаны по городу и возможности перегрузить их удаленно не всегда бывает. и чтобы изменения в конфигах "вступили в силу" (с) самизнаетекто, требуется перезагрузка тачки. в процессе загрузки конфиги каждый раз сливаются досовым фтп-клиентом с моего же фтп сервера :)

 

вот, гимор развел, правда? :) а что делать...

Share this post


Link to post
Share on other sites

Ты мужик умный TSR под ДОС написать сможешь! Так вот, пусть он у тебя каждую минуту проверяет наличие файлика и если есть, предваритьльно грохнув файлик, перезагружает тачку. А файлик заливаешь все тем же фтп. :)

Share this post


Link to post
Share on other sites

хм... как делать, знаю, но ни разу не делал :)

 

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

Share this post


Link to post
Share on other sites

хм... как делать, знаю, но ни разу не делал :)

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

 

pc-tcp через пакетник к сетевой карте обращается? - если да, то можно в сам пакетный драйвер вставить отлов определенного пакета (типа как в WOL)... А что, свой MAC известен же...

 

А кто там занимается непосредственно rs232<->TCP. Не pc-tcp же. Так эта прога своя или чужой .exe с уже несуществующими исходниками, запущенная как основной процесс? Тогда нужно для subj TSR делать... TSR несложно на базе wattcp библиотеки написать, но криво будет работать, поскольку один пакетник через pktmux делить с pc-tcp придется, а это значит никакой стабильности.

 

Кстати в pc-tcp (ох давно это было) был ftp-сервер в самом пакете. Но нужно искать пакет и смотреть. И уже неуверен пускался ли он как TSR (просто вспоминается что пускался). Тогда решение описанное klm правильнее всего! И реализовать очень просто (.com будет байт 200 :))

Share this post


Link to post
Share on other sites

ага, пакетник. но вообще где как, как стрельнет :) можно и lsl подгрузить...

пакетники обычно либо 3com 509 либо pci-ойное 8139. вот я там так сходу не нашел, как отловить нужный пакет и че либо сделать по приходу такого пакета (грубо говоря исполнить батник или екзешник)...

 

да, к сожалению, прога rc232<->tcp не моя, и исходников к ней нет, и не дадут. она и работает как основной процесс.

 

безусловно, нужен trs.

 

пакет pc-tcp у меня есть, и дистрибутивы разных версий, и ключи к ним и все все все... ftpserver как tsr к сожалению не пускается (либо я не нашел как, может как то недокументированно?). понятное дело, что женькино решение обходится в этом случае в 200 байт :)

 

отдельно серверное приложение, слушающее порты и работающее как основной процесс я еще могу написать, отдельно резидент тоже может смогу сбацать, но вот такой trs как мне надо - не уверен...

Share this post


Link to post
Share on other sites

Имхо, проблема будет в разделении пакетника через tcpmux на основную прогу и tsr. Выражаться будет в подвисании :) ибо врядли на асме все опишешь и придется использовать сишные либы типа waterlootcp, которые динамически аллокируют буфера по ходу действия. А для tsr это смерть... Имхо тут выход один (он кажется самым простым и правильным) - все такие машинки перевести с lsl на передаланные пекетники. Пакетники подправить (исходники в Crynwr) таким образом:

при запуске драйвера, своей функцией формируется блок данных представляющих из себя маску служебного пакета. Желательно что-то типа вроде пакета WOL (4 раза 0xFFFF, потом 6 раз MAC-адрес). Но лучше что-то подлинее/сложнее чтобы не могло совпасть с чем нибудь полезным... В процедуре обработки входного буфера пакетного драйвера ставь вызов своей процедуры, которая по определенной выше маске просканирует приемный буфер, если строки совпали (тоесть принят такой пакет из сети) - делаем ребут (5 байт). После этих изменений компилим новый .com и ставим в качестве нового пакетного драйвера :)). Игра в том, что частично в буфер пакетного драйвера, пакет попасть не может, поэтому в буфере он будет лежать целиком, значит его можно искать как подстроку.

 

Если непонятно объяснился - могу подробнее... Вся переделка - байт 100 :)

Share this post


Link to post
Share on other sites

Да, совсем нежелательно из tsr исполнять внешние батники и ехешники, поскольку основная прога неизвестно кем писана и как использует памать (отведенную под основной процесс - тоесть всю) по ходу работы. Все действия tsr надежнее делать внутри самого tsr не используя механизм динамического распределения памяти dos.

Share this post


Link to post
Share on other sites

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.