Jump to content

системные программисты есть?


Recommended Posts

ОС: FreeBSD 6.2

Задача: сваять программку, которая по запуску поднимала бы какую-нить ногу LPT-порта в высокий уровень и спустя минуту дропала обратно и завершалась.

Это нужно для аппаратной перезагрузки железяки, которой свойственно время от времени зависать

 

Или может кто-то натыкался на готовое решение?

 

Помню, в студенческие годы мы подобное писали, но... заучил, сдал, забыл - сейчас не осилю :)

 

Спасибо за внимание

Link to post
Share on other sites
ОС: FreeBSD 6.2

Задача: сваять программку, которая по запуску поднимала бы какую-нить ногу LPT-порта в высокий уровень и спустя минуту дропала обратно и завершалась.

Это нужно для аппаратной перезагрузки железяки, которой свойственно время от времени зависать

 

Или может кто-то натыкался на готовое решение?

 

Помню, в студенческие годы мы подобное писали, но... заучил, сдал, забыл - сейчас не осилю :)

 

Спасибо за внимание

тебе модем будать?

Link to post
Share on other sites

Да, именно так. Нужно модем ребутать, когда оный зависает и по IP отвечать перестает

Link to post
Share on other sites
Да, именно так. Нужно модем ребутать, когда оный зависает и по IP отвечать перестает

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

 

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

этот выход самый лучший потому как

1 все роутерные функции ложатся на сервер

2 модем невиснет - потому как виснуть нечему

3 на одну сетевую карту можно повесить пачку модемов через свитч

4 сесия рвётся раз в сутки а не при каждом зависании модема

Link to post
Share on other sites

а как на счет мегарешения с открыванием сидюка? :)

 

пинговалку поставь и все. а на LPT это будет из области того-же сидюка, имхо.

Link to post
Share on other sites

Дык это.. скрипт пинговалки я отстроил, вкрутил в него перезагрузчик через модемную вебморду..

Но за эти несколько месяцев работы выяснилось, что модем иногда умеет зависнуть так, что не отвечает его вебморда

Помогает только вырубить на минуту-две и потом опять включить

Сейчас думаю над автоматизацией процесса. Скрипт переделать - раз плюнуть, а вот чем подрыгать ножкой порта?

Электроники там два ключа, на пять минут работы с паяльником

модем - Motorola SB5100 и никаких бриджей оно не умеет

Link to post
Share on other sites
еквиком такие аппаратные ребутеры делает. проще в разы! smile.gif

 

а дело не в проще а в независимости от того же серванта. его бы тоже можно ребутать. только там не пинговалка нужна а watch dog, наверное... тогда можно построить систему, в которой зависание любого не приводит к зависанию всего. перекрестный контроль!

 

Lambert, я ж говорю - сидюк юзай! :) шутка, конечно...

Link to post
Share on other sites
Писал когда-то для себя такую программулину.

Лови исходники.

Спасибо! :)

Вот бы еще подсказал глубокоуважаемый автор, как сие скомпилять..

а то у меня сходу не получилось

Link to post
Share on other sites

Lambert, поделился бы с общественностью схемой

 

Электроники там два ключа, на пять минут работы с паяльником

 

и инструкцией. обязательно кому-то пригодится.

Link to post
Share on other sites
cc lptsend.txt -o lptsend

Спасибо, буду пробовать

Только дальше "lptsend.txt: file not recognized: File format not recognized" я пока не продвинулся :)

Link to post
Share on other sites
  • 2 weeks later...

Если кому-то интересно - могу выложить скрипт и схему управления. Так сказать, краткий ликбез для реализации такого вот костыля.

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

Link to post
Share on other sites

Хорошо. Значит, по сути дела:

 

по крону раз в пять минут запускается скрипт-чекер

*/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) программа завершается, выход возвращается в состояние нуля, реле отпускается - модем аппаратно перезагружен

post-4520-1235554383_thumb.gif

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...