Op zondag 02 juni 2002 20:00 schreef TD-er het volgende:
Hebbik ook nog een leuke, van uit de tijd toen ik net een beetje begon te scripten.... (begin '98 geloof ik)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #!/bin/bash
while [ true ]
do
# The .whosuprc version
(cat $HOME/.whosuprc |xargs -n1 -P0 ping -c1|grep -B1 "1 packets r"|grep 'stat'
|grep `echo $HOSTNAME|cut -d. -f2-`|cut -d. -f1|cut -d" " -f2|sort -n)
|xargs -n1 -i finger @{} 2> /dev/zero |cut -d" " -f-1|sed s/.`echo $HOSTNAME
|cut -d. -f2-`//g|sed s/Login//|sed s/No/Nobody/|sed /^$/d|uniq >| $HOME/.online
clear
cat $HOME/.online
rm $HOME/.online
sleep 60
done |
Dit alles met het boek "Linux in a Nutshell" in de hand in elkaar gedraaid.
Het belangrijkste voor mij was dat het een one-liner werd (voor de leesbaarheid heb ik de wrapper in meerdere regels gezet.)
extra informatie:
de .whosuprc file bestaat uit een lijstje met namen (1 naam per regel)
Probeer ook te bedenken waar de naam van het programma op slaat...
succes

ping elke naam in het bestandje whosuprc in je homedir 1 maal. Vervolgens filter je de regel met daarin de tekst "1 packets r (eceived)" eruit en zorgt ervoor dat de voorgaande regel ook ge-echo-ed wordt. Nu haal je die eerste regel hierboven eruit (de regel met statistics erin dus).
Nu ga je de naam in die regel filteren op je naam van het domein waar je eigen machine in hangt (je haalt het eerste deel van je hostname af, of anders gezegd, je laat het 2e deel en alles erachter van je hostname erin staan).
Kortom tot nu toe, krijg je alleen de machines te zien, die up zijn en tot het domein behoren waar jij ook in zit.
Nu strip je de FQDN naar alleen de hostnames in bovenstaande regel en vervolgens wil je uiteraard van je streepjes in de regel af en wil je uiteindelijk alleen de hostname overhouden.
We zetten dat lijstje even op alfabetische volgorde
Dit is het deel tussen haken.
Bovenstaande voeren we aan het fingerprogramma on gebruikersinfo op te gaan halen per host die up is binnen ons eigen domein. De uitvoer daarvan onderdrukken we.
Nu gaan we de loginnamen eruit filteren. We hebben nu dus een lijstje met ingelogde personen op online machines binnen het eigen domein.
Voeg hostnaam toe aan de sed buffer
Vervang de Login regel door een lege regel. Vervang No door Nobody. Poep alles weer uit inclusief de toegoevoegde hostnaam en zorg er even vooor dat er geen dubbele namen in staan.
Dit alles (dus hostnamen binnen je eigen domein met daaronder de online users op die machine) worden in een bestand .online in je home-dir gemikt.
Vervolgens wordt het scherm leeggemaakt. De inhoud op het scherm getoverd. De .online file weggemikt en herhaalt het geheel zich na 60 seconden.
.whosuprc staat dan ook voor "Who is up on remote clients"

Op zondag 02 juni 2002 20:47 schreef yeadder het volgende:
[..]
lijst van proccessen. dze word door grep gefilter op foo......... hier van wordt het tweede iets(wat weet ik niet regel of deeltje van de eerste regel) geprint. deze print is de invoer van kill (deze wordt gekilld)
Niet zomaar op foo filteren

Alleen de regels die beginnen met "foo", ofwel er wordt op user foo gefilterd.
De rest van bovenstaande scriptjes zal ik maar aan anderen overlaten