Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/02/2010, à 18: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 tongue

Merci beaucoup pour vos propositions smile

Dernière modification par lynn (Le 26/02/2010, à 17:05)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#2 Le 24/02/2010, à 21: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, à 21: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 tongue ) car si le pc distant à bien la fenêtre de xmessage sur le bureau, le message sensé apparaitre dedans n'y est pas .... hmm
J'ai réessayé la commande toute seule dans un terminal et là, ça fonctionne... la solution ne doit pas être loin smile

Merci encore une fois wink

é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. hmm

Donc voila, il reste encore quelques bugs wink

Dernière modification par lynn (Le 24/02/2010, à 22:27)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#4 Le 25/02/2010, à 01:17

sputnick

Re : [RESOLU] Demande de script

Essaye en incorporant cette ligne :

echo "${message}" | ssh ${USER}@${HOST} 'DISPLAY=:0 /usr/bin/xmessage -file -'

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 25/02/2010, à 09: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, à 12:33

sputnick

Re : [RESOLU] Demande de script

Absolument


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#7 Le 25/02/2010, à 17:03

lynn

Re : [RESOLU] Demande de script

Merci sputnick

Ca fonctionne parfaitement big_smile

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 wink

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, à 18:57

sputnick

Re : [RESOLU] Demande de script

Bien sur, documente toi sur notify-send
zenity pourrait aussi t'intereser...


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#9 Le 25/02/2010, à 19: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, à 19: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>"'

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#11 Le 25/02/2010, à 20:06

Hizoka

Re : [RESOLU] Demande de script

si tu as besoin d'aide pour zenity, jette un oeil à ma signature wink


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#12 Le 25/02/2010, à 20:36

lynn

Re : [RESOLU] Demande de script

Merci Hizoka pour ton lien wink

@sputnick
Ca ne fonctionne pas hmm 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 hmm

Le tout est de trouver la bonne syntaxe et ce n'est pas chose facile quand on ne maitrise pas les codes de script neutral


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#13 Le 25/02/2010, à 21: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.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#14 Le 25/02/2010, à 21: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, à 01: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 ?


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#16 Le 26/02/2010, à 01: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.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#17 Le 26/02/2010, à 17:04

lynn

Re : [RESOLU] Demande de script

Salut sputnick,

Déjà merci pour tes éclaircissements wink
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"  tongue
Ca se fera certainement, si j'ai suffisamment de temps ...

Merci encore pour ton aide big_smile


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#18 Le 26/02/2010, à 20: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


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#19 Le 26/02/2010, à 20: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, à 20:55)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne