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 12/11/2006, à 11:37

atlas95

Aide pour script bash

Bonjour,

Je me prend la tete depuis 2j a essayer de faire des script bash mais vu que je n'y connais rien, j'arrive pas a venir exactement au résultat attendu.
Je m'explique:

Je voudrais un script pour connecter et faire toute les manip' pour avoir mon gps bluetooth fonctionnel, c'est à dire:
-une commande "rfcomm connect 4"
-le redemarrage du démon gpsd "/etc/init.d/gpsd restart"

et en faites je voudrais que si je lance le script de connexion 2 fois bah ca me le dise, ca fonctionne mais pas comme il faut, il faudrai se basé que sur des PID mais je me perd, en plus je sais pas trop comment expliquer erf.
Je vous colle les code, j'espere que vous comprendrais

#!/bin/bash

#GPS connect based on  HeadsetConnect 1.0 connect by Chrissss
# you need libnotify-bin to run this script

# Enter the bluetooth address of your headset here
RFCOMM=rfcomm4

# Localisation
TITLE="GPS"
CONNECTED="Connexion au GPS établie."
ALLREADYCONNECTED="Connexion déjà existante."
FAILED="Connexion au GPS échoué!"
BTLOGO=/usr/share/icons/gnome/48x48/stock/io/stock_bluetooth.png
# Now the magic
PID=`pidof gpsd`

if [ ! -e /tmp/bt_gps_connected ]
then
  rfcomm connect 4 &
   /etc/init.d/gpsd start
   
  if [ $PID ]
  then
    notify-send -i $BTLOGO -t 3000 "$TITLE" "$CONNECTED"
    touch /tmp/bt_gps_connected
  else
    notify-send -i gtk-dialog-warning -t 3000 "$TITLE" "$FAILED"
    killall gpsd
  fi
else
  notify-send  -u critical -i gtk-dialog-info -t 3000 "$TITLE" "$ALLREADYCONNECTED"
fi

La en faites j'utilise touch pour créer un fichier qui sert d'argument mais c'est pas terrible, il faudrai que toute mes commande de connexion soit valider avant de dire que je suis correctement connecter, genre si le rfcomm echoue bah que ca ne lance meme pas le demon et que ca me dise directement que la connexion a échouer....


Je colle mon script de deconnexion du gps qui lui aussi n'est pas au point.

#!/bin/bash

#GPS connect based on  HeadsetConnect 1.0 connect by Chrissss
# you need libnotify-bin to run this script

# Enter the bluetooth address of your headset here
RFCOMM=4

# Localisation
TITLE="GPS"
END="Connexion au GPS terminé."
FAILED="GPS non connecté!"
BTLOGO=/usr/share/icons/gnome/48x48/stock/io/stock_bluetooth.png

# Now the magic
PID=`pidof gpsd`

if [ -e /tmp/bt_gps_connected ]
  then
    gksudo rfcomm release $RFCOMM
    killall gpsd
    rm /tmp/bt_gps_connected
    notify-send -i $BTLOGO -t 3000 "$TITLE" "$END"
  else
    notify-send -i gtk-dialog-warning -t 3000 "$TITLE" "$FAILED"
  fi

Merci d'avance, je sais que je suis pas très clair n'hésiter pas a demander des infos.


Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net

Hors ligne

#2 Le 12/11/2006, à 11:50

abetsic

Re : Aide pour script bash

Tu peux utiliser la variable spéciale $? qui contient la valeur de retour du dernier programme executé pour savoir si la dernière commande s'est bien terminée ou bien faire quelque chose du genre :
RETURN_VAL=ton programme
à vérifier la syntaxe

Je ne sais pas si bash est un langage paresseux, mais déclarer PID=`pidof bidule` avant que bidule ne soit lancé donnera quelque chose de bon... fais des echo $PID avant et après l'execution de rfcomm voir si tu récupères bien le pid que tu souhaites..

Hors ligne

#3 Le 12/11/2006, à 11:57

atlas95

Re : Aide pour script bash

merci abetsic mais tu pourrais m'en dire encore plus ou me montrer...
Je me suis basé sur un bash déja existant pour faire ça et malgres que je comprends ce que tu dis je ne vois pas comment le mettre en place lol hmm

Ca donnerai ça? :

#!/bin/bash

#GPS connect based on  HeadsetConnect 1.0 connect by Chrissss
# you need libnotify-bin to run this script

# Enter the bluetooth address of your headset here
RFCOMM=rfcomm4

# Localisation
TITLE="GPS"
CONNECTED="Connexion au GPS établie."
ALLREADYCONNECTED="Connexion déjà existante."
FAILED="Connexion au GPS échoué!"
BTLOGO=/usr/share/icons/gnome/48x48/stock/io/stock_bluetooth.png
# Now the magic
PID=`pidof gpsd`

if [ ! -e /tmp/bt_gps_connected ]
then
  rfcomm connect 4 &
   /etc/init.d/gpsd start
   
  if [ ! $? |grep busy ]
  then
    notify-send -i $BTLOGO -t 3000 "$TITLE" "$CONNECTED"
    touch /tmp/bt_gps_connected
  else
    notify-send -i gtk-dialog-warning -t 3000 "$TITLE" "$FAILED"
    killall gpsd
  fi
else
  notify-send  -u critical -i gtk-dialog-info -t 3000 "$TITLE" "$ALLREADYCONNECTED"
fi

Dernière modification par atlas95 (Le 12/11/2006, à 12:02)


Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net

Hors ligne

#4 Le 12/11/2006, à 12:48

atlas95

Re : Aide pour script bash

Je m'embrouille avec les pidof etc, il faut que le rfcomm reussisse obligatoirement avant de passer au reste en faites, sinon il faut dire que ca a échoué.
J'essai de jouer avec les pidof rfcomm et gpsd mais ca ne marche toujours pas...
Je n'y arrive pas avec les return_val ou $? ....

Merci d'avance a celui qui pourras me macher un peu plus le travail lol hmm


Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net

Hors ligne

#5 Le 15/11/2006, à 18:34

atlas95

Re : Aide pour script bash

Toujours d'actualité, quelqu'un peut il m'aider svp smile ?

Merci d'avance


Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net

Hors ligne

#6 Le 15/11/2006, à 19:21

abetsic

Re : Aide pour script bash

Pour la manière return_val=`programme` j'ai regardé, ça marche pas, il faut utiliser $?
voilà à quoi je pense :

RFCOMM=rfcomm4

# Localisation
TITLE="GPS"
CONNECTED="Connexion au GPS établie."
ALLREADYCONNECTED="Connexion déjà existante."
FAILED="Connexion au GPS échoué!"
BTLOGO=/usr/share/icons/gnome/48x48/stock/io/stock_bluetooth.png
# Now the magic
PID=`pidof gpsd`

if [ ! -e /tmp/bt_gps_connected ]
then
  rfcomm connect 4 &
  RETURN_RFCOMM=$?
   /etc/init.d/gpsd start
  RETURN_GPSD=$?

  if [ RETURN_RFCOMM -ne 0 ]; then
    echo "erreur : rfcomm s\'est chié dessus et ne s\'est pas lancé!!!" 
    exit 1
  fi
  if [ RETURN_GPSD -ne 0 ]; then
    echo "erreur : gpsd s\'est chié dessus et ne s\'est pas lancé!!!" 
    exit 2
  fi
   
  if [ ! $? |grep busy ]
  then
    notify-send -i $BTLOGO -t 3000 "$TITLE" "$CONNECTED"
    touch /tmp/bt_gps_connected
  else
    notify-send -i gtk-dialog-warning -t 3000 "$TITLE" "$FAILED"
    killall gpsd
  fi
else
  notify-send  -u critical -i gtk-dialog-info -t 3000 "$TITLE" "$ALLREADYCONNECTED"
fi

Hors ligne

#7 Le 15/11/2006, à 23:18

atlas95

Re : Aide pour script bash

Merci smile

J'ai des petites erreurs :

$ gpsconnect
Starting GPS daemon: gpsd.
/usr/local/bin/gpsconnect: line 25: [: RETURN_RFCOMM : expression de type 'entier' attendue
/usr/local/bin/gpsconnect: line 29: [: RETURN_GPSD : expression de type 'entier' attendue
/usr/local/bin/gpsconnect: line 34: [: "]" manquant
grep: ]: Aucun fichier ou répertoire de ce type
gpsd(4386): Opération non permise
gpsd: aucun processus tué

Dernière modification par atlas95 (Le 15/11/2006, à 23:19)


Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net

Hors ligne

#8 Le 15/11/2006, à 23:30

abetsic

Re : Aide pour script bash

Ouais, j'ai oublié les $ quand on utilise la variable, donc dans les tests :
$RETURN_RFCOMM -ne 0 à la place de RETURN_FRCOMM -ne 0
et pareil pour l'autres variable

Hors ligne

#9 Le 15/11/2006, à 23:36

atlas95

Re : Aide pour script bash

$ gpsconnect
Starting GPS daemon: gpsd.
/usr/local/bin/gpsconnect: line 34: [: "]" manquant
grep: ]: Aucun fichier ou répertoire de ce type

Encore ceci ! smile
Merci beaucoup de ton aide!


Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net

Hors ligne

#10 Le 15/11/2006, à 23:51

abetsic

Re : Aide pour script bash

Ben je comprends pas ce que tu veux faire avec cette ligne :

if [ ! $? |grep busy ]

c'est même pas syntaxiquement correcte... et $? ne contiendra que la valeur de retour de la commande précédente executée dans ton script...

Je ne connais pas ton script ni ce que tu veux faire avec, mais avec ce que je t'ai donné tu dois être capable de finir ce que tu souhaites.

Hors ligne