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

Linux Discussion :

[script bash] Executer un script en invisible


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut [script bash] Executer un script en invisible
    bonjour tt le monde,

    Voilà, j'ai créer actuellement un script un shell - bash.
    mais le problème c'es tque celui ci bloque l'utilisation du poste durant son execution.

    Ce que j'essai de faire, c'est de le faire passer d'une en service pour que l'ont ne soit pas obligé de se logguer (ca, c'est fait dans les rc*.d), et de deux que ce script passe en une sorte de tache de fond, tel qu'apache ou squid par exemple, pour ne pas me bloquer (car a l'avenir, ce script devra tourner en permanence.

    voici mon script pour vous donner une idée de ce qu'il réalise, dès fois que ca vous aiderais.

    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
    #!/bin/sh
     
    precedent=0
    pingErr_1=1
    pingErr_2=1
     
    while [[ 1 -eq 1 ]]
    do
            ping -c 1 10.0.0.11 -I eth1
            pingErr_1=$?
            precedent=1
            if [[ pingErr_1 -eq 0 ]]
            then
                    if [[ precedent -ne 1 ]]
                    then
                            echo ".11 MARCHE !!!"
                            route del default
                            route add default gw 10.0.0.11 eth1
                            sleep 1m
                    fi
                    [[ precedent -eq 1 ]] && sleep 1m
            else
                    echo ".11 MARCHE PAS !!!"
                    ping -c 1 10.0.0.21 -I eth1
                    pingErr_2=$?
                    if [[ pingErr_2 -eq 0 ]]
                    then
                            echo ".21 MARCHE !!!"
                            if [[ precedent -ne 2 ]]
                            then
                                    route del default
                                    route add default gw 10.0.0.21 eth1
                            fi
    	                precedent=2
                            while [[ pingErr_1 -ne 0 ]]
                            do
                                    ping -c 1 10.0.0.11 -I eth1
                                    pingErr_1=$?
                                    precedent=1
                                    if [[ pingErr_1 -eq 0 ]]
                                    then
                                            route del default
                                            route add default gw 10.0.0.11 eth1
                                    fi
                            done
     
                    else
                            echo "RIEN NE MARCHE !!!"
                    fi
            fi
    done
    si vous me dîtes que le shell ne le fait pas, mais que le C ou autre langage, oui, aucun problème je referai mon code.


    merci d'avance.

    --
    L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
    GLOUGLOU ...

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Points : 399
    Points
    399
    Par défaut
    Bonjour,
    si j'ai compris ton script, celui-ci ping en permanence une passerelle principale, et switch sur celle de secours en cas de problème. Il rétabliera la passerelle principale en cas de reprise du serveur. ( un petit sleep dans la deuxième boucle de ping pour le rétablissement, histoire de pas congestionner le réseau? )
    Puisque tu as fait en sorte que ton script soit exécutable par rc, pourquoi tu n'inclus pas le fichier de fonctions telles que daemon(), histoire de passer ton exécution en arrière plan?

    L'idée, c'est un script de management du "service", et l'autre est le script du "service".

    S. Desbois

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    oui voila.

    c'et effectivement ce qu'on m'as conseillé sur le forum d'ubuntu, avec cet exemple de code.

    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
    #!/bin/sh
     
    TONSCRIPT=tonscript.sh
     
    case "$1" in 
    'start')
             echo 'démarrage de mon script de changement de route'
             nohup /usr/local/bin/$TONSCRIPT &
             ;;
    'stop')
             echo 'arrêt de mon script de changement de route'
             ps -ef |grep $TONSCRIPT | grep -v grep | while read x brol; do kill -9 $x; done
             ;;
    *)
             echo "Syntaxe: $0 { start | stop }"
             exit 1
             ;;
    esac
    exit 0

  4. #4
    Membre régulier Avatar de COGAN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 109
    Points : 109
    Points
    109
    Par défaut
    Et pourquoi pas un lancement dans "/etc/inittab" ?

Discussions similaires

  1. Redirection sortie standard pour script bash executé en crontab
    Par natha_poup dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 06/03/2014, 13h03
  2. Linux executer un script bash avec php
    Par xunil2003 dans le forum Langage
    Réponses: 0
    Dernier message: 01/07/2012, 11h15
  3. script bash à executer facilement
    Par barbug dans le forum Administration système
    Réponses: 3
    Dernier message: 11/11/2008, 21h32
  4. Comment executer un script perl dans un script javascript ?
    Par Hamdi Hedhili dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 01/11/2006, 17h09
  5. Réponses: 4
    Dernier message: 16/07/2004, 09h16

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