Ping da drupal

9 contenuti / 0 new
Ultimo contenuto
Ping da drupal

Salve a tutti,
mi sto affacciando da pochissimo a php e sicuramente qualche buon consiglio potrebbe essere utile :)
Allora, sto cercando di realizzare un portale, tramite drupal, a cui si registrano dei dispositivi wireless.
Invece di gestirli come utenti ho creato un nuovo tipo di contenuto "Device" con cck, e i contenuti di questo nuovo tipo vengono creati automaticamente tramite node import prendendo i dati da un file csv.
Quello che mi servirebbe adesso è eseguire un ping sull'ip del dispositivo (che è tra i valori che vengono importati nel nuovo contenuto) e in caso di risposta o meno, visualizzare qualcosa tipo "Attivo" o "Non Attivo".
Cercando tra i vari moduli non ho trovato niente. Secondo voi si potrebbe fare modificando il modulo ping di drupal? oppure creando un nuovo field di cck ad hoc? (mi viene paura solo a parlarne di scrivere da 0 un modulo per cck :):))

Grazie mille

ciao
premetto di non aver mai fatto "manovre" simili con drupal, comunque mi chiedevo, in quale momento vuoi fare il ping?

cioè, quale evento deve generare il ping? io penserei ad una soluzione in php (esistono funzioni per il ping) con un piccolo script che si esegue ad un determinato evento, senza creare un modulo apposito..
bisognerebbe capire solamente in quale momento attivare lo script e poi come utilizzare il risultato.. in linea di massima :D
Marco

Grazie per la risposta intanto :)
Praticamente quando si accede alla view che visualizza tutti i contenuti device (formattata a tabella), dovrebbe esserci di fianco a ogni riga il risultato del ping "attivo" o "non attivo". Io pensavo di fare il check del ping ogni volta che si esegue il cron.php. Potrebbe andare bene come trigger.

Se l'altro server risponde a chiamate HTTP, puoi usare drupal_http_request e controllare la risposta.

No, si tratta di dispositivi mobile, non sono server.
Scaricano sul server del sito un file csv che contiene "nome device", "ip" e "mac address".

Forse meglio una soluzione asincrono:

  1. Carica questi valori in una tabella Drupal - campi CCK
  2. Fai girare un daemone che legge i dati, manda il ping, ed aggiorna il DB
  3. Visualizza gli risultati del DB aggiornati tramite Drupal

(Anche se Drupal ha un modulo 'ping', non è quel tipo di ping)
Così eviti a scrivere un modulo, ed eviti il problema timeout se devi pingare tanti dispositivi (che impiegano molto tempo a 'fallire')

HTH

John

Più imparo, più dubito.

La soluzione di John è interessante!
Correggetemi se sbaglio:
- Scrivo uno script php che preleva i dati dalla colonna "field_ip_value" della tabella in cui si trovano i dati
- esegue un ping per ogni riga e scrive i risultati su un file
- con node import importo i risultati in un campo cck apposito
- oppure come dice john, aggiornare il db direttamente.
L'unico dubbio mio è (scusate se faccio domande stupide ma sono ancora un pò in erba):
posso fare una verifica sul db del tipo "se $IP è uguale a field_ip_value allora aggiorna il campo ping_value con il dato X"?

Se devi fare domande del genere (alla quale la risposta è si), credo che avrai delle difficoltà nel creare il tuo script. Forse conviene chiedere aiuto professionale? Penso che per un programmatore, un script del genere (con una buona specifica) non costerà più di due giorni di lavoro, più uno per il collaudo...

Più imparo, più dubito.

Eh ma così sarebbe troppo facile :)
Preferisco sbatterci un pò la testa ma riuscire a farlo da solo.
Vi ringrazio intanto per gli utili consigli, vi farò sapere eventuali sviluppi!