Kirjoittaja Aihe: Kone sammumaan itsestään  (Luettu 4125 kertaa)

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Kone sammumaan itsestään
« : 13.04.08 - klo:14.58 »
Pitäisi saada kone sammumaan itsekseen jonkin ajan (ehkä puolisen tuntia) päästä kun kukaan ei ole kirjautunut sisään. Voisiko sen tehä jollain skriptillä?  ???

Itsellä ei juurikaan ole kokemusta minkäänlaisesta skriptailusta tms.

vellu@vmach

  • Käyttäjä
  • Viestejä: 348
  • Kiroitusvirheitä jo vuodesta feisty
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #1 : 13.04.08 - klo:15.32 »
Ajan voi lisätä shutdown - komennon jälkeen.
http://linux.fi/index.php/Shutdown

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #2 : 13.04.08 - klo:15.44 »
Tarkennetaan siis kysymystä vähän..

Konetta käyttää useampi henkilö vuorotellen. Sitten kun kukaan ei ole kirjautunut, sen pitäisi sammuttaa itsensä jonkin ajan kuluttua jos kukaan ei tee mitään.

Ninnnu

  • Käyttäjä
  • Viestejä: 247
  • LinuCaster
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #3 : 16.04.08 - klo:14.49 »
Saattaa olla purkahko, mutta miten olisi joku croniin laitettava skriptin palanen joka lukee vaikka "w":n tai "uptime":n ulostuksen, jos w palauttaa vain "otsikkorivit" tai uptimessä seisoo "0 users", suoritettaisiin halt tai jotain muuta? Tiedä sitten näkyykö gdm-kirjautuminen järjestelmälle käyttäjänä vai ei (tai cron kun tota skriptaa ajaa...), mutta seuraavan Python-skriptin pitäisi hoitaa homma:
Koodia: [Valitse]
import commands
import os
if '0 users' in commands.getoutput('uptime'):
    os.execlp('halt');
Ja /etc/crontabiin sitten vaikka tommoset rivit:
Koodia: [Valitse]
0 * * * * root python /home/kerneli/automaattisammuttaja.py
30 * * * * root python /home/kerneli/automaattisammuttaja.py
Tän jälkeen pitäisi puolen tunnin välein tapahtua toi "onko kirjautuneita" tarkistus ja sen mukaan sammua... (Huom. /etc/crontab-muokkauksen jälkeen sun pitää vielä ajaa "sudo /etc/init.d/cron restart", tai käynnistää kone uudelleen)

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #4 : 16.04.08 - klo:15.51 »
Jotain tommosta haen kyllä. :)

Mutta jos oikein ymmärsin, niin tossa on yks ongelma. Kun kirjautuu ulos vaikka minuutti ennen tota tarkastusta, ni sittehän sammuttamiseen menee se minuutti eikä puol tuntia, tai jotain. Näinhän?


Tuli mieleen, että voisko tehä jonku semmosen jutun kun kirjautuu ulos niin ajais semmosen skriptin et se miettii sen puoli tuntia, sitte tarkastaa onko kirjautuneena ja jos ei, sitte sammuttaa..  :-\

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #5 : 16.04.08 - klo:18.06 »
Jospa vaikka alla olevan kaltaisen skriptin laittaisi ajettavaksi crontabista säännöllisesti parin minuutin välein. Käytännössä tuo ajotiheys määrää kuinka tarkasti tuo puoli tuntia saavutetaan. Kone on päällä vähintään säädetyn ajan verran ja tuo skriptin ajoväli käytännössä määrää kuinka paljon tuo aikaraja saatetaan pahimmassa tapauksessa ylittää.

Koodia: [Valitse]
#!/bin/sh

# Required inactivity in seconds (1800 s = 30 min)
waittime=1800

now="$(date +%s)"
timestampfile="$HOME/.automaattisammuttaja"
users="$(uptime | cut -d, -f3 | tr -dc 0-9)"

if [ $users -gt 0 -o ! -f "$timestampfile" ]; then
    echo "$now" >"$timestampfile"
fi

timestamp="$(head -n1 $timestampfile)"
limit="$(expr $timestamp + $waittime)"
if [ $limit -lt $now ]; then
    rm "$timestampfile"
    shutdown -h now
fi

Crontabin ajastus voisi olla esimerkiksi alla olevan näköinen.

Koodia: [Valitse]
0-59/2 *    * * *   root    /root/automaattisammuttaja.sh

En anna mitään takuita toimivuudesta koska en ole kokeillut ajaa tätä crontabista käsin. Lisäksi tein komennon uptime tulostuksesta saman oletuksen kuin ninnnu. Tosin en toistanut ninnnun virhettä jossa mikä tahansa nollaan loppuva käyttäjämäärä (10, 20, ..., 100, ...) kelpaa koneen alasajoon.

