Lambert 5 Posted 2009-02-12 21:50:04 Share Posted 2009-02-12 21:50:04 ОС: FreeBSD 6.2 Задача: сваять программку, которая по запуску поднимала бы какую-нить ногу LPT-порта в высокий уровень и спустя минуту дропала обратно и завершалась. Это нужно для аппаратной перезагрузки железяки, которой свойственно время от времени зависать Или может кто-то натыкался на готовое решение? Помню, в студенческие годы мы подобное писали, но... заучил, сдал, забыл - сейчас не осилю Спасибо за внимание Link to post Share on other sites
Oleg Doneck 94 Posted 2009-02-12 21:52:26 Share Posted 2009-02-12 21:52:26 ОС: FreeBSD 6.2Задача: сваять программку, которая по запуску поднимала бы какую-нить ногу LPT-порта в высокий уровень и спустя минуту дропала обратно и завершалась. Это нужно для аппаратной перезагрузки железяки, которой свойственно время от времени зависать Или может кто-то натыкался на готовое решение? Помню, в студенческие годы мы подобное писали, но... заучил, сдал, забыл - сейчас не осилю Спасибо за внимание тебе модем будать? Link to post Share on other sites
Lambert 5 Posted 2009-02-12 22:03:47 Author Share Posted 2009-02-12 22:03:47 Да, именно так. Нужно модем ребутать, когда оный зависает и по IP отвечать перестает Link to post Share on other sites
Oleg Doneck 94 Posted 2009-02-13 05:34:53 Share Posted 2009-02-13 05:34:53 Да, именно так. Нужно модем ребутать, когда оный зависает и по IP отвечать перестает дружище я помню ещё тот топик где ты спрашивал про скрипт который перезагружал модем, кстати я его сваял и он даже пол года проработал, потом модем полетел а новый зависал наглухо, приходилось по питанию перезагружать вобщем самый лучший выход это поставить модем в бридж, после чего с сервака поднять пппое на аплинк и будет тебе такое счастье... этот выход самый лучший потому как 1 все роутерные функции ложатся на сервер 2 модем невиснет - потому как виснуть нечему 3 на одну сетевую карту можно повесить пачку модемов через свитч 4 сесия рвётся раз в сутки а не при каждом зависании модема Link to post Share on other sites
frig 2 Posted 2009-02-13 06:18:23 Share Posted 2009-02-13 06:18:23 а как на счет мегарешения с открыванием сидюка? пинговалку поставь и все. а на LPT это будет из области того-же сидюка, имхо. Link to post Share on other sites
fenix-vt 81 Posted 2009-02-13 08:12:18 Share Posted 2009-02-13 08:12:18 пинговалку поставь и все. ага. еквиком такие аппаратные ребутеры делает. проще в разы! Link to post Share on other sites
Lambert 5 Posted 2009-02-13 08:20:05 Author Share Posted 2009-02-13 08:20:05 Дык это.. скрипт пинговалки я отстроил, вкрутил в него перезагрузчик через модемную вебморду.. Но за эти несколько месяцев работы выяснилось, что модем иногда умеет зависнуть так, что не отвечает его вебморда Помогает только вырубить на минуту-две и потом опять включить Сейчас думаю над автоматизацией процесса. Скрипт переделать - раз плюнуть, а вот чем подрыгать ножкой порта? Электроники там два ключа, на пять минут работы с паяльником модем - Motorola SB5100 и никаких бриджей оно не умеет Link to post Share on other sites
frig 2 Posted 2009-02-13 08:32:18 Share Posted 2009-02-13 08:32:18 еквиком такие аппаратные ребутеры делает. проще в разы! smile.gif а дело не в проще а в независимости от того же серванта. его бы тоже можно ребутать. только там не пинговалка нужна а watch dog, наверное... тогда можно построить систему, в которой зависание любого не приводит к зависанию всего. перекрестный контроль! Lambert, я ж говорю - сидюк юзай! шутка, конечно... Link to post Share on other sites
wermer 28 Posted 2009-02-13 08:58:49 Share Posted 2009-02-13 08:58:49 Писал когда-то для себя такую программулину. Лови исходники. lptsend.txt Link to post Share on other sites
Lambert 5 Posted 2009-02-13 09:05:37 Author Share Posted 2009-02-13 09:05:37 Писал когда-то для себя такую программулину.Лови исходники. Спасибо! Вот бы еще подсказал глубокоуважаемый автор, как сие скомпилять.. а то у меня сходу не получилось Link to post Share on other sites
wermer 28 Posted 2009-02-13 09:06:51 Share Posted 2009-02-13 09:06:51 cc lptsend.txt -o lptsend Link to post Share on other sites
frig 2 Posted 2009-02-13 09:14:32 Share Posted 2009-02-13 09:14:32 Lambert, поделился бы с общественностью схемой Электроники там два ключа, на пять минут работы с паяльником и инструкцией. обязательно кому-то пригодится. Link to post Share on other sites
Lambert 5 Posted 2009-02-13 10:15:20 Author Share Posted 2009-02-13 10:15:20 cc lptsend.txt -o lptsend Спасибо, буду пробовать Только дальше "lptsend.txt: file not recognized: File format not recognized" я пока не продвинулся Link to post Share on other sites
fenix-vt 81 Posted 2009-02-13 14:08:23 Share Posted 2009-02-13 14:08:23 Спасибо, буду пробоватьТолько дальше "lptsend.txt: file not recognized: File format not recognized" я пока не продвинулся переименуй в lptsend.с Link to post Share on other sites
Lambert 5 Posted 2009-02-13 20:12:56 Author Share Posted 2009-02-13 20:12:56 переименуй в lptsend.с Есть Собралось и работает Спасибо! Link to post Share on other sites
Lambert 5 Posted 2009-02-24 19:49:08 Author Share Posted 2009-02-24 19:49:08 Если кому-то интересно - могу выложить скрипт и схему управления. Так сказать, краткий ликбез для реализации такого вот костыля. Пока вроде работает как надо, есть правда бока с инициализацией порта при перезагрузке машины - но это я пока не знаю как бороть, да и не буду наверное. Link to post Share on other sites
frig 2 Posted 2009-02-25 06:50:42 Share Posted 2009-02-25 06:50:42 выложи выложи. даже если сейчас никто не откликнется - потом обязательно кому-то пригодится. Link to post Share on other sites
Lambert 5 Posted 2009-02-25 09:33:30 Author Share Posted 2009-02-25 09:33:30 Хорошо. Значит, по сути дела: по крону раз в пять минут запускается скрипт-чекер */5 * * * * /usr/local/etc/scripts/nevolya.sh сам скрипт выглядит так: #!/bin/sh # for host in "82.144.211.1"; do /usr/local/sbin/fping -q $host RV=$? if [ $RV -eq 0 ]; then echo "Link is OK:" `date` >>/var/log/volia.log elif [ ]; then else /usr/local/bin/lptsend -s -d 0 -w 65535 echo "Link is broken at:" `date` >>/var/log/volia.log fi done exit Управление модемом собрано на базе схемки, приведенной ниже перерисовать свою нечем, но вратце расскажу что надо: управляющий выход LPT-порта - STROBE, сигнальный пин №1 земля - пин №18 вместо диода на входе оптопары - гасящий резистор (у меня 1.5К, но надо подбирать под имеющуюся оптопару) реле с нормально замкнутыми контактами, включенными в разрыв цепи питания модема блок питания у модема - 12В, схема кормится от него же Принцип работы всей лабуды прост по крону запускается чекер, пытается пинговать заданный в скрипте айпишник если ответ пришел - гут, выключаемся до следующего раза если нет - запускается lptsend с параметрами, которые выставляют канал STROBE в высокий уровень примерно на минуту схема переключает реле, питание на модем обрывается и оный отдыхает по истечению минуты (или сколько зададите в параметрах запуска lptsend) программа завершается, выход возвращается в состояние нуля, реле отпускается - модем аппаратно перезагружен Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now