[Linuxtrent] Re: script con su

  • From: Matteo Ianeselli <matteo.ianeselli@xxxxxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 3 Apr 2003 12:23:55 +0200

Usando la tastiera di fsendmail, uno sconosciuto ha scritto:

 > diventa root ma tutti i comandi da "echo inizio" in giù non vengono
 > eseguiti?come si potrebbe fare per farli eseguire?

Perche` su avvia una shell annidata dentro quella che ha eseguito su,
e l'esecuzione dello script viene giustamente sospesa finche` essa non
termina (come qualsiasi altro comando).

Forse una cosa del genere fa quello che ti aspetti:

    #!/bin/sh
    
    if [ "$(id -u)" -ne 0 ]; then
       echo "Devi essere root per eseguire questo script!"
       exec /bin/su "$0" "$@"
    fi
    
    ...
    ...
    ...

In breve: se non sei root, ti avverte, e poi fa si` che lo script (il
cui nome e` "$0") venga ri-eseguito da su con tutti i parametri ("$@").

Il valore di "$0" non e` affidabile al 100% per individuare il nome
dello script eseguito, e dunque non e` il miglior sistema di questo
mondo, ma in genere funziona. Viene usato spesso per avviare gli
script Tcl, ad esempio [1]



[1] Tipicamente:

    #!/bin/sh
    # next line starts tclsh \
    exec tclsh "$0" "$@"
    ...
    <script Tcl>
-- 
 |   \    \  | ___|_  |_  | matteo.ianeselli AT telecomitalia.it
 |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
_|_/  _\_|  _|____|___|___| http://www.linuxtrent.it

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: