[Risolto] Aiuto script

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
Jones il suonatore
Prode Principiante
Messaggi: 91
Iscrizione: martedì 20 gennaio 2009, 14:32

[Risolto] Aiuto script

Messaggio da Jones il suonatore »

Salve a tutti. Sto tentando di scrivere un banalissimo script che faccia questo: Appena il PC di mio fratello si connette, chiuda transmission per non occupare la banda e lasciarlo navigare in santa pace. Premetto che sono completamente inesperto...

Ecco quello che ho scritto:

Codice: Seleziona tutto

#!bin/bash

IP=192.168.1.15

pidof transmission | PID=

while :; do
  ping -c 1 $IP && kill -9 $PID
done
Molto semplice ma non funziona...
Il problema è in "pidof transmission | PID="
Immagino che non è così che si assegni il PID di un programma a una variabile. Ho anche provato qualcosa come:
pidof transmission >> pid.txt
PID=pid.txt
Ma nemmeno funziona, avete per caso voi la soluzione?
Ultima modifica di Jones il suonatore il sabato 6 novembre 2010, 13:05, modificato 1 volta in totale.
To Cooney Potter a pillar of dust
Or whirling leaves meant ruinous drouth.
They looked to me like Red-Head Sammy
Stepping it off, to "Toor-a-Loor."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Aiuto script

Messaggio da Zoff »

Codice: Seleziona tutto

PID=`pidof transmission`
Metti una sleep in quel ciclo altrimenti sprechi solo della CPU.

Fai qualcosa di questo tipo:

Codice: Seleziona tutto

#!bin/bash

IP="192.168.1.15"
PID=`pidof transmission`

while true; do
  ping -c 1 $IP && kill -9 $PID
  sleep 5
done
Ultima modifica di Zoff il sabato 6 novembre 2010, 3:13, modificato 1 volta in totale.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Jones il suonatore
Prode Principiante
Messaggi: 91
Iscrizione: martedì 20 gennaio 2009, 14:32

Re: Aiuto script

Messaggio da Jones il suonatore »

Grazie mille funziona perfettamente! E grazie anche per il consiglio di mettere lo sleep :)

Metto RISOLTO.
To Cooney Potter a pillar of dust
Or whirling leaves meant ruinous drouth.
They looked to me like Red-Head Sammy
Stepping it off, to "Toor-a-Loor."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Risolto] Aiuto script

Messaggio da Zoff »

Per ottimizzare lo script potresti invocare la kill solo se trovi un PID (se non c'è nessun transmission avviato nons erve terminarlo) e potresti anceh sfruttare los tesso script per riavviare transmission quando il pc di tuo fratello viene spento.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Risolto] Aiuto script

Messaggio da Zoff »

Il mio suggerimento si tradurrebbe in:

Codice: Seleziona tutto

#!bin/bash

IP="192.168.1.15"

while true; do
    PID=`pidof transmission`
    ping -c 1 $IP
    if [ $? -eq 0 ]; then #Se il PC di tuo fratello è acceso
        if [ ! -z $PID ]; then #Se c'è transmission attivo
            killall transmission #Termina tutte le istanze di transmission
        fi
    elif [ -z $PID ] #Se il PC di tuo fratello è spento e transmission NON è attivo
        nohup transmission & #Avvia transmission
    fi
    sleep 5 #Aspetta 5 secondi
done
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: [Risolto] Aiuto script

Messaggio da takeshi »

Perché chiudere transmission quando è possibile castrarlo con transmission-remote?

Qualcosa del genere:

Codice: Seleziona tutto

if c'è mio fratello; then
    transmission-remote -d 10 -u 10; # massimo 10KiB/s in entrata/uscita
else
   transmission-remote -U -D; # upload/download illimitati (anche se con una xDSL sarebbe meglio limitare la banda in uscita)
fi
Raising Elephants Is So Utterly Boring
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Risolto] Aiuto script

Messaggio da Zoff »

anche questo è vero.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Jones il suonatore
Prode Principiante
Messaggi: 91
Iscrizione: martedì 20 gennaio 2009, 14:32

Re: [Risolto] Aiuto script

Messaggio da Jones il suonatore »

Zoff ha scritto: Il mio suggerimento si tradurrebbe in:

Codice: Seleziona tutto

#!bin/bash

IP="192.168.1.15"

while true; do
    PID=`pidof transmission`
    ping -c 1 $IP
    if [ $? -eq 0 ]; then #Se il PC di tuo fratello è acceso
        if [ ! -z $PID ]; then #Se c'è transmission attivo
            killall transmission #Termina tutte le istanze di transmission
        fi
    elif [ -z $PID ] #Se il PC di tuo fratello è spento e transmission NON è attivo
        nohup transmission & #Avvia transmission
    fi
    sleep 5 #Aspetta 5 secondi
done
Interessante! Cortesemente potresti anche spiegarmi meglio il funzionamento? Ad esempio:
if [ $? -eq 0 ]
Cosa indica il punto interrogativo e le opzioni -e -q?
elif è else if giusto?

Ancora meglio, puoi consigliarmi una lettura (italiano/inglese) dove posso imparare meglio il linguaggio della bash?
takeshi ha scritto: Perché chiudere transmission quando è possibile castrarlo con transmission-remote?

Qualcosa del genere:

Codice: Seleziona tutto

if c'è mio fratello; then
    transmission-remote -d 10 -u 10; # massimo 10KiB/s in entrata/uscita
else
   transmission-remote -U -D; # upload/download illimitati (anche se con una xDSL sarebbe meglio limitare la banda in uscita)
fi
No, la mia rete fa moooolto schifo, quinfi anche con massimo 5 KB/s in entrata e in uscita la sua connessione va lenta, ci troviamo in un paesino sperduto e meglio di questo non possiamo avere...
To Cooney Potter a pillar of dust
Or whirling leaves meant ruinous drouth.
They looked to me like Red-Head Sammy
Stepping it off, to "Toor-a-Loor."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Risolto] Aiuto script

Messaggio da Zoff »

Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Jones il suonatore
Prode Principiante
Messaggi: 91
Iscrizione: martedì 20 gennaio 2009, 14:32

Re: [Risolto] Aiuto script

Messaggio da Jones il suonatore »

Ti ringrazio  :D
To Cooney Potter a pillar of dust
Or whirling leaves meant ruinous drouth.
They looked to me like Red-Head Sammy
Stepping it off, to "Toor-a-Loor."
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti