• Apropos el cron d'usuari ...

    From =?UTF-8?Q?Llu=C3=ADs_Gras?=@21:1/5 to All on Mon Feb 13 15:30:01 2023
    Bones,

    Ja fa temps que a l'escola on em guanyo les garrofes com a profe multiusos, vaig optar per virtualitzar els quatre equips Windows 10 que s'hi
    utilitzen, de manera que vaig confeccionar un parell de guions, l'un amb
    Bash + Yad per programar l'hora de fer la còpia de seguretat de la màquina virtual i l'altre per gestionar les operacions associades, pujada a Mega, notificació per correu, etc ... el cas es que per evitar intervencions de l'usuari final quan s'iniciava la còpia de seguretat bloquejava la pantalla amb xtrlock.

    #Bloquegem la pantalla
    export DISPLAY=":0.0"

    /usr/bin/xtrlock &

    La cosa funcionava de conya amb Bullseye, però en algun d'aquests moments tontos que et visiten de tant en tant i malgrat múltiples experiències al respecte, vaig acabar passant el muntatge a Testing i ara, la pantalla
    només es bloqueja si abans he obert un terminal o si l'executo directament
    des d'un terminal.

    Entenc que es un tema de l'entorn del cron de l'usuari, però malgrat
    potinejar al respecte no he trobat com apedaçar-ho. Així que si algú de vosaltres em pot orientar una mica li ho agrairé.

    <div dir="ltr">Bones, <div><br></div><div>Ja fa temps que a l&#39;escola on em guanyo les garrofes com a profe multiusos, vaig optar per virtualitzar els quatre equips Windows 10 que s&#39;hi utilitzen, de manera que vaig confeccionar un parell de
    guions, l&#39;un amb Bash + Yad per programar l&#39;hora de fer la còpia de seguretat de la màquina virtual i l&#39;altre per gestionar les operacions associades, pujada a Mega, notificació per correu, etc ... el cas es que per evitar intervencions de
    l&#39;usuari final quan s&#39;iniciava la còpia de seguretat bloquejava la pantalla amb xtrlock.</div><div><br></div><div>#Bloquegem la pantalla<br>export DISPLAY=&quot;:0.0&quot;<br><br></div><div>/usr/bin/xtrlock &amp;<br></div><div><br></div><div>La
    cosa funcionava de conya amb Bullseye, però en algun d&#39;aquests moments tontos que et visiten de tant en tant i malgrat múltiples experiències al respecte, vaig acabar passant el muntatge a Testing i ara, la pantalla només es bloqueja si abans he
    obert un terminal o si l&#39;executo directament des d&#39;un terminal.</div><div><br></div><div>Entenc que es un tema de l&#39;entorn del cron de l&#39;usuari, però malgrat potinejar al respecte no he trobat com apedaçar-ho. Així que si algú de
    vosaltres em pot orientar una mica li ho agrairé.</div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alex Muntada@21:1/5 to All on Mon Feb 13 21:50:01 2023
    Hola, Lluís:

    Entenc que es un tema de l'entorn del cron de l'usuari, però
    malgrat potinejar al respecte no he trobat com apedaçar-ho.

    Compte perquè, si no vaig errat, les ordres que s'executen des
    del cron no veuen l'entorn habitual de l'usuari, és a dir, que el
    shell que s'executa no té el mateix entorn que el que tindries en
    un terminal o consola.

    Em sembla recordar que una estratègia era executar l'ordre que
    vols dins un bash que sí llegeixi l'entorn, e.g.

    40 21 * * * env
    41 21 * * * bash -l -c "env"

    Veuràs que donen resultats diferents.

    Salut,
    Alex

    --
    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada <alexm@debian.org>
    ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org
    ⠈⠳⣄⠀⠀⠀⠀


    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEaUBwKsbetWW2SKTt466XjoNOXn4FAmPqoLgACgkQ466XjoNO Xn6cZg//ZJB6pYYUUJqGjUbot6qMhFxuXW9Qv5jY1w5rbf82LoS7hgnClSSpJXfH vQKb+Pe3cvBE7CoewtbcibY8DOf/PBZR33I9TxlcMMHgmpeKHTJ/AlSWCymr/qSe YVSrJTWW3D3x6Yh6jNfJ59wAySUKY+L8uKdb3qmKuruKXOillsJ0SxAfAVt4PG07 BpF+4YBjG0oSLXKkgsp9mJosXdRTkLBuhjVLTmLmrnNHj7btKq8l4/Zx7NOyKfLK yvqogVG81WB/MnRIcO1iEFgruay0SRCTK/1Gym63BjE6ntMhYDUGFkdQYzb16ght ZtVvSqagNIpHwFLHbuQoiqXAtDNOtl2K/x9tQmj/wh969B7u6QXBBMMOYC/8v9+O N7RmGMqMtwGO+KCSaDbrSmF3/97Ij3BGQU1hWM8E2g9IfcyL+otEQvYDuFj8UtkV cntGQZFdj8wHNVtER/T99fqb4Rsfs3BOgUz72Jp60lUdE3C6vGP1z/Kcx3B8pp3G X2HdyDBtFyNVYYA9x2OpdQ9NrGwrFKsRx/z5YzoypI5UJ1ijpOvYblGANQMmS3l7 QVe3XL4iDz6/qkuesJD/Qxbwjb0KjyLOnmnDm2LQuWI6TMiCRferNSf2NMOv3J6d 3QbhbasdbwT9zIJjs73xpHoD6tnjgR+Pl7nzuE4o+nxVfngU+0o=
    =Pkqd
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Llu=C3=ADs_Gras?=@21:1/5 to All on Thu Feb 16 21:40:02 2023
    Missatge de Alex Muntada <alexm@debian.org> del dia dl., 13 de febr. 2023 a
    les 21:43:

    Hola, Lluís:

    Entenc que es un tema de l'entorn del cron de l'usuari, però
    malgrat potinejar al respecte no he trobat com apedaçar-ho.

    Compte perquè, si no vaig errat, les ordres que s'executen des
    del cron no veuen l'entorn habitual de l'usuari, és a dir, que el
    shell que s'executa no té el mateix entorn que el que tindries en
    un terminal o consola.


    Si si, entenc que les coses van per aquí, però de moment, tots els intents han estat infructuosos.

    De fet, he estat mirant

    https://www.baeldung.com/linux/load-env-variables-in-cron-job
    i
    https://wiki.debian.org/EnvironmentVariables

    però la cosa ha continuat igual fins que aprofitant un refredat he estat comparant les sortides de printenv entre una Bullseye i una Bookworm
    i m'he adonat que el problema era amb el pobre xtrlock que utilitzava per bloquejar la pantalla que no podia capturar el teclat perquè ja ho estava,
    no se ben bé si per culpa del mode presentació de l'xfce4-screensaver o del mateix Virtualbox.

    En fi ... ara sembla que funciona.



    Em sembla recordar que una estratègia era executar l'ordre que
    vols dins un bash que sí llegeixi l'entorn, e.g.

    40 21 * * * env
    41 21 * * * bash -l -c "env"

    Veuràs que donen resultats diferents.

    Salut,
    Alex

    --
    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada <alexm@debian.org>
    ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org
    ⠈⠳⣄⠀⠀⠀⠀



    <div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Missatge de Alex Muntada &lt;<a href="mailto:alexm@debian.org" target="_blank">alexm@debian.org</a>&gt; del dia dl., 13 de febr. 2023 a les 21:43:<br></
    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hola, Lluís:<br>

    &gt; Entenc que es un tema de l&#39;entorn del cron de l&#39;usuari, però<br> &gt; malgrat potinejar al respecte no he trobat com apedaçar-ho.<br>

    Compte perquè, si no vaig errat, les ordres que s&#39;executen des<br>
    del cron no veuen l&#39;entorn habitual de l&#39;usuari, és a dir, que el<br> shell que s&#39;executa no té el mateix entorn que el que tindries en<br>
    un terminal o consola.<br></blockquote><div><br></div><div>Si si, entenc que les coses van per aquí, però de moment, tots els intents han estat infructuosos.</div><div><br></div><div>De fet, he estat mirant </div><div><br></div><div><a href="https://
    www.baeldung.com/linux/load-env-variables-in-cron-job" target="_blank">https://www.baeldung.com/linux/load-env-variables-in-cron-job</a></div><div>i</div><div><a href="https://wiki.debian.org/EnvironmentVariables" target="_blank">https://wiki.debian.org/
    EnvironmentVariables</a><br></div><div><br></div><div>però la cosa ha continuat igual fins que aprofitant un refredat he estat comparant les sortides de printenv entre una Bullseye i una Bookworm </div><div>i m&#39;he adonat que el problema era amb el
    pobre xtrlock que utilitzava per bloquejar la pantalla que no podia capturar el teclat perquè ja ho estava,</div><div>no se ben bé si per culpa del mode presentació de l&#39;xfce4-screensaver o del mateix Virtualbox.</div><div><br></div><div>En fi ...
    ara sembla que funciona.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

    Em sembla recordar que una estratègia era executar l&#39;ordre que<br>
    vols dins un bash que sí llegeixi l&#39;entorn, e.g.<br>

        40 21 * * * env<br>
        41 21 * * * bash -l -c &quot;env&quot;<br>

    Veuràs que donen resultats diferents.<br>

    Salut,<br>
    Alex<br>

    --<br>
      ⢀⣴⠾⠻⢶⣦⠀<br>
      ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada &lt;<a href="mailto:alexm@debian.org" target="_blank">alexm@debian.org</a>&gt;<br>
      ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 <a href="http://log.alexm.org" rel="noreferrer" target="_blank">log.alexm.org</a><br>
      ⠈⠳⣄⠀⠀⠀⠀<br>

    </blockquote></div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoni Villalonga@21:1/5 to All on Sat Feb 18 03:00:01 2023
    On Thu, Feb 16, 2023 at 09:33:35PM +0100, Llus Gras wrote:
    Missatge de Alex Muntada del dia dl., 13 de febr. 2023 a
    les 21:43:

    Hola, Llus:

    Entenc que es un tema de l'entorn del cron de l'usuari, per
    malgrat potinejar al respecte no he trobat com apedaar-ho.

    Compte perqu, si no vaig errat, les ordres que s'executen des
    del cron no veuen l'entorn habitual de l'usuari, s a dir, que el
    shell que s'executa no t el mateix entorn que el que tindries en
    un terminal o consola.


    Si si, entenc que les coses van per aqu, per de moment, tots els intents han estat infructuosos.

    [...]

    Em sembla recordar que una estratgia era executar l'ordre que
    vols dins un bash que s llegeixi l'entorn, e.g.

    40 21 * * * env
    41 21 * * * bash -l -c "env"

    Veurs que donen resultats diferents.

    Jo n'afegiria un ms:

    # m h dom mon dow command
    * * * * * env > /tmp/env0
    * * * * * sh -c "env > /tmp/env1"
    * * * * * sh -l -c "env > /tmp/env2"

    I, clar directament executar directament "env > /tmp/env3"

    Veurs que tots donen entorn distintes. El motiu s que els fitxers que carreguen no son els mateixos en cada cas.
    Amb aquests 4 exemples de variables d'entorns ja tens per a fer les proves que necessites...

    Per a netejar les variables d'entorn actual i carregar les d'un fitxer es pot fer aix (segur que hi ha formes ms maques):

    | #!/usr/bin/env sh
    | env -i sh -c "set -a ; source /tmp/env0 ; set +a; env"

    Aquest exemple mostra les variables que ha carregat (hauria de ser quasi exactament el que diu a /etc/env0). Si canvies el darrer 'env' per '/usr/bin/xtrlock' aniras veient en quins dels fitxers /tmp/envX funciona i en quins no. I ja experimentant manipulant els fitxers d'exemple hauries d'arribar a trobar les variables que necessites.

    Altra forma podria ser indagant amb strace o similar, per crec que s massa complexe pel cas que se t'ha presentat.

    I fotre una ullada al manual sovint tamb ajuda, per no deixis mai que 1 minut de llegir el manual et privi d'hores de diversi :) [Secci WARNING, per exemple]

    Una abraada. Salut!

    PS: xtrlock.c:122: if (getenv("WAYLAND_DISPLAY"))

    --
    Antoni Villalonga
    https://friki.cat/

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)