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 à éxécuter une seule fois au démarrage


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut Script à éxécuter une seule fois au démarrage
    Bonjour,
    J'aimerais écrire un script en bash qui ferait un resize de la partition primaire et modifier un fichier texte (recherche/remplacer un texte).
    Ensuite j'aimerai l'exécuter une seule fois au démarrage suivant.
    Comment réaliser ça ?
    Merci par avance.

    Je doit faire ce script pour l’exécuter suis sous un linux yocto et un raspbian.

  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

    Pourquoi ne pas faire un script qui incrémente un compteur contenu dans un fichier par exemple ?
    Ainsi, le script stopperait, dès que le compteur est supérieur à 2.

  3. #3
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Bonjour,
    C'est une possibilité... à laquelle je n'avais pas pensé

    Je pensais à un script lancé par /etc/rc.local et qui éditerai le fichier pour supprimer la ligne à la fin. est-ce que c'est possible ?
    Le problème c'est que ce genre de script est lancé au démarrage et faire le resize de ma partition c'est peut être pas top ?

  4. #4
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Déjà pour rechercher/remplacer je n'arrive pas .. il me rajouter un saut de ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    MAC_ADDR=`cat /sys/class/net/eth0/address | sed "s/://g"`
    sed -i "s|MAC_ADDR|${MAC_ADDR}|g" /home/.path/mon_fichier.txt
    Avant execution :
    montext/MAC_ADDR/text
    Après execution :
    montext/e0dca01ba5d2
    /text
    Est-ce que le "." dans le chemin du fichier peux poser un problème ?

  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
    faire le resize de ma partition c'est peut être pas top ?
    Oui ! Ce n'est pas bien.
    Les partitions, moins tu les touches, mieux tu te portes.
    D'où vient cette idée saugrenue de vouloir modifier la taille de la partition, à la volée, au démarrage ?


    Le risque de l'opération, comparé au manque d'expertise que révèle tes questions, doit te pousser à réfléchir et abandonner ton projet.

    Est-ce que le "." dans le chemin du fichier peux poser un problème ?
    Aucun.

    MAC_ADDR=`cat /sys/class/net/eth0/address | sed "s/://g"`
    Utilisation inutile de cat.

    Avant execution :
    Après execution :
    Tu viens juste de réaliser que ton fichier a 2 lignes. N'est ce pas ?

  6. #6
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Re-bonjour,
    En fait, je fait du clonage de carte SD avec l’OS déjà présent et configuré. Ma source est une SD de 2Go et je la copie sur une de 4Go voir plus.
    Au 1er re-démarrage j’aimerai que la partition principale soit étendue. Par défaut sur le Raspberry il y a un script à rajouter pour faire ça dans le cmdline.txt (celui présent quand on allume la copie de la carte la premiere fois).
    Sur mon autre module avec Yocto, je le fait manuellement avec fdisk et resize2fs mais j’aimerais automatiser cette opération... sur mes deux supports avec si possible le même script

    De plus je dois modifier un fichier json de config (code node red) avec l’adresse Mac noté en dur.. Le problème c’est qu’il n’a qu’une ligne et après le sed il fait 2 lignes.
    Quand j’exécute les lignes dans le terminal ça fonctionne.. quand je les mets dans le script bash ça rajoute un saut de ligne..

    Mon idée n’est pas d’abandonner parce que c’est pas simple et que je n’ai pas les compétences, mais d’essayer d’y arriver pour apprendre

    Merci par avance

  7. #7
    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
    Un fichier json se modifie avec jq.

    Un saut de ligne se supprime ...

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 258
    Par défaut
    Pour le script à usage unique, tu le mets dans /etc/init.d (comme les scripts normaux) et tu le fini par . Celui-ci devrait s'effacer (non testé).
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Un fichier json se modifie avec jq.

    Un saut de ligne se supprime ...
    Bonjour,
    Avec Yocto je n'ai pas la fonction jq de disponible.
    Pour la suppression du saut de ligne ça ne fonctionne pas.

    Quand je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "s|MAC_ADDR|TOTO|g" /home/.path/mon_fichier.json
    je n'ai pas de retour à la ligne d'inséré.
    Quand je le fait avec la variable j'ai un retour à la ligne qui s'insère.
    J'ai un peu de mal à comprendre.. pourtant je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MAC_ADDR=`cat /sys/class/net/eth0/address | sed "s/://g"`| tr -d "\r\n"
    (j'ai aussi testé avec un tr -d "\n")


  10. #10
    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
    Le tr est en dehors de la commande.

  11. #11
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Ha oui ! Désolé j'ai fait une erreur de copier/coller sur le code posté, mais je l'ai bien fait sur mon fichier !

    Je viens de réécrire mon script directement avec nano et maintenant ça fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    MAC_ADDR=`cat /sys/class/net/eth0/address | sed "s/://g"`
    sed -i "s|MAC_ADDR|${MAC_ADDR}|g" /home/root/.node-red/flows.json

  12. #12
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    2 scripts pour faire le resize de la partition n°3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    echo -e "d\n3\nn\np\n3\n\n\nw\n" | fdisk /dev/mmcblk0
    reboot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    resize2fs /dev/mmcblk0p3
    reboot
    Il me reste à rajouter les lignes pour ajouter/enlever du démarrage automatique avant de faire les reboot.

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

Discussions similaires

  1. N'exécuter un script qu'une seule fois (cookie ?)
    Par Invité dans le forum jQuery
    Réponses: 7
    Dernier message: 26/05/2013, 16h48
  2. lancer un script colorbox une seule fois
    Par amoric69 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/02/2011, 08h41
  3. Code à éxécuter une seule fois
    Par ayed hedi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/04/2010, 09h39
  4. Executer une seule fois un script
    Par guillôme38 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/09/2006, 14h21
  5. Réponses: 2
    Dernier message: 30/11/2004, 11h48

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