Re: Choix de langage de script adapté (Was: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique)

2019-08-21 Par sujet Alexandre Goethals
Le 21/08/2019 à 14:24, Basile Starynkevitch a écrit :
>
> On 8/21/19 2:20 PM, Eric Degenetais wrote:
>> Le mer. 21 août 2019 à 14:13, Basile Starynkevitch
>>  a écrit :
>>>
>>> On 8/21/19 1:13 PM, Étienne Mollier wrote:
> Observez aussi que GNU emacs est scriptable en E-lisp (et sait
> "presque" tout faire).
 Est ce que « faire ma vaisselle » fait partie du « "presque"
 tout » ?  :)
>>>
>>> La vaisselle et le café font partie des choses qu'un emacs standard
>>> fait
>>> mal. Mais un tout petit logiciel (tout petit en ligne de code source,
>>> comparativement aux millions de lignes d'un emacs 26) pourrait, si on
>>> avait le matériel IoT qui va bien (lave vaisselle connecté, cafetière
>>> connectée) faire complément.
>>>
>> à quand le download du café ? :p
>
>
> si la cafetière était IoT connectée (si si, ça existe, mais c'est un
> peu trop cher pour moi), ou si je bricolais un Rasberry-Pi pour la
> commander, c'est faisable en configurant un emacs 26 usuel  (il
> propose en standard un client HTTP & REST).
>
> La machine à café au bureau a une sortie Ethernet. C'est une
> question de logiciel (propriétaire) pour l'utiliser.
>
>
> Librement
>
Voir le script fuckin_coffee.sh sur ce dépôt:
https://github.com/NARKOZ/hacker-scripts



Re: Choix de langage de script adapté (Was: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique)

2019-08-21 Par sujet G2PC


>> à quand le download du café ? :p
>
> si la cafetière était IoT connectée (si si, ça existe, mais c'est un
> peu trop cher pour moi), ou si je bricolais un Rasberry-Pi pour la
> commander, c'est faisable en configurant un emacs 26 usuel  (il
> propose en standard un client HTTP & REST).
>
> La machine à café au bureau a une sortie Ethernet. C'est une
> question de logiciel (propriétaire) pour l'utiliser.
>
> Librement


Je me demande encore comment exploiter le protocole 418, pour faire
couler mon thé, via une senseo, et, de préférence, qu'un petit robot
puisse m'apporter ce thé, avec une cuillère de miel et de la cannelle.

Un script court et robuste à proposer ?

https://www.visionduweb.fr/teapot.php



Re: Choix de langage de script adapté (Was: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique)

2019-08-21 Par sujet Basile Starynkevitch



On 8/21/19 2:20 PM, Eric Degenetais wrote:

Le mer. 21 août 2019 à 14:13, Basile Starynkevitch
 a écrit :


On 8/21/19 1:13 PM, Étienne Mollier wrote:

Observez aussi que GNU emacs est scriptable en E-lisp (et sait
"presque" tout faire).

Est ce que « faire ma vaisselle » fait partie du « "presque"
tout » ?  :)


La vaisselle et le café font partie des choses qu'un emacs standard fait
mal. Mais un tout petit logiciel (tout petit en ligne de code source,
comparativement aux millions de lignes d'un emacs 26) pourrait, si on
avait le matériel IoT qui va bien (lave vaisselle connecté, cafetière
connectée) faire complément.


à quand le download du café ? :p



si la cafetière était IoT connectée (si si, ça existe, mais c'est un peu 
trop cher pour moi), ou si je bricolais un Rasberry-Pi pour la 
commander, c'est faisable en configurant un emacs 26 usuel  (il propose 
en standard un client HTTP & REST).


La machine à café au bureau a une sortie Ethernet. C'est une 
question de logiciel (propriétaire) pour l'utiliser.



Librement

--
Basile STARYNKEVITCH   == http://starynkevitch.net/Basile
opinions are mine only - les opinions sont seulement miennes
Bourg La Reine, France; 
(mobile phone: cf my web page / voir ma page web...)



Re: Choix de langage de script adapté (Was: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique)

2019-08-21 Par sujet Eric Degenetais
Le mer. 21 août 2019 à 14:13, Basile Starynkevitch
 a écrit :
>
>
> On 8/21/19 1:13 PM, Étienne Mollier wrote:
> >> Observez aussi que GNU emacs est scriptable en E-lisp (et sait
> >> "presque" tout faire).
> > Est ce que « faire ma vaisselle » fait partie du « "presque"
> > tout » ?  :)
>
>
> La vaisselle et le café font partie des choses qu'un emacs standard fait
> mal. Mais un tout petit logiciel (tout petit en ligne de code source,
> comparativement aux millions de lignes d'un emacs 26) pourrait, si on
> avait le matériel IoT qui va bien (lave vaisselle connecté, cafetière
> connectée) faire complément.
>
à quand le download du café ? :p
*sigh*
> [...]
> Basile STARYNKEVITCH   == http://starynkevitch.net/Basile
> opinions are mine only - les opinions sont seulement miennes
> Bourg La Reine, France; 
> (mobile phone: cf my web page / voir ma page web...)
>

Éric Dégenètais



Re: Choix de langage de script adapté (Was: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique)

2019-08-21 Par sujet Basile Starynkevitch



On 8/21/19 1:13 PM, Étienne Mollier wrote:

Observez aussi que GNU emacs est scriptable en E-lisp (et sait
"presque" tout faire).

Est ce que « faire ma vaisselle » fait partie du « "presque"
tout » ?  :)



La vaisselle et le café font partie des choses qu'un emacs standard fait 
mal. Mais un tout petit logiciel (tout petit en ligne de code source, 
comparativement aux millions de lignes d'un emacs 26) pourrait, si on 
avait le matériel IoT qui va bien (lave vaisselle connecté, cafetière 
connectée) faire complément.



La rumeur dit qu'au MIT la machine à café et le distributeur de boissons 
fraiches étaient, à la bonne époque (celle de RMS ou quelques années 
plus tard) connectés à des systèmes Unix. Je la crois plausible.


(je travaille dans un labo plus ou moins de recherche -surtout recherche 
de financement aujourd'hui- français où il ne sied hélàs pas de faire de 
telles choses, et c'est à mon avis pas si humble que ça fort dommage. 
Quelques collègues ont professionnellement des légos sophistiqués; lors 
de mon année sabbatique à l'INRIA, j'ai vu des choses comparables, dans 
leur esprit, à ce qui s'était fait au MIT)


Librement.

--
Basile STARYNKEVITCH   == http://starynkevitch.net/Basile
opinions are mine only - les opinions sont seulement miennes
Bourg La Reine, France; 
(mobile phone: cf my web page / voir ma page web...)



Choix de langage de script adapté (Was: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique)

2019-08-21 Par sujet Étienne Mollier
Basile Starynkevitch, au 2019-08-21:
>On 8/21/19 1:27 AM, G2PC wrote:
>> Le 18/08/2019 à 12:19, Étienne Mollier a écrit :
>>> Pour les opérations un tantinet plus avancées, préférez les
>>> scripts à part entière.
>En particulier, considérez les scripts dans des langages
>meilleurs que Bash, par exemple GNU guile (qui est qualifié de
>langage de script préférentiel pour GNU) ou Lua.

Vrai : Bash est avant tout un shell interactif, avec les
limitations qu'impliquent la concision et l'exécution
séquentielle des instructions.  Rédiger un script robuste dans
ce langage est une tâche qui nécessite un apprentissage de
règles peu intuitives, au risque de se prendre les pieds dans le
tapis ; je pense aux règles relatives à l'usage des guillemets,
ou la poursuite de l'exécution d'un script après qu'une erreur
ait eu lieu, comportement par défaut à contrer en utilisant
l'option "set -e".

À mon sens le meilleur langage à utiliser est celui adapté à la
tâche ou à l'environnement général de travail.  Bien souvent,
les administrateurs système tendent à s'en tenir à Bash parce
que quasiment tous les scripts du système sont rédigé dans ce
langage, ou son parent /bin/sh.  Bien sûr il y a deux ou trois
exceptions, comme les fichiers de configuration en m4 de
Postfix, ou bien du NIS, qu'il faut penser à compiler avant de
donner à manger au dæmon, mais ce genre de déviation est
relativement rare.

De ce que je comprends, dans le cas présent, le gros du travail
effectué par le script mediawiki1 était en fait effectué par un
autre langage, le PHP, usuellement considéré comme adapté pour
construire dynamiquement des pages en HTML.  Bash ne servait que
d'enrobage pour faciliter le lancement du script tout en
ajoutant une fine couche d'enregistrement dans un fichier de
journal.

Pour faire un peu de tout, le langage Python revient souvent en
entreprise ces dernières années.  Ce n'est pas forcément le
langage le plus amusant du monde, mais par défaut il est très
clair à lire et relativement robuste (sauf peut-être pour les
allergiques au typage dynamique) ; il faut le faire exprès pour
rédiger un script Python comme un cochon.

Dans les situation où la vitesse d'exécution prime, le bon vieux
langage C est plus efficace que jamais, à condition de bien
l'utiliser, comme pour tout ; mais on sort complètement du cadre
des langages de script.

J'ai eu quelque discussions avec un collègue sur l'usage des
langages à paradigme fonctionnels ; je dois admettre que Guile a
l'air tentant pour me mettre le pied à l'étrier (non ce n'est
pas à cause de la publicité autour de l'interfaçage avec le
langage C.  :)

>Observez aussi que GNU emacs est scriptable en E-lisp (et sait
>"presque" tout faire).

Est ce que « faire ma vaisselle » fait partie du « "presque"
tout » ?  :)

Amicalement,
-- 
Étienne Mollier 
   5ab1 4edf 63bb ccff 8b54 2fa9 59da 56fe fff3 882d
  « Java est en quelque sorte le Cobol du XXIe siècle. »
 -- Larry Wall
Source:
https://www.youtube.com/watch?v=LR8fQiskYII
Transcription (hachée):

http://blog.mattcallanan.net/2013/03/larry-wall-5-programming-languages.html




signature.asc
Description: OpenPGP digital signature


Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-20 Par sujet Basile Starynkevitch


On 8/21/19 1:27 AM, G2PC wrote:

Le 18/08/2019 à 12:19, Étienne Mollier a écrit :

Pour les opérations un tantinet plus avancées, préférez les
scripts à part entière.
En particulier, considérez les scripts dans des langages meilleurs que 
Bash, par exemple GNU guile  (qui 
est qualifié de langage de script préférentiel pour GNU) ou Lua 
.


Observez aussi que GNU emacs  est 
scriptable en E-lisp (et sait "presque" tout faire).




--


Basile STARYNKEVITCH   == http://starynkevitch.net/Basile
opinions are mine only - les opinions sont seulement miennes
Bourg La Reine, France; 
(mobile phone: cf my web page / voir ma page web...)



Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-20 Par sujet G2PC
Le 18/08/2019 à 12:19, Étienne Mollier a écrit :
> Pour les opérations un tantinet plus avancées, préférez les
> scripts à part entière.  Ça vous évitera d'avoir un fichier
> .bashrc enflé jusqu'à démesure, et rendra plus rapide, et moins
> gourmande en mémoire l'exécution de votre shell au jour le jour.
>
> Ou à minima utilisez des fonctions.  En l'occurrence, vous aurez
> les même problèmes pour les charger dans l'environnement de cron
> que les alias.  Mais en général, vous pourrez lancer des
> commandes plus construites, réellement gérer les arguments,
> avoir possibilité de les déclencher par des "trap" pour gérer
> les exceptions,

Merci, je prend note.
Je verrais à faire d'avantage de fonctions pour mes scripts.
Je vais intégrer vos conseils sur mon wiki pour conserver ça sur la durée.

Bonne semaine.



Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-18 Par sujet Étienne Mollier
G2PC, au 2019-08-17 :
> Trompé dans ma précédente réponse, ok, je tente votre proposition en
> appelant le script depuis crontab.
> De ce fait, cela ne me permet pas d'utiliser les alias dans crontab.
>
> J'aurais souhaité un contournement, pour ne pas avoir à supporter le
> message d'erreur pour me permettre d'utiliser les alias.
> bash -ic "mediawiki1 >> /var/log/cron-dropbox.log 2>&1"

Bonjour,

Laissez donc de côté les alias en situation de scripting, ce qui
inclue le travail avec cron.  Cet outil n'est réellement qu'une
commodité pour le travail en mode interactif, afin de raccourcir
certaines commandes usuelles à quelques caractères.  Les alias
sont d'ailleurs désactivés en shell script à dessein, pour
éviter leur usage dans ce contexte.

Pour les opérations un tantinet plus avancées, préférez les
scripts à part entière.  Ça vous évitera d'avoir un fichier
.bashrc enflé jusqu'à démesure, et rendra plus rapide, et moins
gourmande en mémoire l'exécution de votre shell au jour le jour.

Ou à minima utilisez des fonctions.  En l'occurrence, vous aurez
les même problèmes pour les charger dans l'environnement de cron
que les alias.  Mais en général, vous pourrez lancer des
commandes plus construites, réellement gérer les arguments,
avoir possibilité de les déclencher par des "trap" pour gérer
les exceptions, etc:

mediawiki-cleanup () {
/usr/bin/php \

/var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php \
--delete
}


Librement,
-- 
Étienne Mollier 
   5ab1 4edf 63bb ccff 8b54 2fa9 59da 56fe fff3 882d
  Toute opinion exprimée ici est mienne.



signature.asc
Description: OpenPGP digital signature


Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-17 Par sujet G2PC


> Je pense que vous vous en sortirez mieux simplement à coup de :
>
>   01 10 * * * /usr/bin/php 
> /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete >> 
> /var/log/cron-dropbox.log 2>&1
>
> Ou alors, si comme moi vous n'aimez par les longues lignes, en
> lançant un script exécutable /root/bin/mediawiki, par exemple :
>
>   #!/bin/bash
>   exec /usr/bin/php \
>   /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php \
>   --delete >> /var/log/cron-dropbox.log 2>&1
>
> Qui serait appelé comme ceci :
>
>   01 10 * * * /root/bin/mediawiki
>
> Ou bien alors comme cela si le fichier n'est pas exécutable :
>
>   01 10 * * * /bin/bash /root/bin/mediawiki


Trompé dans ma précédente réponse, ok, je tente votre proposition en
appelant le script depuis crontab.
De ce fait, cela ne me permet pas d'utiliser les alias dans crontab.

J'aurais souhaité un contournement, pour ne pas avoir à supporter le
message d'erreur pour me permettre d'utiliser les alias.
bash -ic "mediawiki1 >> /var/log/cron-dropbox.log 2>&1"




Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-16 Par sujet G2PC
Super, il semble bien que j'ai oublié de passer les logs vers un
fichier, pour m'en débarrasser.

Je pense utiliser le bashrc, donc, pas besoin de créer un script
complémentaire.
Merci pour ce retour.

Le 16/08/2019 à 22:23, Étienne Mollier a écrit :
> G2PC, au 2019-08-16 :
>> .bashrc
>> alias mediawiki1='/usr/bin/php
>> /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete'
>>
>>
>> crontab -e
>> 01 10 * * * bash -ic "mediawiki1 >> /var/log/cron-dropbox.log 2>&1"
> Bonjour,
>
> D'après le manuel de bash(1), section ALIASES, les alias ne sont
> pas évalués quand le shell n'est pas interactif, à moins
> d'utiliser l'option "expand_aliases" en tête du script, via
> "shopt".  Je suppose que c'est ce qui vous a motivé à lancer le
> script Bash avec l'option "-i".  Sauf que le « pseudo terminal »
> fourni par l'environnement de cron ne fournit aucune manière
> d'interagir, d'où l'erreur :
>
>> bash: impossible de régler le groupe de processus du terminal (20286):
>> Ioctl() inapproprié pour un périphérique
>> bash: pas de contrôle de tâche dans ce shell
> Je pense que vous vous en sortirez mieux simplement à coup de :
>
>   01 10 * * * /usr/bin/php 
> /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete >> 
> /var/log/cron-dropbox.log 2>&1
>
> Ou alors, si comme moi vous n'aimez par les longues lignes, en
> lançant un script exécutable /root/bin/mediawiki, par exemple :
>
>   #!/bin/bash
>   exec /usr/bin/php \
>   /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php \
>   --delete >> /var/log/cron-dropbox.log 2>&1
>
> Qui serait appelé comme ceci :
>
>   01 10 * * * /root/bin/mediawiki
>
> Ou bien alors comme cela si le fichier n'est pas exécutable :
>
>   01 10 * * * /bin/bash /root/bin/mediawiki
>
> Amicalement,



Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-16 Par sujet Étienne Mollier
On 16/08/2019 22.23, Étienne Mollier wrote:
> Qui serait appelé comme ceci :
> 
>   01 10 * * * /root/bin/mediawiki
> 
> Ou bien alors comme cela si le fichier n'est pas exécutable :
> 
>   01 10 * * * /bin/bash /root/bin/mediawiki

Hum, bien sûr remplacez root par l'utilisateur en charge dudit
mediawiki...  ;)

01 10 * * * /bin/bash "$HOME/bin/mediawiki"

Amicalement,
-- 
Étienne Mollier 
   5AB1 4EDF 63BB CCFF 8B54 2FA9 59DA 56FE FFF3 882D



signature.asc
Description: OpenPGP digital signature


Re: bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-16 Par sujet Étienne Mollier
G2PC, au 2019-08-16 :
> .bashrc
> alias mediawiki1='/usr/bin/php
> /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete'
>
>
> crontab -e
> 01 10 * * * bash -ic "mediawiki1 >> /var/log/cron-dropbox.log 2>&1"

Bonjour,

D'après le manuel de bash(1), section ALIASES, les alias ne sont
pas évalués quand le shell n'est pas interactif, à moins
d'utiliser l'option "expand_aliases" en tête du script, via
"shopt".  Je suppose que c'est ce qui vous a motivé à lancer le
script Bash avec l'option "-i".  Sauf que le « pseudo terminal »
fourni par l'environnement de cron ne fournit aucune manière
d'interagir, d'où l'erreur :

> bash: impossible de régler le groupe de processus du terminal (20286):
> Ioctl() inapproprié pour un périphérique
> bash: pas de contrôle de tâche dans ce shell

Je pense que vous vous en sortirez mieux simplement à coup de :

01 10 * * * /usr/bin/php 
/var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete >> 
/var/log/cron-dropbox.log 2>&1

Ou alors, si comme moi vous n'aimez par les longues lignes, en
lançant un script exécutable /root/bin/mediawiki, par exemple :

#!/bin/bash
exec /usr/bin/php \
/var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php \
--delete >> /var/log/cron-dropbox.log 2>&1

Qui serait appelé comme ceci :

01 10 * * * /root/bin/mediawiki

Ou bien alors comme cela si le fichier n'est pas exécutable :

01 10 * * * /bin/bash /root/bin/mediawiki

Amicalement,
-- 
Étienne Mollier 
   5ab1 4edf 63bb ccff 8b54 2fa9 59da 56fe fff3 882d




signature.asc
Description: OpenPGP digital signature


bash: impossible de régler le groupe de processus du terminal (20286): Ioctl() inapproprié pour un périphérique

2019-08-16 Par sujet G2PC
.bashrc
alias mediawiki1='/usr/bin/php
/var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete'


crontab -e
01 10 * * * bash -ic "mediawiki1 >> /var/log/cron-dropbox.log 2>&1"



J'obtiens dans les messages system, via mailx :

bash: impossible de régler le groupe de processus du terminal (20286):
Ioctl() inapproprié pour un périphérique
bash: pas de contrôle de tâche dans ce shell