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 :

Script shell Foscam


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Par défaut Script shell Foscam
    Bonjour

    J'essaye de faire un script qui me permet d'activer ou désactiver l'alarme sur ma foscam.

    Mon problème est que j'aurais voulu obtenir un status, j'ai donc utilisé une variable mais je n'arrive pas récupérer son état. Pourtant il me semble que quand on la declare elle est fonctionnelle dans tout le script !

    si quelqu'un veut bien m'aider merci par avance

    mon 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
     #!/bin/sh 
    ### BEGIN INIT INFO 
    # Provides: foscam
    # Required-Start: $remote_fs $syslog 
    # Required-Stop: $remote_fs $syslog 
    # Default-Start: 2 3 4 5 
    # Default-Stop: 0 1 6 
    # Short-Description: Start daemon at boot time 
    # Description: Enable service provided by daemon. 
    ### END INIT INFO 
     
     
    case "$1" in 
     
    stop) 
     
    	# stop motion foscam 
    	echo "Motion stop" 
    	curl "http://192.168.1.2:88/cgi-bin/CGIProxy.fcgi?usr=USER&pwd=PASSWORD&cmd=setMotionDetectConfig&isEnable=0"
    	etat=off
    	;; 
     
     
    start) 
    	# start motion foscam 
    	echo "motion start"
    	curl "http://192.168.1.2:88/cgi-bin/CGIProxy.fcgi?usr=USER&pwd=PASSWORD&cmd=setMotionDetectConfig&isEnable=1&snapInterval=2&sensitivity=1&linkage=8&triggerInterval=0&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=1023&area1=1023&area2=1023&area3=1023&area4=1023&area5=1023&area6=1023&area7=1023&area8=1023&area9=1023&1419233249358"	
    	etat=on
    	;;
     
    status)
      	echo $etat 
        	;;
     
    esac

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    les variables ne sont pas persistantes : quand le script se termine, elles n'existent plus.
    il faudrait passer une "commande" via curl pour interroger l'état l'alarme sur ma foscam.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Par défaut
    Merci pour votre reponse

    Donc la variable n'est pas persistante, je suppose que c'est pour sa que je n'est aucune valeur quand je l'interroge.

    Pour la commande curl c'est pas possible je n'est pas d'adresse qui retourne l'état d'alarme de la foscam.

    j'aurais souhaité avoir un status en fonction de la dernière commande exécutée dans le script ( start ou stop). Comme avec une variable c'est pas possible j'ai pensé que je pouvais peut-être faire sa avec un fichier pid qui se créerait quand j'exécute start et qui se supprimerai quand je fais stop mais je ne sais pas comment faire cela.

    Je pourrai recuperer le status de cette maniere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    status)
      	if [ -e /var/run/foscam.pid ]; then 
     	echo "on"
       	else echo "off"
     	fi 
        	;;

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    Citation Envoyé par pierre2302 Voir le message
    Donc la variable n'est pas persistante, je suppose que c'est pour sa que je n'est aucune valeur quand je l'interroge.
    c'est pour ça ! et je n'ai du verbe avoir...
    Rhôôô la la...



    Sinon, ton problème est très mal posé : quand on regarde ton script du premier post, on se rend compte que ta variable "état" ne fait que refléter le mode de lancement du script, il n'y a aucun test pour influer sur l'état de cette variable, donc tu connais déjà cet état lorsque tu appelles le script !

    Par ailleurs, tu dis que tu voudrais récupérer cette valeur, mais tu ne dis pas où ni comment (autre script ? Programme binaire ?). Car il peut être très facile de récupérer la valeur de sortie d'un script (en utilisant exit valeur), mais ça dépend de comment on s'y prend.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Par défaut
    Lol désolé pour l'orthographe promis maintenant j'essaye de ne plus faire d'erreur. Pour mon script je viens de faire quelque chose comme ci-dessous qui me retourne en quelque sorte la dernière commande exécutée, par contre je pense que c'est aussi sale que mon écriture :-|

    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
    #!/bin/sh 
    ### BEGIN INIT INFO 
    # Provides: foscam
    # Required-Start: $remote_fs $syslog 
    # Required-Stop: $remote_fs $syslog 
    # Default-Start: 2 3 4 5 
    # Default-Stop: 0 1 6 
    # Short-Description: Start daemon at boot time 
    # Description: Enable service provided by daemon. 
    ### END INIT INFO 
     
     
    case "$1" in 
     
    stop) 
    	# stop motion foscam 
    	echo "Motion stop" 
    	curl "http://192.168.1.2:88/cgi-bin/CGIProxy.fcgi?usr=user&pwd=password&cmd=setMotionDetectConfig&isEnable=0"
    	rm /var/run/foscam
     
    	;; 
     
    start) 
    	# start motion foscam 
    	echo "motion start"
    	curl "http://192.168.1.2:88/cgi-bin/CGIProxy.fcgi?usr=user&pwd=password&cmd=setMotionDetectConfig&isEnable=1&snapInterval=2&sensitivity=1&linkage=8&triggerInterval=0&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=1023&area1=1023&area2=1023&area3=1023&area4=1023&area5=1023&area6=1023&area7=1023&area8=1023&area9=1023&1419233249358"	
    	> /var/run/foscam
    	;;
     
    status)
      	if [ -e /var/run/foscam ]; then 
     	echo "on"
       	else echo "off"
     	fi 
        	;;

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    Citation Envoyé par Jipété Voir le message
    [...] tu voudrais récupérer cette valeur, mais tu ne dis pas où ni comment (autre script ? Programme binaire ?).

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    à vue de pied j'aurais tendance à regarder du coté de l'API de la foscam (pdf), et notamment du coté de getMotionDetectConfig

    edit: quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    status=$(curl -s 'http:/192.168.1.2:88/cgi-bin/CGIProxy.fcgi?usr=USER&pwd=PASSWORD&cmd=getMotionDetectConfig' | sed -e '/isEnable/!d;s/ *<.\?isEnable>//g')
    la commande renverra 0 ou 1

Discussions similaires

  1. Script shell
    Par anzar dans le forum Linux
    Réponses: 4
    Dernier message: 03/12/2004, 14h41
  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