# script per calcolo secondi di connessione

## lucapost

Ho un bel dilembo da risolvere. 

Devo calcolare la durata di una connessione ppp attraverso uno script. 

Il problema è che la macchina su cui gira il demone ad ogni riavvio perde le impostazione dell'orologio (si resetta al 01-01-1970), il quale si sincronizza correttamente solamente successivamente all'avvio della connessione.

L'istante dal quale sarebbe corretto calcolare il tempo di connessione dovrebbe essere quello in cui l'interfaccia ppp0 riceve l'ip dal server remoto, e questo avviene ad orologio non sincronizzato. Ovviamente l'intervallo di tempo tra l'avvio del demone ppp e la ricezione dell'indirizzo ip non è mai lo stesso.

Ho verificato che ntpclient ci mette circa un minuto per sincronizzare l'orologio, ma questo tempo non è mai lo stesso. Cioè, ho l'orologio sincronizzato in un tempo che oscilla tra 30-90 secondi. 

Attualmente, per contare i secondi di connessione mi baso sul comando date +%s, il quale mi da i secondi a partire dal 1-1-1970. Quindi per conoscere gli effettivi secondi di connessione, rilancio date +%s e faccio la differenza con il risultato del primo.

Capite che se tra i due date +%s ho una sincronizzazzione dell'orologio la cosa non funziona. 

Quindi in verità il primo date +%s lo lancio 90 secondi dopo l'avvio della connessione ppp, ed alla differenza tra i due ci sommo 90 secondi. 

Questa è una stima comunque imprecisa, qualche consiglio su come risolvere?

----------

## Peach

e usare time? viene anch'esso influenzato dall'aggiustamento di orario?

----------

## cloc3

prima di ntp-client (anzi, nell'istante in cui ricevi l'ip), lanci un demone contasecondi.

dopo l'aggiustamento dell'ora, leggi lo stato del demone, determini il tempo passato e spegni il demone, di cui adesso puoi fare a meno.

----------

## Zizo

Potresti provare ad utilizzare la variabile SECONDS.

All'interno dello script imposti 

```
SECONDS="0"
```

 che verrà automaticamente incrementato di 1 ad ogni secondo.

Così per sapere il tempo trascorso dal precedente comando puoi fare un 

```
echo "${SECONDS}"
```

L'unico dubbio è vedere se la variabile dipende dall'ora di sistema, anche se non penso.

----------

## .:deadhead:.

se utilizzi openntpd al posto del vecchio ntp, hai la possibilità di far sì che la data venga subito recepita dal server contro cui ti sincronizzi, tramite l'opzione -s che setti in NTPD_OPTS sotto /etc/conf.d/ntpd

----------

## lucapost

Sia time che clock sono influenzati dall'orologio di sistema.

Ho verificato che una possibile soluzione è considerare i seguenti tempi:

T1: ricezione dell'ip

T2: istante antecedente la sincronizzazione

T3: istante successivo alla sincronizzazione

T4: tempo generico

Tempo connessione = (T2-T1)+(T4-T3).

Per ricavare T1, T2 e T3 ho inserito qualche if con break dentro ad un ciclo while true, con i relativi controlli.

E' una soluzione un pò laboriosa, ma funge. 

Se qualcuno ha un'idea migliore....

----------

