Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Controllare lo stato di un servizio fuori da una shell [ok]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
riverdragon
Veteran
Veteran


Joined: 14 Sep 2006
Posts: 1269
Location: Verona

PostPosted: Sat Mar 01, 2008 3:38 pm    Post subject: Controllare lo stato di un servizio fuori da una shell [ok] Reply with quote

Ho pensato di aggiungere un paio di bottoni sul pannello per attivare e disattivare in modo rapido i servizi che controllano il modulo wireless e quello bluetooth.
La particolarità di ciò è che lo script invocato da tale bottone deve riconoscere lo stato del servizio per capire se voglio terminarlo o attivarlo, e agire di conseguenza.

Se lancio /etc/init.d/bluetooth status e il servizio risulta attivo ottengo un codice di uscita (visualizzabile con echo $?) pari a 0, altrimenti ottengo 1.
Perciò ho strutturato il mio script toggle_bluetooth così:
Code:
/etc/init.d/bluetooth status 1>/dev/null

if [ $? -eq 1 ]
then
   /etc/init.d/bluetooth start
else
   /etc/init.d/pmg_bluetooth start
fi
Se lancio questo script da shell funziona benissimo. Lanciandolo dal bottone sul pannello non funziona, perché il codice di uscita non viene salvato, e quindi l'if non riesce mai ad attivare uno dei due casi.

Avete qualche suggerimento su come potrei salvarlo? Vanno bene anche soluzioni totalmente alternative!

P.S. Ovviamente il bottone sul pannello invoca gksu per poter acquisire i permessi di root, ho dimenticato di specificarlo! :wink:


Last edited by riverdragon on Sat Mar 01, 2008 6:07 pm; edited 1 time in total
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Sat Mar 01, 2008 4:08 pm    Post subject: Re: Controllare lo stato di un servizio fuori da una shell Reply with quote

vedi che per un motivo che non ricordo più la via corretta di gestire lo stato d'uscita è salvarlo in una variabile.
quindi
Code:
#!/bin/bash
/etc/init.d/bluetooth status 1>/dev/null
stato=$?
if [ $stato -eq 1 ]
then
   /etc/init.d/bluetooth start
else
   /etc/init.d/pmg_bluetooth start
fi

oppure poi usare && o || o -f , ma lascio a te il piacere di scoprire come e perchè :wink:
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
riverdragon
Veteran
Veteran


Joined: 14 Sep 2006
Posts: 1269
Location: Verona

PostPosted: Sat Mar 01, 2008 5:56 pm    Post subject: Reply with quote

Non funziona. O meglio, funziona tanto quanto il mio sistema, cioè solo all'interno di una shell.

Salvare il codice in uscita in una variabile non funziona perché, come dicevo prima, una volta ritornato tale codice non esiste un ambiente che salvi temporaneamente il valore così che le righe successive possano farne uso. Ovvero: una volta terminato il comando /etc/init.d/bluetooth status il codice di uscita viene semplicemente perso.

Avevo già provato ad utilizzare && e || ma con gli stessi problemi.
Code:
/etc/init.d/bluetooth status 1>/dev/null && /etc/init.d/pmg_bluetooth start || /etc/init.d/bluetooth start
Nella shell funziona, dal bottone sul pannello no.

EDIT: L'opzione -f è quella che permette di controllare l'esistenza di un file. Potrei utilizzare questo sistema per controllare l'esistenza del file bluetoothd_address nella cartella /var/run (è l'unico creato). Per il bottone che controlla il modulo wireless potrei fare un controllo sulla presenza del modulo tra quelli attivi. Intanto grazie.

EDIT2: Ho provato a modificare il comando del bottone, cambiando gksu in gksudo. Funziona tutto, anche con il metodo vecchio. Chissà perché,
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Sat Mar 01, 2008 6:47 pm    Post subject: Reply with quote

probabilmente perchè l'errore non era dovuto alla variabile ma al fatto che lo script non girava in ambiente di root. :wink:
se lo script lo esegui in una shell la variabile esiste finchè lo script è in esecuzione... in ogni caso non mi ricordo il perchè ma gli stati di uscita si assegnano sempre ad una variabile prima di usarli con test, il perchè non lo ricordo.
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum