Repository 32bit  Forum
Repository 64bit  Wiki

Problema con uno script bash

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Problema con uno script bash

Messaggioda scartozzo » dom set 26, 2010 23:05

Ho script bash che installa un programma. Accedo con un altro utente e lo eseguo.
Codice: Seleziona tutto
su utente

Codice: Seleziona tutto
sh script

Alla fine dell'esecuzione dello script vorrei anche fare in modo che il controllo ritorni al prmo utente con il quale mi sono loggato.
Mi spiego: da linea di comando risolvo in un attimo con
Codice: Seleziona tutto
exit

D'altronde inserendo alla fine dello script exit, questo non sortisce l'effetto voluto.
Come posso risolvere?
Grazie
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Bash scripting

Messaggioda hashbang » dom set 26, 2010 23:25

beh alla fine dello script puoi mettere un
Codice: Seleziona tutto
if [ `whoami` = root ]; then
    su - <tuo_nome_utente>
fi
There's a certain kind of programmer who'll look at any problem and say, 'I know, I will use XML.' Now he has two problems.
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1843
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Problema con uno script bash

Messaggioda scartozzo » dom set 26, 2010 23:29

Ti ringrazio per il suggerimento.
Devo restituire il controllo all'utente root ed il comando su all'interno delle script non mi funziona
Ultima modifica di scartozzo il dom set 26, 2010 23:34, modificato 1 volta in totale.
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda scartozzo » dom set 26, 2010 23:33

Ho fatto il contrario e funziona.
Ora mi rimane una questione: come mai il comando su funziona all'interno di un if e non da solo?

Comunque grazie.
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda hashbang » dom set 26, 2010 23:35

in che senso hai fatto il contrario? :-k quale su hai messo sotto condizione? il primo, per diventare root, o il secondo, per tornare utente normale?
There's a certain kind of programmer who'll look at any problem and say, 'I know, I will use XML.' Now he has two problems.
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1843
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Problema con uno script bash

Messaggioda scartozzo » dom set 26, 2010 23:36

Codice: Seleziona tutto
if [ `whoami` = utente ]; then
    su -
fi
ed ho passato il controllo a root
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda hashbang » dom set 26, 2010 23:39

Però poi il resto dello script non esce. o sbaglio?

Comunque ecco un mini script. Dovrebbe essere questo ciò che vuoi realizzare giusto?
Parti con un su e poi pluto.sh
Codice: Seleziona tutto
#!/bin/sh

echo "CIAO"
echo "QUESTA È"
echo "UNA PROVA"

if [ `whoami` = root ]; then
    su - pippo
fi
There's a certain kind of programmer who'll look at any problem and say, 'I know, I will use XML.' Now he has two problems.
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1843
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Problema con uno script bash

Messaggioda hashbang » dom set 26, 2010 23:41

scartozzo ha scritto:if [ `whoami` = utente ]; then
su -
fi
ed ho passato il controllo a root
meglio mettere
Codice: Seleziona tutto
if [ `whoami` != root ]; then
  su -
fi
In questo modo metti in condizione che qualsiasi utente non-root debba passare per su -
There's a certain kind of programmer who'll look at any problem and say, 'I know, I will use XML.' Now he has two problems.
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1843
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Problema con uno script bash

Messaggioda scartozzo » dom set 26, 2010 23:42

Alla fine dello script vorrei che lo script si concludesse e che il controllo passasse dall'utente che ho utilizzato all'utente root.
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda hashbang » dom set 26, 2010 23:49

Ah ecco...avevo capito l'opposto. Ma c'è comunque il problema che se fai partire lo script con un su - tutto ciò che c'è dopo non si vede :-k o lo fai partire da root o non saprei...
There's a certain kind of programmer who'll look at any problem and say, 'I know, I will use XML.' Now he has two problems.
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1843
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Problema con uno script bash

Messaggioda scartozzo » lun set 27, 2010 0:01

La prosecuzione della compilazione avviene con un altro script lanciato dall'utente root. Comunque rimane il problema che lo script precedente non termina.
Mi spiego meglio. Ho enne script che vengono lanciati da un'altro script. Una parte devono essere eseguiti dall'utente pippo, che poi non serve più, e la seconda parte dall'utente root.
Rimane comunque appeso l'ultimo script (che passa il controllo a root)
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda scartozzo » lun set 27, 2010 0:05

Richiamo il comando su con uno script a parte ed ho risolto

Grazie
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda hashbang » lun set 27, 2010 0:12

Aspetta che forse ho una soluzione, ma prima devo chiarire un'ultima cosa. Per appeso intendi quello che ti dissi prima a proposito del passaggio a root? (non si vede l'output).
Perchè se così fosse potresti mettere l'exec dei vari script in su -c
There's a certain kind of programmer who'll look at any problem and say, 'I know, I will use XML.' Now he has two problems.
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1843
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Problema con uno script bash

Messaggioda scartozzo » lun set 27, 2010 0:22

Mi loggo al sistema come flavio, poi lancio un su (e divento root), successivamente rilancio su per l'utente pippo e poi ridivento root con il suggerimento che mi hai passato. Mi sembrava molto macchinoso comunque funziona.
Vedo tranquillamente l'output.
Tieni da conto che non sono espertissimo in bash scripting.
Non so cosa voglia dire "mettere l'exec dei vari script in su -c".
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Problema con uno script bash

Messaggioda targzeta » lun set 27, 2010 4:07

L'opzione '-c' del comando 'su' ti permette di eseguire solo un comando come un utente diverso. Questo dovrebbe essere proprio quello che cerchi tu. Ad esempio (#=root):
Codice: Seleziona tutto
#> ls ~
file_di_root

#> su spina -c 'ls ~'; ls ~
file_di_spina
file_di_root
Come vedi, il primo comando ('ls ~') viene eseguito nella home directory dell'utente root, che contiene il solo file 'file_di_root'. Il secondo comando esegue 'ls ~' come utente 'spina' e subito dopo di nuovo il comando 'ls ~' come utente root, quindi fa un 'ls' sia nella home directory di spina (file_di_spina) che nella home di root (file_di_root).

Morale della favola, se vuoi eseguire solo un insieme di comandi come un determinato utente e non vuoi 'diventare' quell'utente, il parametro '-c' del comando 'su' è quello che fa per te. Per maggiori info:
Codice: Seleziona tutto
$> man su

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6204
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Google [Bot] e 1 ospite