Edit: Skriptistä korjattu pieni bugi.
« Viimeksi muokattu: 16.04.08 - klo:22.26 kirjoittanut mgronber »

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #6 : 16.04.08 - klo:20.38 »
Toi vaikutti aika mielenkiintoselta. Ite en tajunnu paljoakaan, mut idean nyt kuitenkin. =)  Voin kokeilla sitä jossain vaiheessa. Kiitos. :)

Tuli nyt itelleni vielä mieleen tämmönen ratkaisu:  Laittaa tonne /etc/X11/gdm/PostSession/Default:iin jonku tän tyylisen skriptin.

Koodia: [Valitse]
#!/bin/bash

sleep 1800

users=$(users)

if [ -n "$users" ]
then
echo "Joku on kirjautunut sisään."
else
echo "Kukaan ei ole kirjautunut sisään."
fi

Sitte tietty muokkailee ton sillai siihen tarkotukseen, shutdownit yms. Mut tossa on se idea. :D

Kiinnostais tietää mahtaisko tämmönen toimia? :)

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #7 : 16.04.08 - klo:22.26 »
Kiinnostais tietää mahtaisko tämmönen toimia? :)

Jos tuon PostSession/Default-skriptin suoritus odotetaan loppuun asti niin kirjautumisruutu ei tule näkyviin tuon sleepin aikana ja sen jälkeen kone ajetaan alas.

Jos tuo taas suoritetaan taustalla niin silloin ongelmana on ettei tuota pysty keskeyttämään. Uloskirjautumisen jälkeen jos joku kirjautuu heti esimerkiksi 25 minuutin ajaksi sisään niin hänen uloskirjautumisen jälkeen kone ajetaan viiden minuutin kuluttua alas, koska ensimmäisen käyttäjän uloskirjautumisen yhteydessä ajettu skripti pääsee silloin loppuun.

Näitä ongelmia ei minun ratkaisussani ole (olettaen että se toimii). Minun ratkaisuni osaa myös sammuttaa koneen vaikka kukaan ei olisi missään vaiheessa kirjautunut. Jos joku käynnistää koneen mutta lähteekin jonnekin muualle ilman että hän kirjautuu sisään niin puolen tunnin kuluttua kone ajetaan alas.

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #8 : 16.04.08 - klo:22.44 »
Joo, taidat olla oikeessa. Enpä ollu noita seikkoja ajatellu.

Huomenna sitte kokeilen tota sun skriptiäs. :)

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #9 : 17.04.08 - klo:18.09 »
Sain ilmotuksen uudesta viestistä ja tässä näky 2 uutta viestiä mut ne molemmat katos tai poistettiin. Hyviä vinkkejä olivat.  :-\

No, onneks sain ne luettua.   :)

Lainaus
http://ubuntuforums.org/showthread.php?t=717603
Muuten hyvä, mutta joku ylimääränen käyttäjä siinä gdm:n listassa kirjautuessa ei olis kiva. :D

Lainaus
http://www.gnome.org/projects/gnome-power-manager/index.html
Toimiikos tämä Gnome power managerin sammutusjuttu myös jos ei ole kirjautuneena?

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11443
    • Profiili
    • Tomin kotisivut
Vs: Kone sammumaan itsestään
« Vastaus #10 : 17.04.08 - klo:18.31 »
Lainaus
http://ubuntuforums.org/showthread.php?t=717603
Muuten hyvä, mutta joku ylimääränen käyttäjä siinä gdm:n listassa kirjautuessa ei olis kiva. :D
Ne voi jättää pois. Minulla esimerkiksi oli (poistin jo sen) esittely käyttäjä (nimensä mukaisesti esittelyyn) jonka piiloitin.
Järjestelmä > Ylläpito > Kirjautumisikkuna > Käyttäjät > Lisää
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Kerneli

  • Käyttäjä
  • Viestejä: 42
    • Profiili
Vs: Kone sammumaan itsestään
« Vastaus #11 : 17.04.08 - klo:19.30 »
Lainaus
Ne voi jättää pois. Minulla esimerkiksi oli (poistin jo sen) esittely käyttäjä (nimensä mukaisesti esittelyyn) jonka piiloitin.
Järjestelmä > Ylläpito > Kirjautumisikkuna > Käyttäjät > Lisää

Kiitos vinkistä! Enää on ongelmana se, että tuolta gdmsetupista (kirjautumisikkunan asetukset?) ei voi säätää kun 100s siihen timed loginiin. Voiko sen jostain konffista säätää sitten pitemmäksi?