Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Shell script voor het uitzetten van een netwerk - wie helpt ?  (gelezen 1558 keer)

Dag allemaal,

Ik heb een vraag: wie kan me helpen een shell script te ontwikkelen dat alle machines in een netwerk een broadcast stuurt dat het netwerk uit de lucht gaat en dan aansluitend een aantal machines uitschakelt ?

Dit is mijn casus:
Ik woon in Frankrijk en heb hier een toeristisch bedrijf. Mijn klanten hebben meestal een laptop bij zich waarmee ze bijvoorbeeld e-mail checken.
Daarvoor heb ik een netwerk-infrastructuur met een aantal netwerk-componenten, waaronder twéé servers, wat access points en een dreambox (satellietontvanger).

Nu is het zo dat ik hier op het platteland woon en alle bedrading -stroom, telefoon- "in de lucht hangt"; d.w.z. bovengronds.
Als het onweert -wat hier nogal eens voorkomt- dan is het wijs alle gevoelige apparatuur uit te zetten (ondanks ups-en  XD ). Vorig jaar heb ik twéé ADSL-modems opgeblazen doordat ik nét te laat was  :o

Op dit moment kan ik vrij snel mijn servers uitzetten door via een ssh-verbinding in te loggen en het shutdown commando in te voeren. Ik heb ook één apparaat aan het netwerk hangen waarmee ik via telnet een shutdown kan doen.

Nadelen zijn:
1) Van mij afhankelijk; als mijn vrouw alleen thuis is, kan zij het niet uitvoeren -digibeet  =D
2) Alle clients die aan het netwerk hangen (via DHCP) worden geconfronteerd met plotseling "verdwijnende" servers: niet zuiver op de graat, uiteraard.

Wat zoek ik ?

Mijn ideale oplossing is (bijvoorbeeld) een shell script -andere oplossingen zijn welkom- dat achtereenvolgens het volgende doet:
1) Broadcast naar alle clients dat men vanwege naderend onweer de machine moet uitschakelen (let op: IK draai alles onder Linux; ik heb klanten met XP, Vista, Mac......)
2) Achtereenvolgens uitschakelen van enkele machines (via telnet en/of via ssh).

Zo'n script -of een andere oplossing- kan ik dan op alle "eigen" werkstations plaatsen voor alle gebruikers (mijn betere helft en ikzelf), zodat één keer dubbelklikken het hele zaakje in beweging zet.

Wat zijn mijn beperkingen ?

1) Te weinig sjoege van fatsoenlijk programmeren -hoe log ik bijvoorbeeld in op een telnet-sessie via een shell-script ? (i.e.: hoe geef ik een login naam en wachtwoord mee ?). Idem voor ssh.
2) Ondanks nogal wat Googlen geen idee of er iets is dat in een Gnome-sessie en/of een Windows-sessie en/of op een Mac een popup te voorschijn kan toveren (een terminal message meegeven met het shutdown-commando is wat te mager; wie zit er tegenwoordig met een terminalvenster open op het scherm te internetten, bijvoorbeeld ?).

Wat kan ik wel ?

1) Nog veel meer info aanleveren !
2) Uitproberen, testen en debuggen.
3) Helpers belonen met een originele Franse lekkernij (mits zij mij per pm hun adresgegevens willen doen toekomen  XD ).

Wie helpt ?


Alvast bedankt,


Harald

Offline xpired

  • Lid
Re: Shell script voor het uitzetten van een netwerk - wie helpt ?
« Reactie #1 Gepost op: 2009/05/15, 22:28:27 »
Beste Harald,

Puntje 1: De broadcast
Een broadcast over een netwerk sturen dat alle pc's waarvan je niet weet wat ze draaien, hoe ze ingesteld staan en hoe ze beveiligd zijn zal niet echt lukken.

Het is misschien een idee dat als er onweer aan komt om al het HTTP verkeer om te routeren naar een webpagina waar een waarschuwing op staat dat er onweer op komst is en er het een en het ander uitgeschakeld gaat worden.

Het nadeel is dan dat als eenmaal alle apparatuur uitgeschakeld is en op dat moment hun laptop aanzetten dat ze deze waarschuwingspagina niet krijgen in hun internet browser.

Puntje 2: Het uitzetten van de apparatuur.
Linux servers e.d. zijn met een shutdown commando via SSH wel uit te zetten. Maar er zijn natuurlijk altijd componenten zoals switches die niet via een telnet of SSH commando uit te zetten zijn.

Om die apparatuur uit te zetten kan je eventueel gebruik maken van een powerswitch (van bijvoorbeeld APC) en via de powerswitch de apparatuur van stroom af te halen. Deze dingen zijn vaak wel met een script of een webinterface aan te sturen.

De mogelijke oplossing:

Je ziet een onweer aankomen.
Start het script dat er voor zorgt dat AL het HTTP verkeer omgerouteerd word naar een waarschuwingspagina.
Klanten zullen deze waarschuwing zien zodra ze op hun PC internet opstarten.

Als de onweer dichter bij gekomen is...
Start he script dat je servers netjes afsluit en daarna via de managed power switch alle gevoelige apparatuur zonder stroom zet.


Het is zomaar effe een idee:) Nog niet verder over de uitwerking nagedacht.
Ik weer n.l. niet of het een optie is omdat de waarschuwingspagina natuurlijk maar een korte tijd in beeld kan komen en misschien niet idereen deze ziet.

Dit is trouwens een voorbeeld van een managed power supply:
http://www.apc.com/resource/include/techspec_index.cfm?base_sku=AP7921

Ze zijn niet goedkoop, ik geloof 400 of 500 euro per stuk. Er zullen vast nog wel goedkopere te krijgen zijn, maar deze gebruik ik over het algemeen. Maar als je er iedere keer een moden van bijvoorbeeld 100 euro bespaar kan je het er zo uit hebben. :)

Ik hoop dat je er wat aan heb!

Groet,
Sebastian
« Laatst bewerkt op: 2009/05/15, 22:39:38 door Sebastian Broekhoven »

Offline Pascal2

  • Lid
Re: Shell script voor het uitzetten van een netwerk - wie helpt ?
« Reactie #2 Gepost op: 2009/05/16, 09:40:36 »
Hallo Harald,

>1) Broadcast naar alle clients dat men vanwege naderend onweer de machine moet uitschakelen (let op: IK draai alles onder Linux; ik heb klanten met XP, Vista, Mac......)<

Ik zou eens overwegen om gebruik te maken van DynDNS :<a href="http://www.dyndns.com"></a> GRATIS !!
Bij de instellingenvan DynDNS, kun je een redirect-pagina aanmaken, voor je klanten.

>2) Achtereenvolgens uitschakelen van enkele machines (via telnet en/of via ssh).<

Dat is ook heel goed mogelijk, ook zonder weer opnieuw wachtwoord in te hoeven typen.
Dan kom je een zelfgemaakte "key" aan het importeren, op elke machine waar direct op ingelogt kan worden.

>2) Ondanks nogal wat Googlen geen idee of er iets is dat in een Gnome-sessie en/of een Windows-sessie en/of op een Mac een popup te voorschijn kan toveren (een terminal message meegeven met het shutdown-commando is wat te mager; wie zit er tegenwoordig met een terminalvenster open op het scherm te internetten, bijvoorbeeld ?).<

Op Gnome-Linux werkt een popup maken zo:
Installeer Zenity: apt-get install zenity

plak daarna onderstaande tekst in een leeg tekstbestand, sla het bestand op met willekeurige naam, ik heb het popup_tekst genoemd.
Maak het nu "uitvoerbaar" door, rechtermuisklik op bestand, dan "eigenschappen" > "rechten" , en vink aan "uitvoeren van bestand toestaan".

#!/bin/sh
zenity --info --width=350 --title="Belangrijke mededeling" --text="Sorry voor het ongemak, de server is wegens slechte weersomstandigheden uitgeschakeld."
exit 0


Uitvoeren van script kun je door een terminal te openen op de plaats waar het script staat, dan : sh popup_tekst of ./popup_tekst

Persoonlijk heb ik een voeding met een extra uitgang, om een monitor op aan te sluiten, je kunt dezelfde uitgang, inplaats van een monitor, ook gebruiken om je router en/of modem er op aan te sluiten.
Ik heb de kabel die normaal naar de monitor zou gaan , doorgeknipt en er een drievoudige verdeeldoos op gezet.
Als ik nu de pc uitzet, is men modem, en draadloze router ook direct uit.

Al met al , is het dus allemaal heel goed mogelijk wat je vraagt.
Het enige is natuurlijk dat je geen programmeer-ervaring hebt, dat maakt het een stuk lastiger.
Ik kan een voorbeeld script maken voor je, ik weet alleen niet of je het ook allemaal aan de praat krijgt, want je komt dat script natuurlijk aan te passen voor je eigen behoeftes (namen,ip-nummers,key-aanmaken en exporteren/importeren, enz..)

Laat me weten, als je serieus interesse hebt, er gaat namelijk behoorlijk wat tijd in zitten om een dergelijk script te maken en testen.

Met vriendelijke groeten, Pascal
« Laatst bewerkt op: 2009/05/16, 12:40:23 door Pascal »
-- To criticize the incompetent is easy; it is more difficult to criticize the competent. --