Los siguientes comandos compararán la fecha proporcionada por el comando openssl con la fecha "dentro de 7 días"; si la fecha de openssl (en segundos desde la época )es menos de 7 días a partir de ahora (en segundos desde la época ), el comando if
tendrá éxito y puede hacer lo que necesita hacer:
response="$(openssl x509 -enddate -noout -in ~/letsencrypt/www.mydomain.com/cert.pem)"
responsetime=${response##notAfter=}
responsetz={$responsetime##* }
if [ $(date -d "$responsetime" +%s) -lt $(TZ=$responsetz date -d "now + 7 days" +%s) ]
then
## do the needful
fi
La primera asignación (después de obtener la $respuesta )elimina el texto inicial "notAfter=". La segunda asignación captura la zona horaria de la respuesta; esto podría simplificarse si siempre es GMT.
Los dos comandos de fecha preguntan (GNU )date por el tiempo en segundos desde la época para la fecha de openssl y por "ahora + 7 días", teniendo cuidado de configurar la zona horaria para la segunda llamada a la zona horaria informado por el comando openssl.
@terdon, su solución no funciona, pero gracias por ayudarme, he aprendido más; al principio también estoy sospechando si tiene algo que ver con Gnome, pero resultó que solo es X11. Y @TimBrandrick, su solución debería funcionar en la mayoría de los casos, pero en mi caso, no antes de agregar mi diseño de teclado en.../X11/xkb/rules/evdev.xml
(y por si acaso, .../X11/xkb/rules/evdev.lst
, porque según algunas fuentes, el archivo lst
es la versión compilada de xml
, pero dudo que todos los procesos que dependen de estos archivos solo lean archivos xml
; así que agrego ambos. En realidad, xml
tiene más información que lst
, pero lst
es más fácil de entender.)
Así es como lo hice:
.../X11/xkb/rules/evdev.xml
. (Omito la parte inicial, porque difiere entre distribuciones. En CentOS 7, está bajo /usr/share/
; en Ubuntu <= 8.08, está bajo /etc/
. 1 Extraño.)
<layoutList>
, agregue esta parte:(cambie según lo necesite, es solo una plantilla)
<layout>
<configItem>
<name>symmetri</name>
<shortDescription>symmetri</shortDescription>
<description>Symmetri (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>non-prog</name>
<shortDescription>non-prog</shortDescription>
<description>Symmetri for non-programmer (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
</variant>
</variantList>
</layout>
Si la disposición de su teclado no tiene variante, <variantList>
la parte puede cerrarse automáticamente -, como:<variantList />
.
La nota:iso639Id
debe tener un valor compatible con la norma ISO 639 -1 o 639 -2. 1 La tabla completa también se proporciona en la referencia 1. Y debe ajustarse a la configuración local. Configuré English(U.S)
como el idioma de mi sistema, así que llené us
aquí.
.../X11/xkb/rules/evdev.lst
. ! layout
, agregue el nombre de su diseño. Me gusta:symmetri Symmetri layout (CN, EN and ES)
! variant
, agréguela también. non-prog symmetri: non-programmer
El nombre de la variante debe coincidir con la información anterior en el archivo xml. (Mientras pruebo, localectl list-x11-keymap-variants
solo leerá este archivo en lugar de leer el xml, debería ser un error/error.)
base.xml
y base.lst
, pero yo lo hice primero y no funciona. setxkbmap symmetri
o, para configurar la variante, use:
setxkbmap symmetri -variant non-prog
localectl
puede list-x11-keymap-layouts
y list-x11-keymap-variants
, pero no puede establecer una variante con él; sólo setxkbmap
puede.
Con esta configuración, ahora después de reiniciar y antes de iniciar sesión por primera vez , tiene su nuevo diseño de teclado(¡aunque la variante no persistirá! ¡Solo el diseño básico lo hará!)Pero, una vez que inicie sesión con éxito, el administrador de escritorio se hará cargo, y si no configura la nueva distribución del teclado en $HOME/.bashrc
/$HOME/.profile
(para un solo usuario )/ /etc/profile.d/xxx.sh
//etc/profile
(para todos los usuarios ), usted no obtendrá su nuevo diseño de teclado una vez que cierre sesión y vuelva a iniciar sesión. Por lo tanto, estos cambios solo persistirán antes del primer inicio de sesión exitoso... debe usar .bashrc
o scripts de perfil para decirle al servidor X :"no solo antes de iniciar sesión, sino también después de iniciar sesión. Lo quiero para ¡todos los usuarios!" Cuidado :con este cambio, incluso si cierra sesión y cambia de usuario, el diseño será el modificado, no qwerty(us)
.
Realmente frustrante... debe haber una manera más fácil, pero no puedo encontrarla.
Referencias :(una lectura obligada)
puedes usar
localectl set-x11-keymap ***
Esto será permanente para la consola y el escritorio, se puede encontrar una configuración más detallada en la página del manualhttps://www.unix.com/man-page/centos/1/LOCALECTL/