• [^] # Re: vlock

    Posté par (site web personnel, Mastodon) . En réponse au message Verouiller les consoles tty* lors de la mise en veille. Évalué à 1.

    Hello!

    Alors, j'ai trouvé comment utiliser vlock pour faire ce que je voulais avec systemd et, maintenant, j'ai appris, que Debian avec systemd utilisais deux systèmes pour mettre en veille l'ordinateur :

    D'un côté, on a pm-utils qui est invoqué depuis le DE Gnome et de l'autre on a systemctl suspend qui est invoqué depuis systemd (donc avec les touches de raccourcis claviers et la fermeture d'un écran portable).

    Pour pouvoir créer mon hook, j'avais besoin de la commande writevt pour pouvoir écrire dans les tty depuis l'utilisateur root. Cette commande n'est disponible qu'avec le paquet console-utils , je l'ai donc installé et j'ai supprimé kbd car ils entrent en conflits (Debian/Sid).

    Ensuite, quand on lit la documentation de systemd-sleep, on voit que l'on doit mettre les hooks de systemd dans /usr/lib/systemd/system-sleep , mais en réalité, sous Debian/Sid actuellemnt, les hooks doivent être installés dans /lib/systemd/system-sleep (d'ailleurs ce dossier existe déjà).

    Enfin, les hooks de pm-utils doivent être installés dans /etc/pm-utils/sleep.d/ et doivent être nommé avec un nombre entre "00_" et "99_" pour indiquer l'ordre à pm-utils pour l'execution des scripts.

    Voilà mon fichier /lib/systemd/system-sleep/vlock.sh :

    #!/bin/sh
    # Action script ensure that tty are all locked just after resume
    #
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    case "${1}" in
     pre)
     case "${2}" in
     suspend|hibernate|hybrid-sleep)
     #nothing to do
     ;;
     esac
     ;;
     post)
     case "${2}" in
     suspend|hibernate|hybrid-sleep)
     for vtx in `ps -A | grep tty | grep login | perl -n -e'/tty(\d)/ && print "1ドル "'`
     do
    writevt --term=/dev/tty${vtx} -T^Zvlock^M
     done
     ;;
     esac
     ;;
    esac

    Et voilà mon fichier /etc/pm/sleep.d/01_vlock.sh :

    #!/bin/sh
    # Action script ensure that tty are all locked just after resume
    #
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    case "${1}" in
     suspend|hibernate)
     #nothing to do
     ;;
     resume|thaw)
     for vtx in `ps -A | grep tty | grep login | perl -n -e'/tty(\d)/ && print "1ドル "'`
     do
     writevt --term=/dev/tty${vtx} -T^Zvlock^M
     done
     ;;
    esac
    

    IMPORTANT :
    Le copier coller dans ce post a remplacé le caractère "Z" par ^ et Z et le caractère "M" par ^ et M, il faudra donc les remplacer à nouveau pour pouvoir les mettre dans ce fichier.

    Documentation :
    * man systemd-sleep
    * man pm-suspend