Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1912 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Pas d'affichage avec udev ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pas d'affichage avec udev ?

n°1364831
WizardPC
Posté le 22-09-2014 à 09:24:00  profilanswer
 

:hello:
 
C'est la première fois que je viens poster dans cette partie du forum donc soyez indulgent :D Et pour le titre je savais pas trop quoi mettre donc si vous avez mieux à me proposer !
 
Je suis un peu bloqué sur un projet.. en fait j'ai un script qui fais le scan anti-virus et la mise en quarantaine (avec ClamAV par exemple) et j'ai une règle udev qui détecte dès qu'une clé usb est branché sur l'ordinateur. Cette règle appelle le script shell du scan.
 
ps: je suis sur Ubuntu
 
Chose à savoir :  
 
- le script de scan fonctionne parfaitement quand je le lance depuis un terminal
- la règle udev fonctionne
- lors d'un branchement d'une clé usb à l'ordinateur, la règle udev fait appel au script du scan, et ça fonctionne :)
- j'ai deux version du script du scan, la différence ? Un avec des "echo" pour le terminal, et un avec une barre de progression faite avec "zenity", mais sinon le code principal est le même !
 
Mon problème :
 
- quand le script est lancé via la règle udev, je sais qu'il fonctionne grâce au rapport de scan mis dans un log, par contre je n'ai aucune information de la progression.. Pas de echo (vu qu'il n'y a pas de terminal je suppose) mais même avec zenity rien n'apparaît  :sweat:  
 
Ma question (qui attend grandement une réponse :lol ) :
 
- comment faire pour avoir un affichage de la progression de mon script (echo, zenity ou autre..) lorsque le script est lancé via une règle udev ?
 
 
Merci :jap:


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
mood
Publicité
Posté le 22-09-2014 à 09:24:00  profilanswer
 

n°1364903
WizardPC
Posté le 23-09-2014 à 09:38:50  profilanswer
 

Pas d'idée ?
 
Par exemple :
 
j'ai un script hello.sh qui contient un simple echo "Hello World"
ce script est lancé par le branchement d'une clé usb défini par une règle udev.
 
Comment afficher "Hello World" quelque part ?
 
Merci :)


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
n°1364919
goblin_rie​ur
ingé systemes unix
Posté le 23-09-2014 à 19:14:57  profilanswer
 

- quand le script est lancé via la règle udev, je sais qu'il fonctionne grâce au rapport de scan mis dans un log, par contre je n'ai aucune information de la progression.. Pas de echo (vu qu'il n'y a pas de terminal je suppose) mais même avec zenity rien n'apparaît  :sweat:  
 
Ma question (qui attend grandement une réponse :lol ) :
 
- comment faire pour avoir un affichage de la progression de mon script (echo, zenity ou autre..) lorsque le script est lancé via une règle udev ?


 
s'agissant d'un scan tu ne pourra pas facilement voir une progression, par contre comme n'importe quel processus tu peux voir ce qu'il fait en temps réel
 
en allant tout simplement dans /proc/N°du processus/*
et notament dans fd il y a la liste des fichiers ouverts ce qui permet de savoir quel fichiers sont scannés à un instant précis.
à la limite si tu connais la liste exhaustive des fichiers tu peux faire toi meme une evaluation de progression mais c'est pas forcément très simple à faire comme tel.


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
n°1364920
WizardPC
Posté le 23-09-2014 à 19:19:36  profilanswer
 

En fait le scan ne se fait pas vraiment dans le script lui même.. c'est un peu compliqué à expliquer :/
 
C'est pour ça que j'ai fait un deuxième post avec un exemple plus concret ! Si quelqu'un me donne la réponse à mon deuxième post, je pourrais l'appliquer à mon script :)


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
n°1364922
goblin_rie​ur
ingé systemes unix
Posté le 23-09-2014 à 19:40:10  profilanswer
 

ça change rien tu peux reprendre un processus FILS du script ou encore un script qui va chercher l'id du scan puis aller analyser son statut dans /proc ...
 
un exemple :
 

francois@dl380g5:/proc/4896$ cat status
Name: xterm
State: S (sleeping)
Tgid: 4896
Pid: 4896
PPid: 1
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
FDSize: 64
Groups: 24 25 29 30 44 46 104 109 111 1000  
VmPeak:    70268 kB
VmSize:    70268 kB
VmLck:        0 kB
VmPin:        0 kB
VmHWM:     7676 kB
VmRSS:     7676 kB
VmData:     4748 kB
VmStk:      136 kB
VmExe:      408 kB
VmLib:     5816 kB
VmPTE:      148 kB
VmSwap:        0 kB
Threads: 1
SigQ: 0/128570
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000200001
SigCgt: 0000000000015006
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 2810
nonvoluntary_ctxt_switches: 84
francois@dl380g5:/proc/4896$  
francois@dl380g5:/proc/4896$ ls -l fd/
total 0
lr-x------ 1 francois francois 64 sept. 23 19:35 0 -> /dev/null
l-wx------ 1 francois francois 64 sept. 23 19:35 1 -> /home/francois/.xsession-errors
l-wx------ 1 francois francois 64 sept. 23 19:35 2 -> /home/francois/.xsession-errors
lrwx------ 1 francois francois 64 sept. 23 19:35 3 -> socket:[14526]
lrwx------ 1 francois francois 64 sept. 23 19:35 4 -> /dev/ptmx
francois@dl380g5:/proc/4896$  


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
n°1364923
goblin_rie​ur
ingé systemes unix
Posté le 23-09-2014 à 19:46:07  profilanswer
 

pour ton hello world par exemple ta regle udev renvoi ton affichage sur un TTY dédié ou un fichier de log quelconque...  
 
ca peut aussi s'interceptier par un script, pour voir si oui ou non ca a été affiché sur TTY dédié ou dans un fichier log ou dans /proc/n°de processus/fd/lien vers le fichier log si tu le regardes en temps réel.
 
:hello:  
ton truc deviens  
 
echo 'hello world' > /var/log/messages par exemple.
 
ou si tu veux pofiner...
ca gere un script lancé par ta regle udev qui ressemblerai à minima à  


#!/bin/sh
[ -f /var/run/$0.pid ] && rm /var/run/$0.pid
echo $$ > /var/run/$0.pid
[ -f /var/log/$0.log ] && rm /var/log/$0.log
echo "hello world" > /var/log/$0.log
rm /var/run.$0.pid
exit 0


 
la présence ou non du fichier pid devrait donc te dire que ton script est fini ou non.


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
n°1364924
goblin_rie​ur
ingé systemes unix
Posté le 23-09-2014 à 19:50:54  profilanswer
 

j'y pense y'a encore une autre solution c'est d'envoyer l'affichage dans un FIFO et de lire celui ci au moment ou on veut pour voir l'etat ou non


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
n°1364928
zaverell
Posté le 23-09-2014 à 20:53:45  profilanswer
 

WizardPC a écrit :

...
Mon problème :
 
- quand le script est lancé via la règle udev, je sais qu'il fonctionne grâce au rapport de scan mis dans un log, par contre je n'ai aucune information de la progression.. Pas de echo (vu qu'il n'y a pas de terminal je suppose) mais même avec zenity rien n'apparaît  :sweat:  
 
Ma question (qui attend grandement une réponse :lol ) :
 
- comment faire pour avoir un affichage de la progression de mon script (echo, zenity ou autre..) lorsque le script est lancé via une règle udev ?
 
 
Merci :jap:


 
Salut,
 
est ce que tu peut essayer de juster lancer un outil graphique du genre calculatrice ou bloc-note au lieux de ton scan ?
(par ta regle udev)
 
car j'ai deja eu le cas ou ca ne marchais pas juste car la commande est lancé par le daemon (là c'est udev) et non par l'utilisateur qui a ouvert la session X
 
Un truc du genre su - ton_user calculatrice
 
Si ça ne marche pas  
un   xhost + au démarrage de la session X pour permettre à tout le monde de lancer un programme graphique dans la session de "ton_user"
devrait aussi le faire si tu rajoute export DISPLAY=:0.0 au début de ton script.
(zenity étant un programme graphique)
 
 
 :hello:

n°1364929
WizardPC
Posté le 23-09-2014 à 20:57:03  profilanswer
 

Ok je vais essayer de voir tout ça demain :)
 
La finalité serait que ce soit (dans le meilleur des cas) zenity qui s'affiche.


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
n°1364942
WizardPC
Posté le 24-09-2014 à 09:34:41  profilanswer
 

Voila ce que j'ai fait ce matin pour tester :

 

Trois fichiers :

 

1) "90-gedit.rules"

 
Citation :

ACTION=="add", KERNEL=="sd[a-z]1", RUN+="/lib/udev/gedit.sh

 

2) "gedit.sh"

 
Citation :

#!/bin/bash

 

sudo gedit
echo "test" >> /home/../log.txt

 

3) "maj.sh"

 
Citation :

#!/bin/bash

 

sudo cp /home/../gedit.sh /lib/udev
sudo cp /home/../90-gedit.rules /etc/udev/rules.d

 


Mon script principal de scan, se met en place de la même façon, sauf qu'au lieu d'avoir gedit.sh j'ai scan.sh :)
Le scan ne s'affiche pas, ni avec les echo ni avec zenity, par contre je reçois bien le mail du rapport de scan, donc le script va jusqu'au bout.
Même chose avec ce que je viens de tester plus haut, gedit ne s'ouvre pas, mais l'écriture dans le log fonctionne.


Message édité par WizardPC le 24-09-2014 à 09:34:59

---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
mood
Publicité
Posté le 24-09-2014 à 09:34:41  profilanswer
 

n°1364944
WizardPC
Posté le 24-09-2014 à 09:57:32  profilanswer
 

Désolé du double post (triple en comptant celui de hier :o ) !
Mais je crois que ça fonctionne comme je le voudrais :)
 
J'ai modifier quelques trucs avec ce que vous m'avez dit :
 
2) "gedit.sh"
 

Citation :

#!/bin/bash
 
xhost +
export DISPLAY=:0.0

sudo gedit
echo "test" >> /home/../log.txt
echo "tty motherflower !!" > /dev/tty1
echo "shell motherflower !!" > /dev/pts/1


 
Avec ça j'ai :
 
- l'ouverture de gedit, donc je pense qu'avec zenity ça fonctionnera aussi :)
- je peux écrire les echo dans un tty si jamais je ne veux pas faire d'interface graphique !
- je peux forcer à écrire les echo dans un terminal même si le script est lancé par une règle udev  
 
Merci beaucoup :jap:
 
ps: je vais attendre des remarques avant de le mettre en résolu.
 


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
n°1364969
WizardPC
Posté le 24-09-2014 à 16:39:50  profilanswer
 

Aujourd'hui je me suis penché sur la partie en affichage ligne de commande sous un tty.
Y a une chose que je n'arrive pas à faire.. enfin c'est comme dab, ça marche manuellement mais avec udev non :pfff:  
 
Je voulais réinitialiser l'affichage dans le tty !  
 
1) état initial du tty

Citation :

EN ATTENTE D'UNE CLE USB


 
2) une fois la clé branché le script se lance...

Citation :

EN ATTENTE D'UNE CLE USB
 
Hello World !
 
3
2
1


3) à la fin du script on réinitialise le tty (donc on revient en 1) )

Citation :

EN ATTENTE D'UNE CLE USB


 
Ceci fonctionne dans le script si il est lancé manuellement.
Je fais un simple

Citation :

clear > /dev/tty1

pour effacer ce qui était écris dans le tty et c'est bon :o
 
Une idée pour résoudre ceci avec udev ? Ou alors il faudrait une autre commande que celle du "clear" ?
 
Merci encore d'aider un débutant comme moi  :whistle:


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Pas d'affichage avec udev ?

 

Sujets relatifs
Probleme d'affichage navigation IceweaselImpossible de détecter mon affichage - Ubuntu - Dual Boot
[Ubuntu/Nautilus] - lenteur dans l'affichage des répertoiresProblème d'udev sur GA-990XA-UD3 [Résolu]
Affichage erroné de la fréquence CPU dans une VMlien udev vers disk (et non partition)
démarrer un processus via telnet (affichage et tache de font)Kubuntu, problème affichage écran après installation
bug d'affichageprobleme d'affichage yoxview sur IE
Plus de sujets relatifs à : Pas d'affichage avec udev ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR