Respuestas:
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
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 la kern.log
solución y para la primera solución que podría ser útil en otros casos
Puede verificar el archivo /var/log/syslog
que se mostrará la última vez que se conectó a una red.
Ejemplo
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
Puede ejecutar un comando grep para extraer solo lo que necesita del registro
< /var/log/syslog grep DHCPREQUEST
< /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 encontrado link connected
en/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
sudo
en el primero, sin embargo, ninguno de estos está funcionando, creo que es debido a POSIXly [[:space:]]
. ¿Qué versión de awk
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 una nohup
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.
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
}
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 red
Bueno, 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)
$ 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
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
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
está instalado por defecto pero no ntpd
/ 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 usarse cron
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?