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 :

rc.local script pas interprété Debian 9 Stretch


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut rc.local script pas interprété Debian 9 Stretch
    Bonjour,
    Je lance sun script dans un environnement pxe debian Stretch.

    Le script ex.sh est dans le rc.local. Le script est bien lancé au démarrage mais il possède des interactions avec l'utilisateur fonction "read" qui ne sont pas pris en compte ! . Je me retrouve avec le login.

    J'ai le message suivant :
    journalctl donne l'information suivante : "opérateur unaire attendu"

    En Debian 6 and 7 c'est ok pas en 9 !

    Une idée ?

    Bien sur quand le lance le script après le login tout est ok !!

    MErci

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Une idée ?
    Sur la différence de comportement en fonction de la version Debian, non.

    Mais sur l'opérateur unaire, tu as, très certainement, dans le test d'une condition, une variable vide que tu crois pleine.
    Et le script plante.

    Tu devrais chercher pourquoi la variable est vide à ce moment là.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 348
    Par défaut
    Bonjour,

    une variable vide n'empêche pas les opération unaire ou n-aire, mais un vide tout court, oui, provoque des erreurs sur les opération unaire ou n-aire.

    Référence à une possible variable vide:
    Référence à un possible vide:

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut
    Merci pour vos réponses mais je pense sans en être sûr que le problème est ailleurs !

    Voilà ce que j'ai fait :
    J'ai pensé que le rc.local etait depricated et j'ai installé mon script via systemd ... Mais le problème est identique.
    Je suis revenu à /etc/rc.local. Dans ma Debian 9 il n'y a pas de /etc/init.d/rc.local ! et le script normalement lancé par celui-ci se lance quand même mais bon là n'est pas le problème enfin je pense !

    Ma configuration :
    Linux Stretch (9) monté via PXE en RO (bug nfs recensé) , et j'ai mis un fstab pour avoir des montages en RW comme /tmp /var /proc ...
    Le système démarre passe dans le /etc/rc.local qui lance par su - root -c "ex.sh" et me donne le login et devrait me demander les informations attendues par le script ex.rh en fait les read ne sont pas pris en compte ...
    Si je lance ce script après le login dans le système linux monté le script me demande les informations vi les read ... et c'est ok

    Pourquoi le système ne prend pas en compte les read dans le ex.sh avant le login ?

    La seule différence que je vois entre la 9 et la 6 et 7 c'est le fstab !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    En 9 :
    tmpfs.proc  /proc           proc  defaults 0 0
    tmpfs.var   /var            tmpfs defaults 0 0
    tmpfs.run   /var/run        tmpfs defaults 0 0
    tmpfs.log   /var/log        tmpfs defaults 0 0
    tmpfs.tmp   /var/tmp        tmpfs defaults 0 0
    tmpfs.media /media          tmpfs defaults 0 0
    tmpfs.log   /var/log        tmpfs defaults 0 0
    tmpfs.mnt   /mnt            tmpfs defaults 0 0
    #tmpfs.root  /root           tmpfs defaults 0 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    en 6 : 
    /dev/ram1       /var/run        ramfs   defaults,rw,auto,dev            0 0
    /dev/ram2       /var/lock       ramfs   defaults,rw,auto,dev            0 0
    /dev/ram3       /var/log        ramfs   defaults,rw,auto,dev            0 0
    /dev/ram4       /var/tmp        ramfs   defaults,rw,auto,dev            0 0
    /dev/ram5       /mnt            ramfs   defaults,rw,auto,dev            0 0
    /dev/ram6       /home           ramfs   defaults,rw,auto,dev            0 0
    code du script ex.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo ""
      echo "Tapez oui pour confirmer"
      read sur <------------------ il ne s'arrête pas !!!!!!!!!!!!!!
     
      if [ $sur = oui ];  -< Ligne 106
      then
    Erreur :
    ex.sh :
    ligne 106 : [: = : opérateur unaire attendu

    Je ne peux pas mettre la config du 6 en 9 ça ne marche pas pour les file system montés !!

    A+ J'espère

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    • Pour l'erreur proprement dite, disedorgue t'a répondu.
      Il faut protéger ta variable, sinon, tu as juste un vide. Et un bug.
    • Il y a démarrage et démarrage.
      Tu interviens trop tôt.
      Il y a
      • le démarrage du système
      • le démarrage des services
      • le démarrage de la session
      • le démarrage de la session graphique
      • le démarrage de la console
      • etc

    • À qui parles-tu ?
      Tu te rends compte que, symboliquement, tu poses une question à un utilisateur qui n'existe pas, puisqu'il n'est pas logué.
      rc.local n'est pas adéquat pour faire des entrées/sorties à ce moment-là du démarrage.
      Sur internet, on trouve des solutions diverses de redirections, ou d'arrêt d'autre module comme plymouth quit, pour rendre au script ses canaux standards.

      Mais la simple solution n'est-elle pas de mettre ton script dans /etc/profile.d, qui s'exécute à la connexion d'un utilisateur ? (il existe et te répond)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut
    Merci pour cette réponse.

    Mais dans le rc.local comme expliqué ci-dessus il y a un su - root -c 'ex.sh" . Je voudrais reproduire ce qui existe en debian 6.

    En protégeant les variables, c'est pas le problème. C'est la fonction read qui n'est pas exécuté en mode entrée sortie ?

    Comment activer ou faire fonctionner le read (du bash) dans un rc.local ou (systemd) avant le login ? Je ne trouve pas la solution à moins de revenir à un debian 6 !

    Je sais ce n'est pas très propre, mais dans un fonctionnement PXE il faut aller au plus simple : on démarre le poste puis on répond à deux questions (read !) et le script se lance pour les utilisateurs ...

    Merci je cale.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script qui fonctionne en local, mais pas en ligne
    Par student_php dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/11/2010, 10h22
  2. [AJAX] Script marche en local mais pas en ligne
    Par obito dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/02/2009, 11h20
  3. script qui marche en locale mais pas sur le web
    Par koKoTis dans le forum Langage
    Réponses: 7
    Dernier message: 08/09/2008, 16h07
  4. Script marche en local mais pas en ligne
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2008, 15h51
  5. Réponses: 18
    Dernier message: 12/06/2006, 09h39

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