linux user group brescia

immagine del castello

Archivio della mailing list

info 004: scripting...

Maurizio Paolini paolini a dmf.bs.unicatt.it
Sab 13 Gen 2001 09:13:06 UTC
Vediamo se riesco a rispondere in modo ordinato:



>
> Il caso in questione:
>
>    Ho abilitato su Debian l'output del file /var/log/messages su tty12 (anche
> qui: se non avessi potuto scuriosare l' /etc/syslog.conf della Mandrake, col
> piffero che ci sarei riuscito!), e di conseguenza ho abilitato anche tutte le
> tty da 8 a 11 per console di 'sistema'...
>
>    Avrei voluto fare in modo che, all'atto del login come root, uno script
> determinasse la console di login e si regolasse di conseguenza, spostandosi
> automaticamente in directory 'strategiche' di servizio o lanciando programmi
> 'ad hoc'...
>
>    Bene: lo script che fa questo sono riuscito a farlo, ma vigliacco se mi
> riesce di lanciarlo in automatico! (e questa e` la prima: se lo metto in
> /etc/passwd in fondo a root, esegue e poi esce e mi ritrovo daccapo)... :(

suggerimento: in fondo al tuo script ci piazzi un "exec bash", pero'
vale la pena fare un altro discorso:
e' vero che le variabili di ENVIRONMENT scompaiono alla terminazione di
un processo, pero' quando esegui un login (usando bash, ad esempio)
vengono automaticamente eseguiti alcuni scripts, tipo ".profile" o
".bashrc".  La cosa interessante e' che tali scripts NON sono eseguiti
in un processo separato, ma vengono interpretati dalla shell di login.
Questo e' importante, perche' permette di settare variabili di environment
in tali script senza che i valori vengano persi.  In particolare nella
propria ".profile" dovrebbe essere possibile cambiare directory
(con "cd" o forse direttamente con export PWD=...).

>
> (per la cronaca: il meccanismo e` questo)
>
> export MY_TTY=`ps | grep bash | tr -s ' ' '!' | cut -d! -f3`

c'e' anche il comando "who am i", che ti dice su quale terminale sei
collegato.  Puoi anche sostituire "tr -s ' ' '!' | cut -d! -f3" con
"tr -s ' ' | cut -d' ' -f3". 

>
> case "$MY_TTY" in
>    tty11)
>       ...
>       ;;
>    tty10)
>       ...
>       ;;
>    etc...
>       ;;
> esac
>
> (ne sono molto fiero, sapete com'e`... :) )
>
>    Secondo: per cambiare dir ho risolto lanciando una shell dopo il comando cd,
> ma non mi pare una soluzione particolarmente elegante...
>    
>    Terzo: per uscire da una shell come utente, basta scrivere 'logout'.
> L'effetto e` quello di cancellare lo schermo e ripristinare il prompt in modo
> che ci si accorge subito che quella console non e` attiva (tra l'altro ho nota-
> to che su Mandrake c'e addirittura un meccanismo che rifa` da capo la schermata
> iniziale di login, con tanto di Pinguino a colori... ecco, e` possibile anche
> con Debian? e se si`, come?)
>
>    Per uscire come root, invece, Debian (ma penso che la cosa sia 'standard')
> vuole a tutti i costi il comando 'exit'.
>
>    Ok, va bene, dov'e` il problema? Che un semplice script del tipo:
>
> #!/bin/sh
> clear; exit
>
>    NON FUNZIONA!

eh no, poiche' quando lanci lo script, questo viene eseguito come sottoprocesso
indipendente, e non puo' facilmente interferire con il processo chiamante...
Pero' credo esista la possibilita' di mettere comandi da eseguire al
logout in un file di nome ".logout", ma forse solo per la "tcsh".

Inoltre il tuo problema lo puoi risolvere creando un "alias" (comando da
mettere nella ".profile":

   alias logout exit

>

mp



Maggiori informazioni sulla lista Lug