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 :

Envoi de sms avec bash


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Points : 13
    Points
    13
    Par défaut Envoi de sms avec bash
    Bonsoir,
    Je voudrai faire une remontée d'alarme via des sms.
    J'ai trouvé le script suivant pour envoyer des sms en bash mais je n'arrive pas à le faire fonctionner.
    Voici le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    #!/bin/sh
    #
    # Sample script to send an SMS email notifcation to aql's HTTP gateways
    # Username and password associated with aql account
    username=
    password=
    number=
    message="Test message"
    if [ $# -eq 0 ]; then
    echo "Usage: $0 -n [number] -m [message] -u [username] -p [password]";
    echo "";
    echo "[number] = SMS number to send message to";
    echo "[message] = Text of message you want to send";
    echo "[username] = Username assocated with aql account";
    echo "[password] = Password assocated with aql account";
    echo " Both the username and password options are optional and";
    echo " override the account credentials defined in this script.";
    echo "";
    exit 1;
    fi
    # Get command line arguments
    while [ "$1" != "" ] ; do
    case $1
    in
    -n)
    # Get the SMS number that we should send message to
    number=$2;
    shift 2; ;;
    -m)
    # Get the message we should send
    message=$2;
    shift 2; ;;
    -u)
    # Get the username
    username=$2;
    shift 2; ;;
    -p)
    # Get the password
    password=$2;
    shift 2; ;;
    *)
    echo "Unknown option: $1"
    exit 1; ;;
    esac
    done
    message_sent_ok=0;
    for server in gw1 gw11 gw2 gw22; do
    RESPONSE=`curl -s -d username=$username -d password=$password -d to_num=$number -d
    message="$message" http://$server.aql.com/sms/postmsg.php`
    if [ "$?" -eq "0" ]; then
    case $RESPONSE
    in
    AQSMS-OK)
    # Message was queued ok
    mesage_sent_ok=1;
    echo "Message posted OK to HTTP gateway $server"
    exit 0; ;;
    AQSMS*)
    # Some kind of fatal error occurred
    echo "Fatal error received from HTTP gateway $server: $RESPONSE"
    exit 1; ;;
    *)
    # No response or invalid response
    ;;
    esac
    fi
    done
    voici comment je l'exécute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bash alarm -n numéro -m "attaque réseau!"
    mais ça ne marche pas j'ai ces erreurs là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    alarm: line 49: curl: command not found
    alarm: line 50: http://gw1.aql.com/sms/postmsg.php: No such file or directory
    alarm: line 49: curl: command not found
    alarm: line 50: http://gw11.aql.com/sms/postmsg.php: No such file or directory
    alarm: line 49: curl: command not found
    alarm: line 50: http://gw2.aql.com/sms/postmsg.php: No such file or directory
    alarm: line 49: curl: command not found
    alarm: line 50: http://gw22.aql.com/sms/postmsg.php: No such file or directory
    comment je fais?
    Merci

  2. #2
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Bonjour,

    il te dit: curl: command not found

    As tu la commande curl ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    Par défaut
    pourquoi un shebang sh si tu veux utiliser bash ?
    pourquoi appeler le script avec bash si le script à un shebang sh ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RESPONSE=`curl -s -d username=$username -d password=$password -d to_num=$number -d
    message="$message" http://$server.aql.com/sms/postmsg.php`
    c'est une erreur de copie les alinéas ?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Points : 13
    Points
    13
    Par défaut
    Tu veux qu'un script sh ne peux pas être appelé via bash?
    Bon ce n'est qu'un détail, j'utiliserai sh à la place de bash si c'est le cas.
    j'ai juste deux problèmes au niveau du scritp:
    je ne sais pas à quoi correspond la variable "server" , ni coment remplacer la ligne avec http...

  5. #5
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Citation Envoyé par supcomingenieur Voir le message
    Tu veux qu'un script sh ne peux pas être appelé via bash?
    Bon ce n'est qu'un détail, j'utiliserai sh à la place de bash si c'est le cas.
    j'ai juste deux problèmes au niveau du scritp:
    je ne sais pas à quoi correspond la variable "server" , ni coment remplacer la ligne avec http...
    La variable $server va être successivement assignée avec les valeurs de la boucle for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for server in gw1 gw11 gw2 gw22; do
    ...
    done
    Ici gw1, gw11, gw2 et gw22

    Je pense que gw est un acronyme de Gateway. A toi de te renseigner auprès de l'admin de la plateforme pour connaitre ces gateways.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Points : 13
    Points
    13
    Par défaut
    Oui ça je l'ai compris, ce que je veux dire. C'est que dans mon cas je lui donne quoi comme valeur (adresse ip ? url ?).
    Sinon est ce que tu connais un exemple d'envoie de sms avec linux?
    Merci

  7. #7
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Citation Envoyé par supcomingenieur Voir le message
    Oui ça je l'ai compris, ce que je veux dire. C'est que dans mon cas je lui donne quoi comme valeur (adresse ip ? url ?).
    Sinon est ce que tu connais un exemple d'envoie de sms avec linux?
    Merci
    Bonjour,
    Quand on fait du curl, on essaye de valider le scénario en utilisant:
    1) un navigateur
    2) un proxy ou un plugin qui affiche TOUS les appels POST/GET envoyés par le navigateur.

    Dans ton cas, si tu veux envoyer des SMS via une URL, tu ouvres ton navigateur et tu renseigne les champs nécessaires.

    Tu auras la trace de tous les appels et celà te permettra d'écrire ton script correctement.

    Sinon tu essayes la méthode essai/erreur avec curl OU mieux tu contactes ton ADMIN ou le responsable de la plateforme SMS.

    Y a pas de doc dans ta boite ?

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Points : 13
    Points
    13
    Par défaut
    Non je suis en stage, on ne m'avait rien fourni.
    ce script je l'ai trouvé sur google.
    J'en ai trouvé un autre mais pour envoyer des mail au lieu des sms. C'est pas mal non plus.
    J'ai testé le script mais il me manque le paquet sendmail-bin.
    J'essai de l'installer (.deb) mais j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sendmail-bin entre en conflit avec mail-transport-agent
      «*lsb-invalid-mta*» fournit «*mail-transport-agent*» et est présent ainsi de  «*installé*».
    dpkg*: erreur de traitement de sendmail-bin_8.14.4-2ubuntu2_i386.deb (--install)*:
     paquets en conflit - sendmail-bin non installé
    Des erreurs ont été rencontrées pendant l'exécution*:
     sendmail-bin_8.14.4-2ubuntu2_i386.deb
    merci de ton aide

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par supcomingenieur Voir le message
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    ...
    # Get command line arguments
    while [ "$1" != "" ] ; do
    case $1
    in
    -n)
    # Get the SMS number that we should send message to
    number=$2;
    shift 2; ;;
    -m)
    # Get the message we should send
    message=$2;
    shift 2; ;;
    -u)
    # Get the username
    username=$2;
    shift 2; ;;
    -p)
    # Get the password
    password=$2;
    shift 2; ;;
    *)
    echo "Unknown option: $1"
    exit 1; ;;
    esac
    done
    Salut

    Tu as getopts (interne) et getopt (outil externe) qui te permettent de gérer les options. Non seulement ils savent gérer une option de type -l -a mais aussi -la.
    Et dans le cas de valeurs associées, comme -n 5 par exemple, ils savent aussi gérer le cas -n5 (ce que ne fait pas ton code)
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    while getopts :n:m:u:p: opt
    do
    	case $opt in
    		n)
    			# Get the SMS number that we should send message to
    			number=$OPTARG
    			;;
    		m)
    			# Get the message we should send
    			message=$OPTARG
    			;;
    		u)
    			# Get the username
    			username=$OPTARG
    			;;
    		p)
    			# Get the password
    			password=$OPTARG
    			;;
    		*)
    			echo "Unknown option: -$OPTARG"
    			exit 1
    	esac
    done
    shift $(($OPTIND-1))

    Et getopt sait même gérer les options longues
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    opt=$(getopt -o :n:,m:,u:,p: --long number:,message:,username:,password: -- $*)
    if test $? -ne 0; then
    	echo "Unknown option: $1"
    	exit 1
    fi
    set -- $opt
    while true; do
    	case $1 in
    		-n|--number)
    			# Get the SMS number that we should send message to
    			shift
    			number=$1
    			;;
    		-m|--message)
    			# Get the message we should send
    			shift
    			message=$1
    			;;
    		-u|--username)
    			# Get the username
    			shift
    			username=$1
    			;;
    		-p|--password)
    			# Get the password
    			shift
    			password=$1
    			;;
    		--)
    			# Fin des options
    			break
    			;;
    	esac
    	shift
    done
    Ces deux codes acceptent les options de ce type: -n5 ou bien -n 5. Le second autorise en plus --number=5...

Discussions similaires

  1. envoi de sms avec smpp
    Par lamydream dans le forum Android
    Réponses: 0
    Dernier message: 03/06/2012, 19h17
  2. problème d'envoi des sms avec Linux
    Par ja1985va dans le forum Linux
    Réponses: 20
    Dernier message: 05/08/2011, 15h56
  3. Envoi de SMS avec VB6
    Par siatou yague dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/06/2010, 12h59
  4. [PDA] Envoi de SMS avec OBEX
    Par basnifo dans le forum Périphériques
    Réponses: 1
    Dernier message: 07/06/2006, 10h43

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