[linux-l] Anfängerhilfe Script

Thomas Kaepernick mast_1 at gmx.net
Di Sep 28 23:18:33 CEST 2010


Hallo,

ich habe mal soetwas ähnliches für den Internetzugang zu schreiben.
Die Werte des Scripts, die erhalten werden sollten habe ich dann
nach /var/log/MeinUnterverzeichnis schreiben lassen. Auch einzulesende
Werte habe ich dort in einer Datei vorgehalten.

Dazu mußt Du dem Benutzer des Scripts das Verzeichnis schenken oder das
Script mit sudo etc. laufen lassen.

Am Dienstag, den 28.09.2010, 14:47 +0200 schrieb Boris Kirkorowicz:
> Hallo,
> ich möchte ein erstes sinnvolles Script schreiben, das meine Kids (die
> viel zu viel Zeit vor der Kiste verbringen) nach einer bestimmten Zeit
> abmeldet oder den Rechner herunterfährt. Dazu habe ich folgende Idee:
> 
> Ein Script wird in ~/.kde/Autostart abgelegt (natürlich für den User nur
> r-x), das alle Minute in eine Hilfsdatei schreibt:
> 
> > if (Logfile von gestern); then
> >    rm Logfile
> > fi
> >
> > if (Größe von Logfile) > 120; then
> >    shutdown -h 2
> > fi
> >
> > touch Logfile

Das brauchst Du nicht unbedingt eine Datei wird angelegt, wenn in sie
geschrieben wird.
> >
> > while true
> > do
> >    sleep 60
> >    chmod 777 logfile

Das ist wohl auch nicht unbedingt notwendig. Die Lese- und Schreibrechte
bekommt sie beim Anlegen automatisch. Und ausführbar muß logfile ja
nicht sein.

> >    echo 1 >> Logfile
Hier würde ich eher damit arbeiten, die Datei als source einzulesen.
Also
source logfile
oder
. logfile

Dazu müßte in der Datei z.B. stehen
TIME=50

Anschließend rechnest Du in der shell mit dem Wert der Variablen TIME
TIME=$((TIME+1))

Danach habe ich dann zur Sicherheit den Wert mit dem Datum
zurückschreiben lassen.

DATE=$(date +%Y%m%d)
sudo echo "DATE=$DATE TIME=\
$TIME">  /var/log/MeinUnterverzeichnis/${USER}_logfile

Dementsprechend brauchst Du oben natürlich nicht die Datei löschen
lassen, sondern vergleichst den Inhalt von $DATE mit dem aktuellen
Datum.

> >    chmod 444 logfile
> >    (prüfe Größe von Logfile)
> >    if (Größe von Logfile) > 120; then
> >       shutdown -h 5
> >    fi
> > done
> 
> 
> Die chmod-Geschichte soll verhindern, dass die Kids einfach die Logdatei
> löschen -da kommen die mit Sicherheit drauf. Anstelle von shutdown -h 5
> wäre auch eine KDE-Abmeldung mit entsprechender Vorwarnung gut; dazu
> müsste dann aber der User bis zum Folgetag deaktiviert werden. Die
> erneute Aktivierung würde ich dann in /etc/init.d/boot.local vornehmen.
> 
> In einem zweiten Schritt würde ich dann noch gern Einschränkungen
> hinsichtlich der Uhrzeit (differenziert nach Wochentagen) vornehmen
> wollen, aber erstmal will ich obiges erreichen.
> 
> Ist das so ein gangbarer Weg, oder bin ich da aber auch sowas von auf
> dem Holzweg? Oder gibt es einfach bessere Alternativen? Und überhaupt:
> wie prüfe ich auf die Größe einer Datei, ob sich ein User heute bereits
> angemeldet hat oder wann er deaktiviert wurde?

Größe der Datei:
s.o. in der shell mit Variablen rechnen und diese in die Datei
schreiben.

User heute angemeldet?:
Du benutzt die Umgebungsvariable USER im Dateinamen deiner Logfile
(s.Bsp.o.) oder schreibst deren Inhalt in die Logfile. Dann mußt Du
sicherstellen, daß die Einträge jeder Zeile als Variablen einander auch
wieder eindeutig (oder heißt es eineindeutig :)) zugeordnet werden
können.

Andere Variante: Schau mal in die manpage von utmp/wtmp. Dort habe ich
unter SEE ALSO u.a. last und who gefunden. who gibt dir aus welcher User
auf welchem Terminal wie lange schon eingeloggt ist. last gibt dir alle
login eines Users seit Bestehen der Datei wtmp aus.

> 
> Gruss                    Greetings
>        Boris Kirkorowicz
> 
Gruß Thomas




Mehr Informationen über die Mailingliste linux-l