Newsgroup: it.comp.os.linux.iniziare
Titolo: shell, login e comandi

Ciao,
 
ho aggiunto in fondo a /etc/profile un comando che vorrei venisse 
eseguito al login sulla macchina (scheda embedded, Angstrom, unico 
utente root).
 
Funzina, ma come ï¿œ ovvio ogni volta che effettuo un login (anche tramite 
ssh) quel comando viene eseguito. E questo non va bene.
 
La via migliore ï¿œ creare uno script di avvio che faccia solo quello 
oppure c'ï¿œ una strada piï¿œ rapida?
 
 
Grazie
Marco

 oppure c'è una strada più rapida?
 
Puoi metterlo nel file /etc/rc.local, o simile se non hai la Debian.
 
-- 
Tanti saluti
 

 Puoi metterlo nel file /etc/rc.local, o simile se non hai la Debian.
 
Però non verrebbe eseguito al login ma all'avvio.

Addi' 30 lug 2012, Andrea D'Amore scrive:

Ah... non avevo capito, allora non lo so. Io per me lo farei 
artigianalmente con qualcosa come questo.
 
1) in /etc/rc.local:
touch /tmp/YESNO
 
2) in /etc/profile:
if [ -s /tmp/YESNO ]; then
echo pippo > /dev/null
else
quello che doveva fare
echo pippo > /tmp/YESNO
fi
 
-- 
Tanti saluti
 

Addi' 30 lug 2012, Yoda scrive:

Che poi basta solo il 2 in /etc/profile, cosi':
 
if [ -f /tmp/YESNO ]; then
echo pippo > /dev/null
else
quello che doveva fare
touch /tmp/YESNO
fi
 
-- 
Tanti saluti
 

 artigianalmente con qualcosa come questo.
 
 
ulp! Speravo che esistesse un file apposito che venisse eseguito solo al 
primo login.
 
Vabbè, poco male, proverò la soluzione da te suggerita.
 
Ciao e grazie
Marco
 
 

 oppure c'è una strada più rapida?
 
Tu vuoi qualcosa che venga eseguito al *primo* login e basta, quindi 
devi farti uno script apposito.
 
Che poi, banalmente, si tratta di impostare un file di flag.
 
Io farei: in /etc/rc.local:
 
rm -f /var/run/mioflag
 
in /etc/profile (o /root/.bash_profile, se deve riguardare i soli login 
di root):
 
if ![ -e /var/run/mioflag ]; then
	...mie istruzioni da lanciare la prima volta
	touch /var/run/mioflag
fi
 
 
A questo punto, il sistema all'avvio pulisce comunque il flag residuo, 
nel caso fosse presente dalla sessione precedente.
Nel momento in cui fai login, verifica se il file esiste.
Se non esiste, deduce che è il *primo* login, ed esegue le istruzioni da 
fare la prima volta, dopodiché crea il file di flag.
 
Ai login successivi, troverà già esistente il file di flag, e non 
eseguirà la parte di codice relativa alle istruzioni da lanciare al 
primo login.
 
Allo spegnimento della macchina, dovesse anche restare il flag, non 
sarebbe un problema, perché all'avvio successivo la prima cosa che fa il 
sistema è pulirlo.
 
-- 
Massimo Bacilieri AKA Crononauta

 sistema ï¿œ pulirlo.
 
Sarï¿œ forse deformazione professionale, ma io lo farei al contrario. Una
flag impostata normalmente indica la necessitï¿œ di fare qualcosa, quindi
mi pare piï¿œ logico agire in presenza della flag, non in sua assenza.
Quindi creare la flag da init e rimuoverla da script in esecuzione.
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 Io farei: in /etc/rc.local:
 
 
[cut]
 
Chiarissimo grazie. Mi ero fatto l'idea esistesse un file che venisse 
eseguito solo la prima volta ma mi sbagliavo.
Il tuo sistema è comunque semplice e funzionale.
 
Accodo un'altra richiesta per comprendere a fondo questa cosa. Facciamo 
quest'altro esempio. Per evitare che il monitor vada in standby devo 
lanciare il comando:
 
setterm -powersave off -blank 0
 
Quindi mi va bene che venga eseguito solo al primo login ma dovrebbe 
essere eseguito solo se il primo login viene effettuato in locale. 
Perché se l'accesso fosse tramite ssh il comando non andrebbe a buon fine.
 
C'è modo di sapere questa cosa in modo da gestirla sempre tramite il 
flag? Metterei cioè in AND la presenza/assenza del file e il fatto che 
il login sia in locale.
Ho provato a cercare ma probabilmente non ho usato le parole giuste e 
non ho trovato la risposta.
 
Grazie ancora
Marco
 
 


Facebook: Massimo Bacilieri

 E il gioco ï¿œ fatto.
 
 
Ok, il concetto ï¿œ chiaro. Un po' macchinoso ma logico.
Grazie mille!
 
Marco