Re: Apropos el cron d'usuari ...

2023-02-17 Conversa Antoni Villalonga
On Thu, Feb 16, 2023 at 09:33:35PM +0100, Lluís Gras wrote:
> Missatge de Alex Muntada 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.
> 
> [...]
> 
> > 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.

Jo n'afegiria un més:

# 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"

Veuràs 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 més 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 abraçada. Salut!

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

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



Re: Apropos el cron d'usuari ...

2023-02-16 Conversa Lluís Gras
Missatge de Alex Muntada  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 
>   ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
>   ⠈⠳⣄
>
>


Re: Apropos el cron d'usuari ...

2023-02-13 Conversa Alex Muntada
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 
  ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
  ⠈⠳⣄



signature.asc
Description: PGP signature


Apropos el cron d'usuari ...

2023-02-13 Conversa Lluís Gras
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é.