Sóc Carles Pina i Estany, cpina@linuxfan.com
Benvinguts a una pàgina ràpida de carregar (per tant sense
gràfics) dedicada a posar "pijeries" a la configuració de
la compte.
Està pensada (i provada) per fer-ho a la màquina Cygnus
de la Salle (Debian Linux), però hauria de ser "altament compatible"
en qualsevol Linux/UNIX.
S' intentarà explicar perqué serveix una mica cada cosa, però sense entrar amb profunditat (=man comanda)
Farem unes explicacions preliminars:
Un dels fitxers més importants de la configuració de la
compte és el .profile que teniu al directori $HOME (el que us deu
entrar per defecte).
Aquest fitxer és un fitxer de texte, amb aquests permisos:
-rw------- 1 is08139 IS
1347 Feb 26 15:08 .profile
(bé, espero que jo no sigui el propietari del vostre .profile)
Com que el nom comença amb un . , fent un ls -l no es veu; haurieu
de fer un ls -la.
A dins aquest fitxer, hi podeu anar posant les vostres instruccions (per exemple, un echo "Hola, benvingut a casa, amo") i executaria la instrucció.
Jo hi tinc diverses coses, però per facilitar la comprensió he fet de cada petita part del meu .profile un fitxeret a part (de tal manera que el podeu copiar a la vostre compte, l' adapteu, el proveu -doneu-li permisos d' execució) i llavors el crideu del .profile.
Comencem doncs per veure les pijeries que es poden fer:
Salutació inicial
echo "Hola company, que tal el dia?"
Utilitat:
Això al entrar ens posa el que he posat entre cometes.
Notes:
No és necessari fer un fitxer apart i cridar-ho des d' aquest
(sembla una mica massa rebuscat, no?)
Usuaris connectats
Ús
num=`w | wc --lines`
echo "Ara sou" `expr $num - 2` "humans connectats"
Utilitat:
Saber els usuaris que hi ha connectats amb base la sortida de la comanda
w per saber com està el sistema de carregat
Explicació teòrica:
Es basa en comptar el número de línies de w i restar-li
2 (hi ha dos línies de capçalera que no volem que les compti
com a humans)
w ens torna una línia per humà (més 2).
wc --lines li entra la sortida d' w per l' entrada estàndard
i ens treu:
[carles@Carles carles]$ w | wc --lines
5
[carles@Carles carles]$
(és a dir, el número de línies)
Per tant, num=`w | wc --lines` posa a la variable $num el número
de línies.
Només falta ensenyar el missatge, pensant a restar-li 2. Per
restar, usarem la comanda expr . Vigileu, cada paraula ho tracta com una
opció per tant ha d' anar separat per espais.
Notes:
També podria mirar la sortida de finger i restar-li; però
finger és força lent i w no. Si feu servir l' script dels
amics connectats, podrieu contar els humans sobre el fitxer .finger que
ja generem.
També és interessant separar per camps amb awk la sortida
de uptime (amb cut no va bé ja que depèn de l' hora hi posa
més espais o menys que cut es pensa que són camps)
Amics connectats
Utilitat:
Aquest ens retornarà les línies del finger corresponent
als nostres amics (no totes les línies, eh?)
Jo aquest ja el tinc muntat amb un fitxer apart (nom: busca) i així
des del .profile el crido. També, si estic treballant puc executar
"busca" i comprova els amics.
Script en sí:
El fitxer busca és el següent:
---------------------------
#!/bin/sh
finger > $HOME/.finger
fitxerbuscar=$HOME/.finger
fitxerbase=$HOME/.amics
linia=`cat $fitxerbase|awk 'BEGIN{ORS=" "}{print $0}'`
for i in $linia; do
cat $fitxerbuscar|grep $i;
done
----------------------------
S' ha de fer el fitxer .amics, al directori $HOME (el nostre directori
principal) que conté el login (un per línia) dels nostres
amics.
Ús:
Llavors, senzillament executant "busca" ens treu per pantalla el que
ja buscàvem.
Explicació teòrica:
Primer de tot, per treballar millor copiem la sortida del finger al
fitxer $HOME/.finger (com que comença amb un . no el veurem).
Es defineix 2 variables que apunten als fitxers base.
A "linia" hi aniran tots els logins posats un al costat de l' altre. Aquesta instrucció seria molt més correcte amb xargs (però ara no me la feu pensar!)
El for anirà posant a $i cada paraula de línia (una paraula
per iteració).
Cada for fa un grep del login en curs sobre el fitxer a buscar (per
això hem posat el finger en un fitxer, sinó seria massa lent
per excès de fingers!)
(veient la línia del cat, també es podria fer més
simple grep $i $fitxerbuscar i ja està)
Al .profile hi posem una crida al fitxer "busca" i ja s' executarà (si està al HOME, si no controleu-ho bé)
Número de mails nous
num=`echo q | mail - | head -2 | tail -1 | cut -d " " -f 4`
if [ $num ] ; then
echo
echo "Tens " $num "missatges"
fi
Utilitat:
Només fer el telnet ens dirà:
Tens 10 e-mails nous
Notes:
Aquest sí que crec que és exclusiu per cygnus (si més
no tal com ho tinc montat)
Explicació teòrica:
Primer de tot, posarem a "num" el número de mails. Es podria
també fer amb una línia, però així s' entèn
més i a sobre ho podrem aprofitar per una altra coseta.
Si volem veure el número de mails nous, apart d' anar al pine
i mirar-ho XD podem fer "mail" que ens retorna quelcom com:
cygnus:~>mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/is08139": 57 messages 1 new
41 aquiles@linuxfan.com Fri Feb 18 14:56 37/1296
"Packages.rpm"
[anar posant línies per cada mail]
56 xmontero@dsitelecom. Sat Feb 26 02:10 42/1558
"Re: Backups: elegir a"
>N 57 is08139@salleURL.edu Sat Feb 26 15:08 28/1086
"test"
&
[fer notar que no surt de la comanda, sinó que espera una instrucció]
Bé, veiem que la segona línia tenim la informació
que volem! però volem que surti de la comanda. Per sortir de mail
fem "q" (de quit). Doncs enviem-li a la ordre mail una q:
echo q | mail
I així ja surt.
Però ens interessa la 2 línia. Li diem que només ens ensenyi les 2 primeres línies:
echo q | mail | head -2
Però volem realment l' última (la segona):
echo q | mail | head -2 | tail -1
I no la volem tota! sinó només el trosset aquell:
echo q | mail | head -2 | tail -1 | cut -d " " -f 4
Anem bé, això ens torna el número de "new messages" (si n' hi ha). Ho posarem dins la variable "num":
num=`echo q | mail | head -2 | tail -1 | cut -d " " -f 4`
(ull viu amb les cometes!)
I aquí, si "num" existeix (conté un valor) diem el número
de mails nous que tenim:
if [ $num ] ; then
echo
echo "Tens " $num "missatges"
fi
(un echo a una línia sola és com un salt de línia)
En cas que num no contingui res (perquè no hi ha nous missatges)
doncs no ens ensenya res.
(he comprovat que hi ha casos que apareix un missatge del tipus "Unable
to block mailbox", o semblant. Ens apareix per stderr -bé, tu ho
veus igual-. Per arreglar-ho, has de fer servir:
num=`echo q | mail 2> /dev/null | head -2 | tail -1 | cut -d " " -f
4`
Comprobació de froms
echo "Comprobació de froms:"
from | tail -$num
Utilitat:
Anem contents perqué l' script anterior ens ha dit que tenim
un mail d' una amiga nostra (;-) ) anem al pine i ens trobem que
Microsoft ens vol vendre el Windows 63000? (el dels 63000 errors, crec
que en diuen Windows 2000).
I a sobre el pine ha anat molt lent i ens hem deprimit XD
Doncs amb el petit afegitó (que aniria dins l' if del anterior script) ens ensenyarà d' on venen els nous e-mails que tenim.
Va dins l' if perquè sinó ens ensenya tots els from de tots els mails que tenim, i clar, no es plan que cada cop ens refregui per la cara que els fumadors no podeu fumar a la Salle.
Explicació teorica:
From ens retorna quelcom com:
cygnus:~> from
[...]
From is05654@salleURL.edu Sat Feb 26 00:25 GMT 2000
From aquiles@linuxfan.com Sat Feb 26 02:01 GMT 2000
From xmontero@dsitelecom.com Sat Feb 26 02:10 GMT 2000
From is08139@salleURL.edu Sat Feb 26 15:08 GMT 2000
cygnus:~>
Així, amb ordre d' entrada. Per tant, només hem d'agafar les n línies últimes com missatges tinguem (i així podem aprofitar la variable num que ja teniem amb el número de missatges).
Fàcil, no?
Modificació del .plan
Utilitat:
Que quant se't faci un finger, desprès del finger aparegui un
fitxer de texte.
Configuració + explicació teòrica:
(del man finger) Quant es fa un finger, desprès de la informació
habitual surt el .plan de la teva compte i el .project (crec que és
essencialment el mateix, jo només parlaré del .plan)
Per tant, és evident que s' ha de fer:
vi .plan (al teu $HOME) (o pico .plan)
I posar el teu missatge.
Crec recordar que llavors si fas un finger a tu mateix, ja et surt el
.plan. Curiosament, si te'l fa altra gent no surt :-(
Segons el CSI (el Centre de Serveis Informàtics) s' ha de posar
uns permisos un pel curiosos:
1.- al .plan permís de lectura a tothom
2.- al teu $HOME permís de lectura i execució a tothom
(tranquils que ara ho explico)
Per posar-lo al .plan és:
chmod a+r .plan (des del teu $HOME)
(a+r=tothom pot llegir, all can read; si voleu podeu usar números
en octadecimal i tot el pal).
Per posar el permís de lectura al teu $HOME és:
cd .. (per sortir del $HOME; si estàs al $HOME)
chmod a+rx is08139 (canvia is08139 pel teu login)
Deus estar pensant: el Carles (servidor) està sonat! vol que dongui permisos de lectura a tothom! (potser fins i tot rius).
El que estàs fent és que tothom pot fer un cd el_teu_login i entrar. Llavors pot fer un ls i veure els fitxers qu hi tens. Però no pot llegir (ni copiar, ni fer un cat, ni fer res) de cap fitxer que no sigui el .plan (tots els altres només els pots llegir, escriure tu i només tu).
Clar que si ets de la gent que posa el fitxer "sexoduro.jpg" al $HOME, potser si ve la noia que esperaves un mail més amunt i ho veu no li agrada. Però se soluciona posant-ho dins un directori que no podrà entrar ningú (si veure el nom, però res més).
(m' adono que el relat és una mica masclista, perdoneu)
Posant màxima paranoia pots fer dins el $HOME el directori "caseta"
i penjar-ho tot d' allà (el .plan no el toquis) (el pine segueix
fent les seves paranoies al $HOME original, però bé...)
.forward
Utilitats:
1.- Que quant arribi un mail a la teva compte, sigui enviat a una altre
direcció com <pepe@lamoncloa.es>
2.- Que s' executi un programa
Ús i teoria:
Edites el fitxer .forward del $HOME. Hi poses una línia per
cada direcció que ho vols moure:
pepe@lamoncloa.es
hola@adios.com
Quant ve un mail va a aquestes dues direccions (i no s' et queda a la
compte).
Si vols que si quedi, posa també que vagi a la teva compte (tranquil,
no fa bucle infinit).
Sé que es pot fer servir per executar un programa només
arribar un mail a la teva compte. L' interessant del tema és que
al programa se li passa el mail per l' entrada-sortida estàndard,
i que el programa podria ser procmail.
Amb ell i un petit fitxer de configuració de filtres, pots fer
que si el mail ve d' una llista vagi a un fitxer, si ve de @microsoft.com
vagi al /dev/null XD , si ve de la noia d'abans (dels mails, ja saps)
que vagi a un fitxer especial, a casa, al mòbil, etc.
Però! jo no he sabut usar-lo correctament ja que Aries (servidor de mails, entre altres coses) em retorna el mail dient-me que no tinc permisos o no sé qué.
Si algú l' ha pogut fer servir a La Salle, si us plau, que em
digui com (a casa modificant el Sendmail ja ho sabria fer, crec).
I si no, quant tingui temps li faré una ullada.
Signatura diferent
Utilitat:
(programa en C)
Cada cop que facis un e-mail, que una part de la signatura (allò
que està al final de tot de l' e-mail) canviï. Canviï
per què? per posar un tagline (oh! quins records de quant estava
a les BBS!)
(tagline: expresió normalment d' una línia que té
certa gràcia -o no. Són com dites, frases gracioses... Si
al yahoo, altavista, etc. en busqueu els trobareu a patades)
Explicació teòrica:
En veritat, no canvia per cada e-mail fet sinó per cada cop
que obres la compte.
El que fa el programa, és agafar el $HOME/.signature.main i
li afegeix una línia a l' atzar del $HOME/.signature.tags (on hi
ha el llistat de tots els taglines, un per línia). El resultat d'
això ho posa a $HOME/.signature (que és el fitxer que agafa
el pine).
El programa el podeu trobar aquí (ull viu! és un programa molt "patata", tot en una funció main, totalment linial i fet quant ningú m' havia ensenyat a programar correctament; però funciona)
El programa us demana tenir els fitxers que he dit abans amb el nom corresponent i que s' executi cada cop que entris a la compte (afegeixa-ho al .profile)
Per compilar, doncs gcc randtag.c -o nom
Ensenyar el tagline de la sessió
tail -1 .signature
Aprofitant (per tant, requisit important haver fet l' anterior coseta) que tenim un fitxer on l' última línia és un tagline; és immediat pensar en posar al .profile una cosa com:
tail -1 .signature
Utilitat:
Aquesta ordre ens ensenyarà l' última línia del
.signature que justament és el tagline.
Bé, crec que per avui ja n' hi ha prou. Més endavant ampliaré (wget, nohup, pgp4pine, pgp, tmp, etc.)
Si sabeu algún altre truquillo, aviseu-me! (el posaré,
amb el vostre nom evidentment).
I si teniu una idea i no la sabeu fer, aviseu (no garanteixo que la
faci, però si és bona mai se sap)
Fins aviat
Carles Pina i Estany (2000)
is08139@salleurl.edu
Saludos al Gran Hermano! (que segur que ho llegeix!)
Última modificació: