Linux homeserver powermanagement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De mensen die een home-server thuis hebben zullen dit probleem wellicht herkennen. De server staat s'nachts enz te bollen en verbruikt zo geld terwijl het niet nodig is dat ie opstaat. Natuurlijk zijn we allemaal te lui om de server handmatig af te zetten. ;)
Wel ik loop dus tegen hetzelfde probleem aan. Nu dacht ik aan de volgende oplossing en graag had ik jullie mening hierover.

Mijn plan is ervoor te zorgen dat als alle pc's in het netwerk uit staan de server zichzelf uitzet. Dit wilde ik verwezenlijken door op de server bij te houden welke pc's aan staan en welke uit. Als alle pc's uit staan zou de server zichzelf moeten uitzetten.

Goed tot dusver de doelstellingen.
Hoe ik dit wilde oplossen is als volgt: Iedere keer een (windows) pc boot verstuurd ie een WOL pakket waardoor de server gaat booten en opstarten. Zodra de server opgestart is wordt vanuit de pc een script gestart op de server zodat deze weet dat er een pc opstaat. Als er meerder pc's online komen wordt de lijst met online pc dus groter.

Als een windows's pc afsluit start ie eerst een script op de server die hem van deze lijst verwijderd. Als alle pc's uit de lijst verdwenen zijn sluit de server zichzelf af.

Het is me al gelukt via plink en ssh op de server een shell script te starten.

Mijn vraag luidt dus: is dit mogelijk om te doen? of bestaan er veeeeeel gemakkelijkere oplossingen?

Even wat rand informatie:
De home-server draait Ubuntu server edition,De pc's draaien een mix van Xp en Vista

Alvast bedankt

Acties:
  • 0 Henk 'm!

Verwijderd

Veel gemakkelijker: loop de IP adressen in je range af, is er geen meer die pingt, kan de server uit.
Een server moet niet van clients te horen krijgen dat ze weg zijn, de server kan dat prima zelf checken.

Acties:
  • 0 Henk 'm!

  • TheMe
  • Registratie: December 2006
  • Laatst online: 08-07 20:51
Ik zit te denken aan iets met ping. Kun je het afsluiten niet regelen met een paar pings die vanaf de server naar de pc's in je netwerk gaan. En dan zo dat als ie telkens contact maakt, de server zich dan afsluit.
Scriptje kunt je dan eens in de x minuten laten pingen.

Je magicpacket klinkt verder wel logisch.

Edit: spuit elf

There is no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oeh pingen klink inderdaad veel beter. Dat lost trouwens ook men probleem met men popconrhoura110 op. Kan ik hier voor eigenlijk een shell script schrijven dan via cron om de zoveel minuten runt?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 28 februari 2010 @ 10:52:
Oeh pingen klink inderdaad veel beter. Dat lost trouwens ook men probleem met men popconrhoura110 op. Kan ik hier voor eigenlijk een shell script schrijven dan via cron om de zoveel minuten runt?
Ik kan het, maar ik weet niet of jij het kan, sorry.

Acties:
  • 0 Henk 'm!

  • Compizfox
  • Registratie: Januari 2009
  • Laatst online: 16:02

Compizfox

Bait for wenchmarks

Mijn server gaat 's avonds om 11:30 gewoon uit met een cronjob.
Hij hangt aan zo'n tijdschakelaar die 's ochtends de stroom voor even er af haalt en er dan weer opzet.
In de bios heb ik dan weer ingesteld dat hij moet booten bij power up.

Zo start ie 's ochtends automatisch op en gaat ie 's avond weer automatisch uit.

Maar ik begrijp dat jij iets 'slimmers' wilt?

Gewoon een heel grote verzameling snoertjes


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Compizfox schreef op zondag 28 februari 2010 @ 11:05:
Mijn server gaat 's avonds om 11:30 gewoon uit met een cronjob.
Hij hangt aan zo'n tijdschakelaar die 's ochtends de stroom voor even er af haalt en er dan weer opzet.
In de bios heb ik dan weer ingesteld dat hij moet booten bij power up.

Zo start ie 's ochtends automatisch op en gaat ie 's avond weer automatisch uit.

Maar ik begrijp dat jij iets 'slimmers' wilt?
Wel mijn film zijn via nfs geshared met men popcornhour dus als men server om 11.30 uitvalt en er is nog iemand film aan het kijken valt ie gewoon uit.
Verwijderd schreef op zondag 28 februari 2010 @ 11:01:
[...]

Ik kan het, maar ik weet niet of jij het kan, sorry.
oei dat klinkt bijna als een uitdaging :P

[ Voor 14% gewijzigd door Verwijderd op 28-02-2010 11:10 ]


Acties:
  • 0 Henk 'm!

  • Compizfox
  • Registratie: Januari 2009
  • Laatst online: 16:02

Compizfox

Bait for wenchmarks

Verwijderd schreef op zondag 28 februari 2010 @ 11:08:
[...]

Wel mijn film zijn via nfs geshared met men popcornhour dus als men server om 11.30 uitvalt en er is nog iemand film aan het kijken valt ie gewoon uit.
Dat snap ik, misschien dat ik ook wel een ping-systeem kan toepassen. Hier komt het ook wel een voor dat ik nog wat van de server moet halen na 11:30 :P

Gewoon een heel grote verzameling snoertjes


Acties:
  • 0 Henk 'm!

  • DLGandalf
  • Registratie: Maart 2005
  • Laatst online: 22-08 17:20
ik heb op me telefoon gewoon een icoontje die mijn server doet suspenden.
Dus ik weet niet of je een smartphone hebt, maar anders kan je ook zoiets doen.

Als je de cronjob/ping manier gaat doen, let dan wel dat als er maar 1 pc aan staat, en deze moet onverwachts rebooten, en in die boottijd wordt de cronjob uitgevoerd, dat je server dan uit gaat.
Het script moet dus echt wel over nagedacht worden.

Acties:
  • 0 Henk 'm!

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Verwijderd schreef op zondag 28 februari 2010 @ 11:08:
[...]oei dat klinkt bijna als een uitdaging :P
Dat is net de bedoeling hier bij tweakers.net eh, dat je iets bijleert :P !

[ Voor 51% gewijzigd door GuntherDW op 28-02-2010 11:18 ]


Acties:
  • 0 Henk 'm!

  • Compizfox
  • Registratie: Januari 2009
  • Laatst online: 16:02

Compizfox

Bait for wenchmarks

Je zou het script alleen 's avonds kunnen uitvoeren, er van uit gaand dat de server overdag altijd aan moet blijven.

Gewoon een heel grote verzameling snoertjes


Acties:
  • 0 Henk 'm!

  • ppeterr
  • Registratie: Juni 2008
  • Nu online
Iets anders, maar wellicht een duwtje in de juiste richting voor jou.
Ik gebruik hier automount, een script die mijn machine's in het netwerk
pinged, en dan vervolgens shares mount, of unmount.

Niet te lastig, en wellicht te simpel te modificeren voor jou doel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Na wat google en copy-paste werk heb ik het volgende shell script in mekaar gestoken. Hierbij kan een pc in het netwerk 3 verschillende statussen hebben : nix ,strike1 of strike2 dit wordt bijgehouden in een filetje met de naam van de pc als voor alle pc's de statussen strike2 zijn valt de server uit.

Nu ben ik geen held in het bash scripten maar ik denk wel dat het volgens deze denkwijze kan lukken.

http://pastebin.com/84ge2cdn

