Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Kerneli - 13.04.08 - klo:14.58

Otsikko: Kone sammumaan itsestään
Kirjoitti: Kerneli - 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.
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: vellu@vmach - 13.04.08 - klo:15.32
Ajan voi lisätä shutdown - komennon jälkeen.
http://linux.fi/index.php/Shutdown
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Kerneli - 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.
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Ninnnu - 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)
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Kerneli - 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..  :-\
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: mgronber - 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.
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Kerneli - 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? :)
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: mgronber - 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.
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Kerneli - 16.04.08 - klo:22.44
Joo, taidat olla oikeessa. Enpä ollu noita seikkoja ajatellu.

Huomenna sitte kokeilen tota sun skriptiäs. :)
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Kerneli - 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?
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Tomin - 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ää
Otsikko: Vs: Kone sammumaan itsestään
Kirjoitti: Kerneli - 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?