Как я могу установить раскладку клавиатуры для экрана входа в систему перед первым успешным входом в систему в CentOS 7?

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 iftendrá é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.

1
05.06.2018, 11:43
2 ответа

@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 lstes 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, xmltiene más información que lst, pero lstes más fácil de entender.)

Así es como lo hice:

1. Abrir .../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.)

2. Al final de los nodos secundarios de <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:iso639Iddebe 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é usaquí.

3. Guárdelo y abra .../X11/xkb/rules/evdev.lst.

4. Al final de ! layout, agregue el nombre de su diseño. Me gusta:

symmetri        Symmetri layout (CN, EN and ES)

5. Si la distribución de su teclado tiene una variante, al final de ! 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-variantssolo leerá este archivo en lugar de leer el xml, debería ser un error/error.)

6. Puedes hacer lo mismo con base.xmly base.lst, pero yo lo hice primero y no funciona.

7.Configure la distribución de su teclado con:

setxkbmap symmetri

o, para configurar la variante, use:

setxkbmap symmetri -variant non-prog 

localectlpuede list-x11-keymap-layoutsy list-x11-keymap-variants, pero no puede establecer una variante con él; sólo setxkbmappuede.

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 .bashrco 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)

  1. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
0
28.04.2021, 23:46

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/

3
28.04.2021, 23:46

Теги

Похожие вопросы