Método 1
A pesar de que NetworkManager.conf permite el registro, aparentemente todavía entra en syslog. Sin embargo, kern.log también lo tiene.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Método 2
Descubrí que NetworkManager almacena el último tiempo de conexión, y está ordenado en /var/lib/NetworkManager/timestamps
archivo, en el formato de tiempo de época de Unix (segundos desde 1970). El mío se ve así, por ejemplo:
$ 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
Para mostrar la última entrada
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk buscará el mayor tiempo de época (en otras palabras, el más reciente), y la fecha lo convertirá a una forma legible para humanos.
Sospecho también que este archivo ( /var/lib/NetworkManager/timestamps
) es utilizado por el menú gráfico Editar conexiones para mostrar la última vez de conexión
El problema es que si todavía está conectado a un punto de acceso, la forma de la GUI sigue mostrando que now
no, la hora en que se estableció la conexión por última vez
Sergiy Kolodyazhnyy
fuente
man NetworkManager.conf
, el archivo es/etc/NetworkManager/NetworkManager.conf
; esto funcionará solo después de haber habilitado el inicio de sesión en el demonio, pero desafortunadamente necesito verificar esto luego, suponiendo que la máquina no haya sido configurada para esto. De todos modos +1 para lakern.log
solución y para la primera solución que podría ser útil en otros casosPuede verificar el archivo
/var/log/syslog
que se mostrará la última vez que se conectó a una red.Ejemplo
Puede ejecutar un comando grep para extraer solo lo que necesita del registro
fuente
< /var/apt/syslog grep DHCPREQUEST
variaciones.DHCPREQUEST
No es confiable. Estoy en línea desde la tarde y desde que tuve muchas solicitudes de DHCP.Compruebe
CONNECTED_GLOBAL
después de haber encontradolink connected
en/var/log/syslog
/link connected/,/CONNECTED_GLOBAL/
fuente
sudo
en el primero, sin embargo, ninguno de estos está funcionando, creo que es debido a POSIXly[[:space:]]
. ¿Qué versión deawk
estás ejecutando?sudo
eliminado. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)%
;) Si hay una salida en la línea de abajo%
. ¡Todo menos esto es perfecto!Si no encuentra la forma "correcta" de hacer esto, ¡siempre puede fabricar la suya!
La siguiente función bash le dirá si está conectado (a Internet) o no.
Simplemente tendría que escribir un script que lo llame (en un bucle y luego duerma) y registre la última fecha y hora en un archivo (sobrescribiendo, por lo que solo tiene el último valor).
Tendría que agregar código al bucle para que verifique tan pronto como se llame inicialmente y registre (para que su estado inicial esté configurado correctamente).
Después de eso, solo volvería a iniciar sesión cuando el estado se desconecte por primera vez y cuando se vuelva a conectar después de desconectarse. Es más fácil codificar que explicar. ;)
Esto tendría una precisión limitada por la cantidad de retraso (suspensión) que use en el ciclo (para evitar que sea un ciclo muy ajustado que pueda consumir demasiados recursos del sistema). Tampoco sería consciente de lo que suceda antes de que comience o cuando no se está ejecutando.
El script en sí podría iniciarse (como un trabajo
&
en segundo plano ( al final de la invocación), posiblemente con unanohup
para mantenerlo ejecutándose si su proceso padre finaliza) cuando su usuario inicie sesión ejecutándolo desde su archivo $ HOME / .profile, comenzando con su utilidad de inicio automático de escritorio (KDE o Gnome), desde un trabajo cron que verifica periódicamente para ver si aún no se está ejecutando, o incluso desde cualquier sistema de inicio que tenga (init / systemd / etc., si sabe lo suficiente para hacerlo ese.)Cuando no puede encontrar algo como esto que hace exactamente lo que desea, a menudo no es demasiado difícil escribir su propio script para ejecutarlo y ejecutarlo como un demonio en segundo plano.
Es posible ejecutarlo desde una cuenta de usuario normal si es posible, a menos que lo codifique en un lenguaje robusto como C o Python, porque los scripts de shell que se ejecutan con privilegios de root a menudo plantean riesgos de seguridad.
Este enfoque tiene otro problema. A veces, un ping expirará dándole un falso estado fuera de línea.
Tengo un script completo, offline_alert , que prácticamente hace lo contrario de lo que quieres, me avisa cuando me desconecto, pero el código puede resultar útil. Tiene una mejor función fuera de línea que intenta reducir los falsos positivos de los tiempos de espera de ping.
fuente
Una forma de verificar cualquier servicio / registro de daemon que se retransmita en Internet para que funcione. Por ejemplo, actualizaciones de NTP (Protocolo de tiempo de red).
Consulte
dpkg -L ntpdate
los ganchos de estado de redBueno, como he comprobado su registro para el escritorio de Ubuntu, su actualización se ejecuta cada vez que se conecta a la red y sigo intentando después de un breve retraso si falla la última actualización. Se conecta
ntp.ubuntu.com
.(Nota, agregué la primera columna en la salida para mis comentarios)
Confirmo que está instalado de forma predeterminada para las ediciones de escritorio y servidor Ubuntu 14.04 LTS 64Bit.
Lo probé en VM, muestra solo el tiempo que se conecta o se vuelve a conectar (con Internet disponible). No es lo que quieres (la última vez que estuviste conectado)
Tenga en cuenta que syslog es un registro de rotación, si desea buscar todos los registros, incluso los comprimidos antiguos, use
zgrep
fuente
ntpdate
está instalado por defecto pero nontpd
/openntpd
daemon / service que viene en paquetes separados. Para verificar que cambie su hora y fecha a una incorrecta, desconecte y vuelva a conectar.ntpdate
podría usarsecron
para actualizar el tiempo periódicamente, tendrá los mismos resultados que ejecutar un servicio (ntpd / openntpd). Pero está buscando una configuración predeterminada y sin ajustes adicionales, ¿verdad?