Salve,tempo fa mi serviva una cosa del genere è cercando trovai uno script in python con comando ping. una volta lanciato e il ping non va a buon fine non fa nulla però resta in ascolto, poi appena il ping va buon fine fa qualcosa cioè parte un comando e poi si chiude non resta più in ascolto.adesso a me servirebbe lo stesso script però che fa qualcosa se il ping non va a buon fine e poi si deve chiudere cioè l'opposto. posto lo script:

#! /usr/bin/env python

comando = 'comando'

import urllib
import subprocess
import time
while True:
try:
    fh = urllib.urlopen('http://www.google.it')
    if len(fh.read(1024)) > 0: break
except:
    pass
time.sleep(2)
subprocess.Popen(comando, shell=True)

ho provato a modificarlo :( sostituendo True con False ma non cambia nulla :(

Saluti

chiesto 16 Mar, 10:59

Davide_74's gravatar image

Davide_74
547174965

modificato 16 Mar, 11:01


Ho risolto modificando così il tuo codice:

#! /usr/bin/env python

comando = 'comando'
stato = 1

import urllib
import subprocess
import time

while stato:
    try:
        fh = urllib.urlopen('http://www.google.it')
        stato = 1
    except:
        stato = 0

time.sleep(2)
subprocess.Popen(comando, shell=True)
coll. permanente

ha risposto 18 Mar, 14:25

cialu's gravatar image

cialu
721722

Funziona :) Gracias Saluti

(19 Mar, 08:52) Davide_74 Davide_74's gravatar image

La condizione che determina cosa fa lo script è la seguente:

if len(fh.read(1024)) > 0: break

In questo caso, se il ping va a buon fine, esegue il break, esce dal ciclo e va ad eseguire il comando:

subprocess.Popen(comando, shell=True)

Non conosco molto Python e le sue librerie, ma per effettuare l'opposto devi sicuramente cambiare la condizione, a esempio:

if len(fh.read(1024)) == 0: break

Così facendo, il break dovrebbe venir eseguito se il ping da esito negativo.

coll. permanente

ha risposto 17 Mar, 10:31

cialu's gravatar image

cialu
721722

modificato 18 Mar, 13:56

Grazie per la risposta,quindi basta sostituire > con = ho provato ma non accade nulla :(

[edit] potrei accontentarmi anche con qualcosa in "bash" però a me serve che resta in ascolto fin quando il ping non da esito negativo e poi dopo si deve chiudere

(18 Mar, 13:18) Davide_74 Davide_74's gravatar image

Scusa, ho fatto un errore di battitura. L'operatore di comparazione è == e non soltanto =. Ho provveduto a testare il tutto, ma non funziona.

(18 Mar, 14:22) cialu cialu's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×23

domanda posta: 16 Mar, 10:59

domanda visualizzata: 201 volte

ultimo aggiornamento: 19 Mar, 08:52

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.