IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Bash : dialoguer avec un serveur


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Par défaut Bash : dialoguer avec un serveur
    Bonsoir, j'ai réussi à envoyer des mails via le smtp de gmail en lignes de commandes et je cherche à écrire un script bash qui me permet au moins de m'identifier auprès du serveur.

    La première commande est : openssl s_client -crlf -connect smtp.gmail.com:465
    Puis ensuite on peux dialoguer avec le serveur avec les "commandes" EHLO, AUTH LOGIN, etc

    Comment faire dans mon script bash pour automatiser l'écriture de ces commandes dans mon shell ? Est-ce possible ?

    Cordialement,

    Nudge

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Salut
    Normalement la redirection de flux entrant renvoyé sur openssl devrait le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat << _EOT_ | openssl s_client -crlf -connect smtp.gmail.com:465
    EHLO
    AUTH LOGIN
    etc
    _EOT_
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut re
    salut,le script s'arrete a la premiere ligne,svp aidez moi merci infiniment...

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Et c'est un peu normal puisqu'il n'y a qu'une ligne...

    Par contre sans message d'erreur, c'est moins facile de t'aider.
    Quel message?

    PS: pourquoi réinventer la roue? Tu n'es pas le premier internaute qui cherche à faire cela.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    PS: pourquoi réinventer la roue? Tu n'es pas le premier internaute qui cherche à faire cela.
    Surtout un an et demi après avec un problème posté par un autre intervenant que le PO...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bien vu

    Allez! Je retourne apprendre à lire!

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut re
    bonjour et merci pour vos encouragements,j'ai deja un script qui marche bien,le code ci dessus me parait plus elegant j'ai voulu l'essayer mais le serveur
    ne repond pas a EHLO google
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    cat << _EOT_ | openssl s_client -crlf -connect smtp.gmail.com:465
    EHLO google
    _EOT_

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nano3000 Voir le message
    bonjour et merci pour vos encouragements,j'ai deja un script qui marche bien,le code ci dessus me parait plus elegant j'ai voulu l'essayer mais le serveur
    ne repond pas a EHLO google
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    cat << _EOT_ | openssl s_client -crlf -connect smtp.gmail.com:465
    EHLO google
     
    _EOT_
    Oui ben avant de mettre un truc en script il faut d'abord vérifier que le truc fonctionne. T'as tenté un openssl et de taper "EHLO" à la main pour voir la réponse qu'il te fait ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Oui ben avant de mettre un truc en script il faut d'abord vérifier que le truc fonctionne. T'as tenté un openssl et de taper "EHLO" à la main pour voir la réponse qu'il te fait ???
    bonjour,oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl s_client -crlf -connect smtp.gmail.com:465
    marche bien puis
    a la mano marche aussi, c'est le code que vous avez poste qui marche pas

  10. #10
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par nano3000 Voir le message
    bonjour et merci pour vos encouragements,j'ai deja un script qui marche bien,le code ci dessus me parait plus elegant j'ai voulu l'essayer mais le serveur
    ne repond pas a EHLO google
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    cat << _EOT_ | openssl s_client -crlf -connect smtp.gmail.com:465
    EHLO google
     
    _EOT_
    Ce code fonctionne bien chez moi. Le problème vient probablement d'une histoire de timing car l'entrée standard est fermée sans attendre la réponse du serveur.

    Je te conseille de regarder du côté de la command expect pour scripter ce type de dialogue.

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 671
    Par défaut
    UUOC !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    openssl s_client -crlf -connect smtp.gmail.com:465 <<EOT
    EHLO google
    EOT
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut re
    @jlliagre: merci d'avoir repondu,concernant le timing vous aviez peut etre raison,l'utilisation d'expect peut resoudre le probleme,mais pourquoi l'utiliser si on peut faire simple...
    @N_BaH: merci d'avoir repondu,mais votre code ne marche pas non plus

    je garderai donc le code qui marche pour moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ( echo "EHLO google"; sleep 1) | openssl s_client -crlf -connect smtp.gmail.com:465
    merci a vous

  13. #13
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par nano3000 Voir le message
    @jlliagre: merci d'avoir repondu,concernant le timing vous aviez peut etre raison,l'utilisation d'expect peut resoudre le probleme,mais pourquoi l'utiliser si on peut faire simple...
    Il faut en effet rechercher la solution la plus simple mais choisir une solution "trop simple" pour être fiable ou suffisamment efficace n'est pas forcément une bonne idée.

    "expect" attends le temps qu'il faut et pas plus.

    "sleep" attends le temps spécifié qui est soit trop court et ça ne marche pas, soit trop long aux dépens des performances du script.

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    UUOC !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    openssl s_client -crlf -connect smtp.gmail.com:465 <<EOT
    EHLO google
    EOT
    En effet, pourquoi je ferais simple quand je peux...
    +1

    Citation Envoyé par nano3000 Voir le message
    @jlliagre: merci d'avoir repondu,concernant le timing vous aviez peut etre raison,l'utilisation d'expect peut resoudre le probleme,mais pourquoi l'utiliser si on peut faire simple...
    @N_BaH: merci d'avoir repondu,mais votre code ne marche pas non plus

    je garderai donc le code qui marche pour moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ( echo "EHLO google"; sleep 1) | openssl s_client -crlf -connect smtp.gmail.com:465
    Bizarre que ce code fonctionne alors qu'il est fondamentalement incorrect. En effet, tu envoies le texte affichée par sleep 1 (autrement dit "rien") à openssl. Et bizarre aussi qu'il fonctionne alors que finalement il fait exactement la même chose que les autres, à savoir juste envoyer la chaine "EHLO google" à openssl.
    Peut-être que le sleep laisse à openssl le temps suffisant pour s'initialiser correctement...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bizarre que ce code fonctionne alors qu'il est fondamentalement incorrect. En effet, tu envoies le texte affichée par sleep 1 (autrement dit "rien") à openssl.
    Le code envoie "EHLO" puis attends une seconde avant de fermer le flux reçu par openssl. Il n'y a rien de fondamentalement incorrect la dedans.
    Et bizarre aussi qu'il fonctionne alors que finalement il fait exactement la même chose que les autres, à savoir juste envoyer la chaine "EHLO google" à openssl.
    Peut-être que le sleep laisse à openssl le temps suffisant pour s'initialiser correctement...
    Ben oui, c'est l'hypothèse que j'ai émise hier et que le changement de comportement confirme. Le code ne fait donc pas "exactement la même chose". Il n'est cependant pas fiable.

  16. #16
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut re
    bonjour,ce qui est vraiment bizzare est que le code cite plus haut fonctionne chez vous,et pas chez moi pourtant je l'ai essaye sur d'autres machines distantes (ubuntu et debian) ..

  17. #17
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nano3000 Voir le message
    bonjour,ce qui est vraiment bizzare est que le code cite plus haut fonctionne chez vous,et pas chez moi pourtant je l'ai essaye sur d'autres machines distantes (ubuntu et debian) ..
    Si c'est juste le sleep qui fait la différence (à savoir effectivement attendre avant de fermer le flux input de openssl), alors celui que j'avais proposé devrait fonctionner aussi pourvu qu'on l'adapte...
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (
    cat << _EOT_
    EHLO google
    _EOT
    sleep 1
    ) | openssl ...
    ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  18. #18
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 671
    Par défaut
    un sous-shell est-il indispensable ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    { cat << _EOT_
    EHLO google
    _EOT
    sleep 1;} | openssl ...
    ne fait-il pas la même chose ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    oui maintenant ca marche avec ces 2 derniers codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (
    cat << _EOT_
    EHLO google
    _EOT_
    sleep 1
    ) | openssl ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    { cat << _EOT_
    EHLO google
    _EOT_
    sleep 1;} | openssl ...
    c'est de cette façon qu'il faut coder pour bien interagir avec le flux input d'openssl

    merci a vous

  20. #20
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par nano3000 Voir le message
    c'est de cette façon qu'il faut coder pour bien interagir avec le flux input d'openssl
    Pas vraiment, ce n'est ni fiable, ni efficace.

    Voici une manière de coder ça avec la commande expect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    expect -c '
    spawn openssl s_client -crlf -connect smtp.gmail.com:465
    set timeout 10
    expect "220 " send "EHLO google\r"
    expect "250 " send "QUIT\r"
    expect eof'

Discussions similaires

  1. Dialoguer avec un serveur de socket depuis forms
    Par phb07 dans le forum Forms
    Réponses: 7
    Dernier message: 24/10/2008, 16h37
  2. Dialogue avec un serveur via TELNET
    Par malayika dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 04/10/2008, 16h15
  3. Mauvais dialogue avec le serveur DHCP
    Par ALT dans le forum Windows XP
    Réponses: 19
    Dernier message: 06/12/2007, 13h22
  4. dialoguer avec un serveur RADIUS
    Par jypee76 dans le forum Développement
    Réponses: 4
    Dernier message: 12/08/2003, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo