Pages : 1
#1 Le 24/02/2010, à 17:43
- lynn
[RESOLU] Demande de script
Bonjour les gens,
Je demande votre aide pour un script d'envoi de message du style "popup" sur un pc distant.
Pour ma part, j'ai réussi à trouver cette commande qui fonctionne plutôt bien :
ssh user@ip 'export DISPLAY=:0.0; /usr/bin/xmessage "Le message à envoyer"'
Le truc, c'est qu'il faut tout retaper en ligne de commande suivant le message à envoyer ...
Serait t' il possible d'avoir un script qui fasse ça en proposant de passer par une gui comme zenity pour rentrer le texte à envoyer ?
Pour résumer, je clique sur le script, une fenêtre apparait avec un message du genre "rédiger le message à envoyer",
un bouton "envoyer" et c'est tout.
Sachant que l'adresse ip et l'utilisateur distant sont toujours les mêmes.
Voila, j'espère avoir été claire dans ma demande
Merci beaucoup pour vos propositions
Dernière modification par lynn (Le 26/02/2010, à 16:05)
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#2 Le 24/02/2010, à 20:10
- schaars
Re : [RESOLU] Demande de script
Bonsoir
Voici un script qui fait ça, avec quelques commentaires :
#!/bin/sh
# nom de l'utilisateur
USER="user"
# adresse IP ou nom d'hôte du pc distant
HOST="pc_sur_lequel_afficher_le_message"
# on demande le message à l'utlisateur, qui sera stocké dans la variable message
message=$( zenity --entry --title="Message à envoyer" --text="Entrez le message à envoyer au pc distant : " \
--entry-text "le message à envoyer")
ssh ${USER}@${HOST} 'export DISPLAY=:0.0; /usr/bin/xmessage "${message}"'
zenity --info --title="Message envoyé \!" --text="Le message a bien été envoyé à ${USER}@${HOST} \!"
Ensuite tu sauvegardes tout ça dans un fichier (mon_fichier.sh par exemple) et lorsque tu le lances, en double-cliquant dessus par exemple, il va afficher la fenêtre de zenity avant d'envoyer le message.
Je n'ai pas testé, mais ça devrait marcher. J'ai mis des accolades autour des noms de variable pour que bash ne prenne pas le caractère juste après comme faisant parti de son nom, même si ici ça n'est pas nécessaire. Mais c'est plus propre.
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#3 Le 24/02/2010, à 20:56
- lynn
Re : [RESOLU] Demande de script
Merci schaars,
Ton script fonctionne à un "détail" près. Mais le détail est de taille (<-- jeu de mot non voulu ) car si le pc distant à bien la fenêtre de xmessage sur le bureau, le message sensé apparaitre dedans n'y est pas ....
J'ai réessayé la commande toute seule dans un terminal et là, ça fonctionne... la solution ne doit pas être loin
Merci encore une fois
édit: je viens de m' apercevoir que je n'ai la confirmation de l'envoie du "message"
zenity --info --title="Message envoyé \!" --text="Le message a bien été envoyé à ${USER}@${HOST} \!"
que quand la personne valide ou ferme sa fenêtre de xmessage.
Donc voila, il reste encore quelques bugs
Dernière modification par lynn (Le 24/02/2010, à 21:27)
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#4 Le 25/02/2010, à 00:17
- sputnick
Re : [RESOLU] Demande de script
Essaye en incorporant cette ligne :
echo "${message}" | ssh ${USER}@${HOST} 'DISPLAY=:0 /usr/bin/xmessage -file -'
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#5 Le 25/02/2010, à 08:31
- credenhill
Re : [RESOLU] Demande de script
hello
ssh termine quand xmessage termine, c'est à dire quand le destinataire a cliqué Okay
Hors ligne
#6 Le 25/02/2010, à 11:33
- sputnick
Re : [RESOLU] Demande de script
Absolument
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#7 Le 25/02/2010, à 16:03
- lynn
Re : [RESOLU] Demande de script
Merci sputnick
Ca fonctionne parfaitement
Une question qui me vient en parallèle : serait t' il possible d'utiliser le système de notification d'Ubuntu plutôt que xmessage ? Ce serait plus joli, parce que xmessage .....bon, c'est fonctionnel mais c'est vraiment pas top question esthétique
Merci pour votre sollicitude
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#8 Le 25/02/2010, à 17:57
- sputnick
Re : [RESOLU] Demande de script
Bien sur, documente toi sur notify-send
zenity pourrait aussi t'intereser...
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#9 Le 25/02/2010, à 18:18
- lynn
Re : [RESOLU] Demande de script
Zenity me tente bien. En m'inspirant de divers exemples, je pourrais créer une fenêtre comme je veux, mais comment l'intégrer au script en remplacement de xmessage ?
Merci de vos conseils
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#10 Le 25/02/2010, à 18:48
- sputnick
Re : [RESOLU] Demande de script
ssh user@hote 'DISPLAY=:0 zenity --info --title "Message de papa" --text "Je suis ton pere <b>$USER</b>"'
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#11 Le 25/02/2010, à 19:06
- Hizoka
Re : [RESOLU] Demande de script
si tu as besoin d'aide pour zenity, jette un oeil à ma signature
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#12 Le 25/02/2010, à 19:36
- lynn
Re : [RESOLU] Demande de script
Merci Hizoka pour ton lien
@sputnick
Ca ne fonctionne pas Il me propose de taper le message à envoyer puis ça me dit que le message a bien été envoyé mais sur l'écran distant, il n'y a rien
Le tout est de trouver la bonne syntaxe et ce n'est pas chose facile quand on ne maitrise pas les codes de script
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#13 Le 25/02/2010, à 20:01
- sputnick
Re : [RESOLU] Demande de script
@Lynn, non, j'ai testé ma commande avec succes.
Copie colle moi ta ligne de commande adaptée de la mienne ici même stp.
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#14 Le 25/02/2010, à 20:40
- lynn
Re : [RESOLU] Demande de script
@sputnick
#!/bin/sh
# nom de l'utilisateur
USER="user"
# adresse IP ou nom d'hôte du pc distant
HOST="xx.xx.xx.xx"
# on demande le message à l'utilisateur, qui sera stocké dans la variable message
message=$(zenity --entry --title="Message à envoyer" --text="Entrez le message à envoyer au pc distant \:" \ --entry-text="le message à envoyer")
ssh ${USER}@${HOST} 'DISPLAY=:0 zenity --info --title "Message de Lynn" --text "Notification <b>$USER</b>"'
zenity --info --title="Message envoyé \!" --text="Le message a bien été envoyé à ${USER}@${HOST} \!"
Voila ce que j'ai mis; là, ça fonctionne mais il n'y a pas de message dans la fenêtre zenity de l'utilisateur distant.
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#15 Le 26/02/2010, à 00:54
- sputnick
Re : [RESOLU] Demande de script
Bon, ca serais bien que tu comprenne la gestion des apostrophes, c'est fondamental en programmation shell. J'hésite à te donner la solution directement, mais finalement j'ai confiance en ta soif d'apprendre, donc voila :
#!/bin/bash
# nom de l'utilisateur
USER="pouet"
# adresse IP ou nom d'hôte du pc distant
HOST="xxx.xx.xx.xxx"
# on demande le message à l'utilisateur, qui sera stocké dans la variable message
message=$(zenity --entry --title="Message à envoyer" --text="Entrez le message à envoyer au pc distant :" --entry-text="le message à envoyer")
if EXEC=$(ssh ${USER}@${HOST} "DISPLAY=:0 zenity --info --title 'Message de Lynn' --text \"$message\"" 2>&1); then
zenity --info --title="Message envoyé !" --text="Le message a bien été envoyé à ${USER}@${HOST} !"
else
zenity --error --title="Problème detecte !!!" --text "$EXEC"
fi
Comprends tu bien toute les étapes ?
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#16 Le 26/02/2010, à 00:57
- sputnick
Re : [RESOLU] Demande de script
<greybot> "USE MORE QUOTES!" Learn the difference between " and ' and `. <http://bash-hackers.org/wiki/doku.php/syntax/words> for why, <http://www.grymoire.com/Unix/Quote.html> for how.
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#17 Le 26/02/2010, à 16:04
- lynn
Re : [RESOLU] Demande de script
Salut sputnick,
Déjà merci pour tes éclaircissements
Quand je lis le script, je comprends son but mais les codes et les commandes mises dedans et la façon de les placer me sont inconnus. Par exemple
if EXEC=$ <-- le if, c'est input file ? EXEC, comme éxecutable peut-être ? et $, la variable ?
Et ceci à la fin
2>&1 <-- ça, sans une recherche ( internet ou bouquin ), je ne peux deviner à quoi ça sert ... Effectivement, après recherche, il semble que se soit une redirection de sortie
Tout ça pour dire que même si on connait la définition des codes, les utiliser à bon escient, c'est autre chose ...
J'aimerais pouvoir suivre des cours sur la création de scripts pour avoir "la base du début du commencement"
Ca se fera certainement, si j'ai suffisamment de temps ...
Merci encore pour ton aide
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#18 Le 26/02/2010, à 19:51
- sputnick
Re : [RESOLU] Demande de script
Bon, faut que tu apprenne les bases de la base
en Anglais, bonne doc : http://abs.traduc.org/abs-fr/pt02.html
En Français un peu passé mais suffisant pour le tres basique : http://abs.traduc.org/abs-fr/pt02.html
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#19 Le 26/02/2010, à 19:54
- sputnick
Re : [RESOLU] Demande de script
if <condition>; then <commande(s)>; fi
c'est une condition ( if == si en Anglais ).
EXEC c'est une variable arbitraire où je place la sortie d'erreur de la commande ssh tout en l'éxécutant. Cela permet d'afficher le message d'erreur si le code de retour de la commande different de 0 ( erreur ) via la fenêtre zenity --error
Dernière modification par sputnick (Le 26/02/2010, à 19:55)
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
Pages : 1