Discussion: Soucis script shell

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut Soucis script shell

    Hello tout le monde,

    J ai un petit soucis par rapport a une certaine notion du script shell.

    mon projet consiste a creer un simple script shell qui me permet de connecter mon rpi3 a mon objet connecte par BLE or apres aue mon script soit rentre dans linterface bluetooth grace a la commande "gatttool -I" mon script est incapable dexecuter certaine commande aue je peux realiser sans probleme a la main, avez vous des idees sur la nature du probleme ? et surtout comment le resoudre
    De bons screens shots valent mieux que de grands discours voici ma situation

    Nom : 2017-04-07-091125_1824x984_scrot.png
Affichages : 40
Taille : 199,1 Ko

    Nom : 2017-04-07-091628_1824x984_scrot.png
Affichages : 37
Taille : 215,7 Ko

    see youuuuuu

  2. #2
    Expert éminent
    Avatar de Auteur
    Profil pro
    Inscrit en
    avril 2004
    Messages
    6 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 6 660
    Points : 8 850
    Points
    8 850

    Par défaut

    bonjour,

    malheureusement sur les copies d'écran que tu as postées, on ne voit rien. Peux-tu copier les messages dans ta réponse ? Tu les encadres de la balise code (bouton # dans l'éditeur). Peut-être qu'il serait utile de poster aussi ton script, si c'est possible ?
    Merci

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    !/bin/bash
    
    sudo apt-get update
    
    sudo hciconfig -a   
                       
    gatttool -I 
    
    connect C4:BE:84:70:6C:04                 //le script n est pas capable dexcuter cette commande
    
    char-write-cmd 0x24 01
    
    char-read-hnd 0x21


    sur la console j obtient

    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
    ./essai.sh
    ./essai.sh: line 1: !/bin/bash: No such file or directory
    Hit http://archive.raspberrypi.org jessie InRelease
    Hit http://mirrordirector.raspbian.org jessie InRelease
    Hit http://archive.raspberrypi.org jessie/main armhf Packages                      
    Hit http://mirrordirector.raspbian.org jessie/main armhf Packages
    Hit http://mirrordirector.raspbian.org jessie/contrib armhf Packages                           
    Hit http://mirrordirector.raspbian.org jessie/non-free armhf Packages                          
    Hit http://archive.raspberrypi.org jessie/ui armhf Packages    
    Hit http://mirrordirector.raspbian.org jessie/rpi armhf Packages                                
    Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en_GB                             
    Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en                                
    Ign http://mirrordirector.raspbian.org jessie/main Translation-en_GB          
    Ign http://mirrordirector.raspbian.org jessie/main Translation-en             
    Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en_GB      
    Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en
    Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en_GB
    Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en   
    Ign http://archive.raspberrypi.org jessie/main Translation-en_GB   
    Ign http://archive.raspberrypi.org jessie/main Translation-en
    Ign http://archive.raspberrypi.org jessie/ui Translation-en_GB                
    Ign http://archive.raspberrypi.org jessie/ui Translation-en                   
    Reading package lists... Done                                                                               
    hci0:	Type: BR/EDR  Bus: UART
    	BD Address: B8:27:EB:C8:B5:C8  ACL MTU: 1021:8  SCO MTU: 64:1
    	UP RUNNING 
    	RX bytes:2633 acl:10 sco:0 events:137 errors:0
    	TX bytes:3151 acl:15 sco:0 commands:95 errors:0
    	Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
    	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
    	Link policy: RSWITCH SNIFF 
    	Link mode: SLAVE ACCEPT 
    	Name: 'raspberrypi'
    	Class: 0x000000
    	Service Classes: Unspecified
    	Device Class: Miscellaneous, 
    	HCI Version: 4.1 (0x7)  Revision: 0xb6
    	LMP Version: 4.1 (0x7)  Subversion: 0x2209
    	Manufacturer: Broadcom Corporation (15)
    
    [                 ][LE]>
    donc en gros des aue jarrive au balise LE le script ne fonctionne plus

    edit : en cherchant un peu jai peut etre une piste, est il possible d ecrire ces 2 lignes ensemble

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gatttool -i hci0 -b C4:BE:84:70:6C:04 --char-write -a 0x24 -n 01
    gatttool -i hci0 -b C4:BE:84:70:6C:04 --char-read -a 0x21
    c est dire mettre a 1 la variable 0x24 du protocole et sans refaire un gatttool faire un read de la variable 0x21 de ce meme protocole

    Vous laurez compris surement mettre a 1 la variable 0x24 active la sortie 0x21 pour avoir la mesure d une temperature
    le probleme c est de le faire sur une seule ligne

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 324
    Points : 8 648
    Points
    8 648
    Billets dans le blog
    1

    Par défaut

    Je présume que l'option -I te fait passer en mode interactif et que les lignes de ton script ne sont pas des commandes pour ton shell mais ce que tu souhaites taper en mode interactif ?

    Si oui, il faut comprendre que ton script exécute des commandes mais ne passe à la suivante que lorsque la précédente est terminée. Et tu ne souhaites pas ici exécuter des commandes mais simuler tes entrées claviers.

    Deux solutions:
    1) ne pas utiliser le mode interactif. Faut fouiller le manuel de ta commande.
    2) utiliser une syntaxe comme https://en.m.wikipedia.org/wiki/Here...nt#Unix_shells

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Merci beaucoup pour l aide !!!
    j ai un soucis pour manipuler une chaine,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    !/bin/bash
    
    #sudo apt-get update
    #sudo hciconfig -a
    gatttool -i hci0 -b C4:BE:84:70:6C:04 --char-write -a 0x24 -n 01
    var=$(gatttool -t hci0 -b C4:BE:84:70:6C:04 --char-read --handle 0x21| cut -d":$
    
    if [ "$var" = "00 00 00 00" ]
    then
      echo "6999"
    fi
    
    echo ${#var}
    echo $var

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ./essai.sh
    ./essai.sh: line 1: !/bin/bash: No such file or directory
    13
    00 00 00 00
    la fonction me dit que j ai 13 caractere or je n'en ai que 11 (8 '0' et 3 ' ')
    Je voudrais donc comment savoir je pourrais lire chaque caractere de la chaine de facon unique, un truc du genre "echo $var[0]"

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 324
    Points : 8 648
    Points
    8 648
    Billets dans le blog
    1

    Par défaut

    Voici un exemple plus simple :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var="00 00 00 00"
    echo $var
    echo ${#var}
    Résultat :
    00 00 00 00                                                                                                                                                                                                                                   
    11
    Il y a donc un problème dans ton script. Peut-être même plusieurs.

    Quelques remarques :
    - A la ligne 1, il manque un # d'où le message à l'exécution pour te dire qu'il ne trouve pas bash.
    - J'ai ensuite un doute sur la ligne 6 :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    var=$(gatttool -t hci0 -b C4:BE:84:70:6C:04 --char-read --handle 0x21| cut -d":$
    Tu ouvres une parenthèse après le $ mais tu ne la refermes visiblement pas. De même, tu ne refermes pas le " de ton cut.
    - Enfin, ton test ne devrait-il pas utiliser == au lieu de = ?

Discussions similaires

  1. Petit souci dans un petit script Shell
    Par Khlomn dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 30/11/2011, 22h07
  2. [JSP] script shell
    Par goolix dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/08/2004, 09h08
  3. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

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