Comment puis-je vérifier de manière fiable quelle est la dernière connexion d'un ordinateur Ubuntu à Internet?

24

Comment puis-je vérifier de manière fiable quelle est la dernière connexion d'une machine Ubuntu à Internet?

Dans le cas contraire, un moyen de vérifier la dernière connexion d'une machine Ubuntu à un réseau serait suffisant.

    
posée kos 21.06.2015 - 15:47
la source

5 réponses

28

Méthode 1

Même si NetworkManager.conf autorise la journalisation, cela va apparemment toujours dans syslog. Cependant, kern.log l’a aussi.

grep 'associated' /var/log/kern.log | tail -n1                               
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated

Méthode 2

J'ai constaté que NetworkManager stockait la dernière heure de connexion et qu'il était trié dans le fichier /var/lib/NetworkManager/timestamps , au format d'époque unix (secondes depuis 1970). Le mien ressemble à ceci par exemple:

$ cat /var/lib/NetworkManager/timestamps                                       
[timestamps]
c562ac2d-8911-4273-b165-ed1495b28c9a=1432777079
46cfcdd9-d095-418f-acd6-0a7ca282bb9a=0
d81fb3d0-1717-42c0-903d-4622c2381597=1434895707
b0bdefe6-df88-49bb-83d8-154dd21d77d9=1433093286

Pour afficher la dernière entrée

date [email protected]"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"

Awk recherchera l’heure la plus longue (c’est-à-dire la plus récente) et la date la convertira en une forme lisible par l’homme.

Je soupçonne également que ce fichier ( /var/lib/NetworkManager/timestamps ) est utilisé par le menu graphique Modifier les connexions pour afficher la dernière heure de connexion

Le problème est que si vous êtes toujours connecté à un point d'accès, l'interface graphique continue d'afficher now not, l'heure à laquelle la connexion a été établie pour la dernière fois

    
réponse donnée Sergiy Kolodyazhnyy 21.06.2015 - 16:05
la source
6

Vous pouvez vérifier le fichier /var/log/syslog , il affichera la dernière fois que vous vous êtes connecté à un réseau.

Exemple

Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)

Vous pouvez exécuter une commande grep pour extraire uniquement ce dont vous avez besoin du journal

.
< /var/log/syslog grep DHCPREQUEST 
    
réponse donnée Mark Kirby 21.06.2015 - 15:59
la source
5

Vérifiez CONNECTED_GLOBAL après avoir trouvé link connected dans /var/log/syslog

/link connected/,/CONNECTED_GLOBAL/

% awk '/link connected/,/CONNECTED_GLOBAL/ {line=$0} END{print line}' /var/log/syslog
Jun 21 11:12:54 sturm NetworkManager[736]: <info> NetworkManager state is now CONNECTED_GLOBAL Jun 21 11:12:54

% awk '/link connected/,/CONNECTED_GLOBAL/ {month=$1;day=$2;time=$3} END{print month,day,time}' /var/log/syslog
Jun 21 11:12:54
    
réponse donnée A.B. 21.06.2015 - 16:16
la source
2

Si vous ne trouvez pas la "bonne" façon de procéder, vous pouvez toujours fabriquer le vôtre!

La fonction bash suivante vous dira si vous êtes en ligne (sur Internet) ou non.

Il vous suffirait d'écrire un script qui l'appelle (en boucle puis en veille) et enregistre la dernière date et l'heure dans un fichier (écrasant, si bien qu'il n'a que la dernière valeur).

Vous devez ajouter du code à la boucle pour qu'elle vérifie dès son appel initial et enregistre (donc votre état initial est défini correctement).

Ensuite, vous ne vous reconnecterez que lorsque l'état se déconnectera pour la première fois et lorsqu'il le sera pour la première fois après l'avoir été. Il est plus facile de coder que d'expliquer. ;)

La précision serait limitée par la longueur du délai (veille) que vous utiliserez dans la boucle (pour l'empêcher d'être une boucle très serrée susceptible de consommer trop de ressources système). Elle ignorait également tout ce qui se passait auparavant. il est démarré ou lorsqu'il ne fonctionne pas.

Le script lui-même pourrait être démarré (en tant que tâche en arrière-plan ( & à la fin de l'appel), éventuellement avec un nohup pour le maintenir en cours si son processus parent se termine) lorsque votre utilisateur se connecte en l'exécutant. à partir de votre fichier $ HOME / .profile, en le démarrant avec votre utilitaire de démarrage automatique du bureau (KDE ou Gnome), à partir d'un travail cron qui vérifie périodiquement s'il n'est pas déjà en cours, ou même à partir de votre système de démarrage (init / systemd / etc., si vous en savez assez pour le faire.)

Lorsque vous ne trouvez pas ce genre de chose qui fasse exactement ce que vous voulez, il n'est souvent pas trop difficile d'écrire votre propre script pour le faire et l'exécuter comme un démon en arrière-plan.

Il est préférable de l'exécuter à partir d'un compte utilisateur ordinaire si possible - à moins que vous ne le codiez dans un langage robuste tel que C ou Python - car les scripts de shell exécutés avec les privilèges root posent souvent des risques de sécurité.

Cette approche a un autre problème. Parfois, un ping expire et vous donne un faux statut hors connexion.

J'ai un script complet, offline_alert , qui fait à peu près le contraire de ce que vous souhaitez - me prévient quand je vais en mode hors connexion - mais le code peut s'avérer utile. Il a une meilleure fonction hors connexion qui tente de réduire les faux positifs des délais d'attente de ping.

function offline {
  ## Test if offline
  ## Returns 0 if online, 2 if offline
  local RC
  ping -c 1 google.com > /dev/null 2>&1
  RC=$?
  ##echo "offline returning [${RC}]"
  return $RC
}
    
réponse donnée Joe 25.06.2015 - 09:43
la source
2

Un moyen de vérifier tout journal de service / démon qui se connecte sur Internet pour fonctionner. Par exemple, mises à jour NTP (Network Time Protocol).

Voir dpkg -L ntpdate pour les crochets d'état du réseau

Bien que j'ai vérifié son journal pour le bureau Ubuntu, sa mise à jour est exécutée chaque fois que le réseau est en place et continue d'essayer après un court délai si la dernière mise à jour a échoué. Il relie ntp.ubuntu.com .

(Remarque, j'ai ajouté la première colonne dans la sortie pour mes commentaires)

$ grep -r ntpdate /var/log/syslog*

1st_trial   Jul 14 00:35:56 user-VirtualBox ntpdate[774]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 14 00:35:56 user-VirtualBox ntpdate[774]: no servers can be used, exiting
2nd_trial   Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: no servers can be used, exiting
3rd_trial   Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: no servers can be used, exiting
4th_trial   Jul 14 03:47:48 user-VirtualBox ntpdate[2917]: step time server 91.189.89.199 offset 3.458355 sec
1st_trial   Jul 14 10:23:07 user-VirtualBox ntpdate[728]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 14 10:23:07 user-VirtualBox ntpdate[728]: no servers can be used, exiting
2nd_trial   Jul 14 10:37:22 user-VirtualBox ntpdate[2099]: step time server 91.189.89.199 offset 2.021103 sec
dis-/re-con Jul 14 15:27:09 user-VirtualBox ntpdate[20174]: step time server 91.189.89.199 offset 1.677465 sec
1st_trial   Jul 14 23:55:00 user-VirtualBox ntpdate[807]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 14 23:55:00 user-VirtualBox ntpdate[807]: no servers can be used, exiting
2nd_trial   Jul 15 00:00:24 user-VirtualBox ntpdate[2041]: step time server 91.189.94.4 offset 1.619839 sec
1st_trial   Jul 15 05:39:08 user-VirtualBox ntpdate[767]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 15 05:39:08 user-VirtualBox ntpdate[767]: no servers can be used, exiting
2nd_trial   Jul 15 05:39:21 user-VirtualBox ntpdate[1088]: step time server 91.189.94.4 offset 2.897077 sec
1st_trial   Jul 15 05:49:40 user-VirtualBox ntpdate[787]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
            Jul 15 05:49:40 user-VirtualBox ntpdate[787]: no servers can be used, exiting
2nd_trial   Jul 15 05:49:50 user-VirtualBox ntpdate[1101]: adjust time server 91.189.94.4 offset 0.090520 sec
reconnect   Jul 15 05:55:50 user-VirtualBox ntpdate[2251]: adjust time server 91.189.94.4 offset 0.261432 sec
reconnect   Jul 15 06:04:53 user-VirtualBox ntpdate[2702]: step time server 91.189.94.4 offset 0.525658 sec

Je confirme qu’il est installé par défaut pour Ubuntu 14.04 LTS 64Bit desktop & éditions serveur.

Je l'ai essayé dans VM, il n'affiche que le temps auquel il se connecte ou se reconnecte (avec Internet disponible). Pas ce que vous voulez (la dernière fois que vous vous êtes connecté)

Remarque, syslog est un journal de rotation. Si vous souhaitez rechercher tous les journaux, même les plus anciens, utilisez zgrep

.
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
    
réponse donnée user.dz 12.07.2015 - 00:03
la source

Lire d'autres questions sur les étiquettes