Nu loop ik toch nog tegen enkele problemen op nl.
ik krijg vooral deze vage error
./pingtest.sh: regel 21: syntaxfout nabij onverwacht symbool 'else'
./pingtest.sh: regel 21: ` else'

Acties:
  • 0 Henk 'm!

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 13-08 16:01
Je idee is aardig, maar dit script niet zo heel erg. Je moet nu voor elke PC in je netwerk een heleboel code dupliceren. Misschien moet je even gaan kijken hoe je met functies werkt in bash, of hoe je andere scripts aan kan roepen.

De enkele quotes op regel 12 moeten backticks zijn (links naast de 1 op je toetsenbord), en het if-statement op regel 14 moet zoiets worden:
code:
1
2
3
4
5
if [ "x$statusq9450"="xstrike1" ]; then
        echo strike2 > q9450
else
        echo strike1 > q9450
fi

De 'rm' op regel 18 gaat mis en is niet nodig. Daar ben ik opgehouden met lezen, want ik weet niet of het door pastebin komt, maar alle indentatie is weg, zodat je code bijna onleesbaar wordt. Ik zou zeggen: maar je script stap voor stap, zodat je problemen in een vroeg stadium tegenkomt en niet meteen het hele script hoeft te gaan debuggen.

Tenslotte: misschien moet je eens kijken naar nmap:
code:
1
nmap -sP 10.10.1.100 10.10.1.101

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 15:08

Kees

Serveradmin / BOFH / DoC
Of je kijkt of hij nog gebruikt wordt door te kijken of er nog verkeer over de interne interface gaat, en als dat niet het geval is voor 5 minuut doe je een shutdown.

Voorbeeld scriptje:
code:
1
2
3
4
5
6
7
8
9
10
11
fr=`cat /proc/net/dev|grep eth1|tr -s " " |cut -d":" -f2 | cut -d" " -f 1`
while true
do
    sleep 300
    sr=`cat /proc/net/dev|grep eth1|tr -s " " |cut -d":" -f2 | cut -d" " -f 1`
    if [ $sr -eq $fr ]
    then
        halt
    fi
    fr=$sr
done

quick 'n dirty. Meeste pc's doen wel meer dan 0 pakcets in 5 minuten versturen (MSN, irc, openstaande browser met een refreshende pagina, bittorrent etc).

Andere oplossing zou kunnen zijn het pingen van het netwerk, en als alles uit is een shutdown doen
code:
1
2
3
4
if (fping -c2 -q -g ${netwerk}.0 ${netwerk}.255 2>&1|grep -v $serverip |grep 'min/avg/max') ; 
then exit;
else halt; 
fi

En als je daar dan een 'strike1 en strike2' bij wil zetten, dan doe je ipv 'else halt' gewoon een 'else sleep 60; doe-de-ping-nog-een-keer; replies? exit, geen replies? halt'

[ Voor 10% gewijzigd door Kees op 28-02-2010 14:54 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[b][message=33550791,noline]

....

Andere oplossing zou kunnen zijn het pingen van het netwerk, en als alles uit is een shutdown doen
code:
1
2
3
4
if (fping -c2 -q -g ${netwerk}.0 ${netwerk}.255 2>&1|grep -v $serverip |grep 'min/avg/max') ; 
then exit;
else halt; 
fi

En als je daar dan een 'strike1 en strike2' bij wil zetten, dan doe je ipv 'else halt' gewoon een 'else sleep 60; doe-de-ping-nog-een-keer; replies? exit, geen replies? halt'
Thx man _/-\o_ dit stukje code heb ik veranderd naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
serverip='10.10.1.11'
netwerk='10.10.1'

if (fping -c2 -q -g ${netwerk}.2 ${netwerk}.255 2>&1|grep -v $serverip |grep 'min/avg/max') ; 
then exit;
else 
sleep 60;

    if (fping -c2 -q -g ${netwerk}.2 ${netwerk}.255 2>&1|grep -v $serverip |grep 'min/avg/max') ; 
    then exit;
    else 
    sudo halt;
    fi
fi

Ik heb ook iets kleins veranderd omdat 10.10.1.1 bevindt zich men router dus zal deze altijd terug pingen.
en ik ben het nu aan het testen.
Resultaten volgen

edit: Dit werkt op een of ander manier niet. Eigenlijk was het wel te denken want wat werkt er nu wel vanaf de eerste keer. Eens wat echo's toevoegen en debuggen die handel. :+

[ Voor 13% gewijzigd door Verwijderd op 01-03-2010 14:35 ]


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 10-09 21:08
Niet helemaal ontopic, maar volgens mij wel relevant, kijk ook eens naar ACPI wakeup, je kunt namelijk vanuit Linux ook het wakeup alarm zetten wat je in jouw BIOS gebruikt, en dan bijvoorbeeld "over 1 uur". Dan kijken of er al wat te doen is en eventueel weer een wakeup alarm zetten. Hier wordt het uitgelegd: http://www.mythtv.org/wiki/ACPI_Wakeup

Via "netstat" kun je trouwens ook kijken of er TCP/UDP connecties zijn van buitenaf met jouw server waar je rekening mee moet houden. Sommige PC's reageren misschien niet (snel genoeg) op een ping.

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 11:48
Ik vind het een interessant probleem en wil iets soortgelijks gaan doen.

Via tomato wil ik kijken of er hosts binnen het lokale netwerk zijn, zoja, dan moet de server een WOL pakketje krijgen.

Via tomato kan bijvoorbeeld elke minuut kijken of er een host in het netwerk actief is en vervolgens de server wakker maken.

Ik ben erachter dat ik de server kan wakker schudden dmv:
code:
1
ether-wake 00:11:22:33:44:55:66


Nu wil ik op een efficiënte manier kijken of er hosts zijn aangemeld. Ik heb geen idee hoe dit handig aan te pakken. Ik zou kunnen pingen, maar via het tests-shell script is dit me nog niet gelukt. Handiger zou zijn om te kijken in de router-cache of er netwerkactiviteit is of dat er een host is aangemeld. Iemand een idee wat ik kan proberen?

"Chaos kan niet uit de hand lopen"

Pagina: 1