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 :

[sed] Supprimer le caractère : dans un résultat


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut [sed] Supprimer le caractère : dans un résultat
    Bonjours à tous.

    Néophyte total dans les syntaxes bash je me retrouve encore en prise avec sed.
    je tente d'écrire mon premier script de plus de 5 lignes, le but étant d'extraire le nom des interfaces réseaux sur le pc et changer leurs adresses mac.

    Pour celà je tente de crée ma première variable de ma vie.

    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
    if [ $USER != "root" -o $UID != 0 ]
    then
      echo "Ce script doit être exécuté en tant qu'administrateur (root)."
      echo "Placez sudo devant votre commande :"
      echo "sudo $0"
      echo "Abandon"
      exit 1
    fi
     
     
    var=$(ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d') 
     
    ifdown $var  >/dev/null 2>&1;
    macchanger -a $var >/dev/null 2>&1;
    ifup $var >/dev/null 2>&1;
     
    su neo -c 'notify-send "New Mac address has been assigned"';
    le probleme est dans la syntaxte de sed:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d'
    me retourne le résultat suivant:
    enp0s25:
    wlo1:

    ma question est la suivante : comment retirer les ":" inscrit devant le nom des interfaces?


    Au passage, avez-vous des livres ou des sites à conseiller au néophyte dans les syntaxes, je vous avous êtres hermétique depuis ma naissance aux équations et aux maths de manière générals, imagez ma tête déconfite devant des syntaxes

    En vous remerciant d'avance pour votre temps. Hector

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d;s/://'
    version facile
    ; séparateur seconde commande sed (équivalant à sed.......| sed.......)

    sub : par rien s/://

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Salut frp31

    Merci pour ta réponse efficace et précise

    malheuresement comme le codage est un chemin long et fastidieux, il fallait qu'il y ait une couille dans la soupe^^

    la commande sed me renvoit bien le bon résultat, enp0s25 et wlo1 mais une seul interface change d'adresse mac (enp0s25) hors le script me parle de wlo1..

    bref les variables se marchent dessus et je devrais créer autant de variables à utiliser que d'interfaces renvoyer par sed.

    sed est il approprié pour celà? j'ai pu trouver quelque exemple sur awk pour sortir plusieurs variables d'un résultat mais aucun sur sed.

    (ps : j'ai fait un tour sur silicium.org ca laisse rêveur de tel retrospection et exposition idée de sortie mise de coté au cas où l'ours sorte de sa grotte )

    Bonne fin de nuit.

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Je suis un peu surpris par le résultat de ta commande ifconfig -a et de ces 2 points intempestifs qui te sortent après le nom de l'interface
    Chez moi, et ce sur plusieurs systèmes différents, je n'ai point de 2 points

    Exemple sur une Debian Jessie :
    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
    $ sudo ifconfig -a
    eth0      Link encap:Ethernet  HWaddr 02:83:08:02:1d:da  
              inet adr:192.168.10.201  Bcast:192.168.10.255  Masque:255.255.255.0
              adr inet6: fe80::83:8ff:fe02:1dda/64 Scope:Lien
              adr inet6: fe80::42:babe/128 Scope:Lien
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:2502883 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3770819 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 lg file transmission:1000 
              RX bytes:1274606870 (1.1 GiB)  TX bytes:361487621 (344.7 MiB)
              Interruption:117 
     
    hotspot1  Link encap:Ethernet  HWaddr 02:e1:b0:53:41:01  
              inet adr:10.234.84.1  Bcast:0.0.0.0  Masque:255.255.255.0
              adr inet6: fe80::e1:b0ff:fe53:4101/64 Scope:Lien
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 lg file transmission:1000 
              RX bytes:0 (0.0 B)  TX bytes:8710 (8.5 KiB)
     
    lo        Link encap:Boucle locale  
              inet adr:127.0.0.1  Masque:255.0.0.0
              adr inet6: ::1/128 Scope:Hôte
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:693939 errors:0 dropped:0 overruns:0 frame:0
              TX packets:693939 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 lg file transmission:0 
              RX bytes:76252746 (72.7 MiB)  TX bytes:76252746 (72.7 MiB)
     
    wlan0     Link encap:Ethernet  HWaddr 02:e1:b0:53:41:00  
              inet adr:10.0.242.1  Bcast:0.0.0.0  Masque:255.255.255.0
              adr inet6: fe80::e1:b0ff:fe53:4100/64 Scope:Lien
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:396495 errors:0 dropped:9 overruns:0 frame:0
              TX packets:789168 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 lg file transmission:1000 
              RX bytes:26648664 (25.4 MiB)  TX bytes:1155938821 (1.0 GiB)
    Avec la commande ip addr, là oui il y a bien ces fameux 2 points après le nom de chaque interface :

    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
    $ sudo ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 02:83:08:02:1d:da brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.201/24 brd 192.168.10.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::83:8ff:fe02:1dda/64 scope link 
           valid_lft forever preferred_lft forever
        inet6 fe80::42:babe/128 scope link 
           valid_lft forever preferred_lft forever
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 02:e1:b0:53:41:00 brd ff:ff:ff:ff:ff:ff
        inet 10.0.242.1/24 scope global wlan0
           valid_lft forever preferred_lft forever
        inet6 fe80::e1:b0ff:fe53:4100/64 scope link 
           valid_lft forever preferred_lft forever
    4: hotspot1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 02:e1:b0:53:41:01 brd ff:ff:ff:ff:ff:ff
        inet 10.234.84.1/24 scope global hotspot1
           valid_lft forever preferred_lft forever
        inet6 fe80::e1:b0ff:fe53:4101/64 scope link 
           valid_lft forever preferred_lft forever
    Donc sur quel système es-tu ?

    Tu fais aussi allusion à bash, et bizarrement ton shebang est #!/bin/sh

    Quel shell utilises-tu ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Salut zip31

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Linux Atlas 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26) x86_64 GNU/Linux
    Pour mon Os aucune ambiguité je suis sous Debian 9

    Pour les deux point si je fais ifconfig -a j'ai effectivement les ":" après chaque interfaces!
    mais si je fais un ifconfig -s là il n'y en a pas... ( découverte du "matin" ^^)

    Stretch m'offre quelques bizarreries depuis 6 mois, par exemple pas de paquet net-tools après installation (netstat) chose jamais vu jusqu'à présent sur débian.
    Un poste récent sur ce forum fait état d'un membre qui n'a pas ifconfig mais juste ip a , à en perdre son latin^^

    Pour la partie shell c'est bien bash que j'utilise mais... pour outre-passer des erreurs le temps de bidouiller je remplace mon shebang par #!/bin/sh


    exemple avec #!/bin/bash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    root@Atlas:/home/neo# ./connection.sh
    ./connection.sh: ligne 3: erreur de syntaxe dans une expression conditionnelle
    ./connection.sh: ligne 3: erreur de syntaxe près de « -o »
    ./connection.sh: ligne 3: `if [[ $USER != root -o $UID != 0 ]]'
    avec #!/bin/sh

    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
     
    root@Atlas:/home/neo# ./connection.sh 
    ./connection.sh: 3: ./connection.sh: [[: not found
    Killed old client process
    Internet Systems Consortium DHCP Client 4.3.5
    Copyright 2004-2016 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/
     
    Listening on LPF/enp0s25/2c:44:fd:66:83:1c
    Sending on   LPF/enp0s25/2c:44:fd:66:83:1c
    Sending on   Socket/fallback
    DHCPRELEASE on enp0s25 to 192.168.1.254 port 67
    send_packet: Operation not permitted
    dhclient.c:2733: Failed to send 300 byte long packet over fallback interface.
    ifdown: unknown interface wlo1
    Current MAC:   2c:44:fd:66:83:1c (Hewlett Packard)
    Permanent MAC: 2c:44:fd:66:83:1c (Hewlett Packard)
    New MAC:       ac:ab:8d:87:12:cb (Lyngso Marine A/S)
    Internet Systems Consortium DHCP Client 4.3.5
    Copyright 2004-2016 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/
     
    Listening on LPF/enp0s25/ac:ab:8d:87:12:cb
    Sending on   LPF/enp0s25/ac:ab:8d:87:12:cb
    Sending on   Socket/fallback
    DHCPDISCOVER on enp0s25 to 255.255.255.255 port 67 interval 3
    receive_packet failed on enp0s25: Network is down
    DHCPDISCOVER on enp0s25 to 255.255.255.255 port 67 interval 8
    DHCPDISCOVER on enp0s25 to 255.255.255.255 port 67 interval 9
    DHCPREQUEST of 192.168.1.22 on enp0s25 to 255.255.255.255 port 67
    DHCPOFFER of 192.168.1.22 from 192.168.1.254
    DHCPACK of 192.168.1.22 from 192.168.1.254
    bound to 192.168.1.22 -- renewal in 33108 seconds.
    ifup: unknown interface wlo1
    celà fait a peine 6 mois que je touche un terminal et tente de me build des distributions sur mesures, je demande indulgence au puriste

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    /bin/sh n'étant pas toujours bash, [[ ne sera pas reconnu.

    avec [[, les ET et OU logiques sont && et ||.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Que te renvoie la commande readlink -f /bin/sh ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  8. #8
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par hector153 Voir le message
    Salut frp31

    Merci pour ta réponse efficace et précise

    malheuresement comme le codage est un chemin long et fastidieux, il fallait qu'il y ait une couille dans la soupe^^
    sinon c'est pas drole

    la commande sed me renvoit bien le bon résultat, enp0s25 et wlo1 mais une seul interface change d'adresse mac (enp0s25) hors le script me parle de wlo1..

    bref les variables se marchent dessus et je devrais créer autant de variables à utiliser que d'interfaces renvoyer par sed.

    sed est il approprié pour celà? j'ai pu trouver quelque exemple sur awk pour sortir plusieurs variables d'un résultat mais aucun sur sed.

    (ps : j'ai fait un tour sur silicium.org ca laisse rêveur de tel retrospection et exposition idée de sortie mise de coté au cas où l'ours sorte de sa grotte )

    Bonne fin de nuit.



    si c'est pour charger une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    root@h2g2:~# ifconfig -a | sed '/eth0/!d ; s/.*r //' 
    54:be:f7:60:84:d4  
    root@h2g2:~# ifconfig -a | sed '/eth0/!d ; s/.*r // ; s/84/8F/' 
    54:be:f7:60:8F:d4  
    root@h2g2:~# NEWMAC=$(ifconfig -a | sed '/eth0/!d ; s/.*r // ; s/84/8F/')   # pour charger le retour dans une variable NEWMAC
    ici l'idée est de selectionner que la ligne qui m'interesse AVANT de traiter le conetenu
    /pattern/ !d not delete
    dessus changer tout ce qui precede par rien
    dessus changer la colonne qui m'interesse

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Pour N_Bah
    après vérification sur d'autres de mes scripts en cours de création l'erreur vient effectivement de [[ qui passe simplement ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if [ $USER != "root" -o $UID != 0 ]
    Pourtant de base je l'avais écrit ainsi mais celà me sortait également des erreurs, d'ou l'essaye avec [[.

    De là me revient une question qui vous paraitras a tous peut être complètement stupide mais;
    Est-il possible que de simples copier/coller mettent le bazar ???

    Dans certain contexte je peux affirmer que oui: exemple, lors de construction d'iso avec live-build, le preseed ne SUPPORTE PAS les copier/coller!!!!! notemment lors de partitionnement LVM (retour d'expérience après une bonne centaine de build en 6 mois)
    J'en suis d'ailleurs arrivé à n'utiliser que Gvim et vim pour éviter éventuellement les erreurs d'encodage ( au début je bossais mes codes sur nano et n'hésitais pas a save autant sur du leafpad que du libreoffice)

    Mais dans un contexte comme celui présent aujourd'hui, les copier/coller peuvent ils être problématique? ( sachant que je switch toute la journée entre machines virtuelles)

    Pour répondre à zipe
    la commande me renvoie

    /bin/dash


    petite pause ici, ma nana arrive je repasse dans la soirée pour tester ta solution frp31
    en tout cas merci vraiment pour l'aide que vous m'apportez

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par hector153 Voir le message
    après vérification sur d'autres de mes scripts en cours de création l'erreur vient effectivement de [[ qui passe simplement ainsi
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
     if [ $USER != "root" -o $UID != 0 ]
    Je te conseille de toujours encadrer tes variables de guillemets (sauf si tu as une bonne raison de ne pas le faire!):

    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
     if [ "$USER" != "root" -o "$UID" != 0 ]

    surtout dans une instruction "test" (abrégée en "[ ... ]"), ça t'évitera des erreurs syntaxiques si les variables ne sont pas définies ou sont vides.

    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ A=''
     
    $ if [ $A = '' ]; then echo 'ok'; fi
    -bash: [: =: unary operator expected
     
    $ if [ "$A" = '' ]; then echo 'ok'; fi
    ok

  11. #11
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par hector153 Voir le message
    Pour répondre à zipe la commande readlink -f /bin/sh me renvoie /bin/dash
    Perso, je supprimerai ce lien et le recréerai en pointant vers /bin/bash, c'est en général ce que je fais, mais plus généralement, mon shebang est toujours #! /bin/bash
    $ man woman
    Il n'y a pas de page de manuel pour woman.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    ah ! PAS TOUCHER /bin/sh !

    plus généralement, mon shebang est toujours #! /bin/bash
    eh ben, voilà, on n'est pas bien comme ça ?

    c'est pas taper deux lettres de plus, qui va vous tordre les doigts !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ah ! PAS TOUCHER /bin/sh !

    eh ben, voilà, on n'est pas bien comme ça ?

    c'est pas taper deux lettres de plus, qui va vous tordre les doigts !
    ou encore plus sur mais un peu plus long à tapper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #! /usr/bin/env bash

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Salut à tous

    Pour jack-ft merci pour la précision sur l'encadrement et ton exemple, concis, je n'avais effectivement pas tenter de mettre entre quotes les variables non définies "$USER" et $UID".

    je mets de coté ton exemple dans mon mémo personnel pour noob en bash

    Pour N_BaH et zipe31, j' abonde dans le sens de N-BaH ce n'est pas deux lettre de plus qui me tordrons les doigts.

    Pour en revenir au script plus généralement j'ai tenté de me dépatouiller avec l'idée de frp31

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     root@h2g2:~# ifconfig -a | sed '/eth0/!d ; s/.*r //' 
    54:be:f7:60:84:d4  
    root@h2g2:~# ifconfig -a | sed '/eth0/!d ; s/.*r // ; s/84/8F/' 
    54:be:f7:60:8F:d4  
    root@h2g2:~# NEWMAC=$(ifconfig -a | sed '/eth0/!d ; s/.*r // ; s/84/8F/')   # pour charger le retour dans une variable NEWMAC
    malheuresement ce code me retourne tout sauf mes adresses mac et encore moins mes interfaces:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1492

    la nuit portant conseille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     var=$(ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d;s/://')
    echo $var
    enp0s25 wlo1
    ne puis-je pas extraire le résultat de cette commande vers différentes variables ainsi
    INTERFACE1=$wlo1
    INTERFACE2=$enp0s25
    INTERFACE3=$

    pour ensuite pouvoir appeller c'est variables indépendements dans mon script?

    chaque projet que je fais dans ma vie et je ne sais pourquoi commence toujours par des trucs de fou^^ mais l'informatique et les regex

    Merci beaucoup à chacun pour toutes ces réponses et votre temps

  15. #15
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Re-

    Peux-tu nous afficher le retour de la commande ifconfig -a tel qu'il te sort chez toi, s'il te plaît, merci ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Bonjour,
    Avec un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var=( $(ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d;s/://') )
    Nombre d'éléments :
    echo ${#var[*]}
    Le deuxième élément :
    echo ${var[1]}
    Cordialement.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonsoir à tous

    Pour zipe31

    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
     enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1492
            inet 192.168.1.19  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::2e44:fdff:fe66:831c  prefixlen 64  scopeid 0x20<link>
            ether 2c:44:fd:66:83:1c  txqueuelen 1000  (Ethernet)
            RX packets 5122  bytes 6071975 (5.7 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3893  bytes 524891 (512.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 17  memory 0xd4700000-d4720000  
     
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Boucle locale)
            RX packets 512  bytes 47178 (46.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 512  bytes 47178 (46.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
     
    wlo1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::7218:8bff:fe12:a1f6  prefixlen 64  scopeid 0x20<link>
            ether 70:18:8b:12:a1:f6  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 19
    Je précise que les scripts que je ponds actuellement sont/seront utilisables sur n'importe quel serveur/stations .
    D'ou la difficulter ici de faire comme si je ne connaissais pas le noms de mes interfaces .
    Bon j'admets que pour un noob là barre est mise sacrément haute, mais après 6 mois à dompter du kernel grsecurity et live-build, je n'en suis pas à un mur prêt

    Pour ctac_ j'ai déjà entrevu cette facon de faire mais elle ne me parlait pas, là grâce à toi je cernes un peu mieux et je tente celà de suite.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    autodidacte
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     var=( $(ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d;s/://') ) 
    #echo ${#var[*]}
     
    ifdown ${var[1]};
    macchanger -a ${var[1]};
    ifup ${var[1]}; 
     
    ifdown ${var[0]};
    macchanger -a ${var[0]};
    ifup ${var[0]}; 
     
    su neo -c 'notify-send "New Mac address has been assigned"';
    le coup des tableaux marches nickel ${var[1]} correspond à wlo1 et ${var[0]} à enp0s25 et mes deux interfaces changent bien de mac,
    Mais comment faire passer automatiquement et successivement les valeurs au script ?? avec une boucle?

    Je me sens un peu comme le dernier des niez en bash ...

Discussions similaires

  1. supprimer un caractère dans un fichier
    Par koma777 dans le forum Débuter
    Réponses: 4
    Dernier message: 14/11/2008, 22h18
  2. Supprimer un caractère dans un code champ
    Par lguenhael dans le forum Word
    Réponses: 5
    Dernier message: 01/09/2008, 14h39
  3. Réponses: 2
    Dernier message: 27/08/2008, 09h13
  4. Supprimer des caractères dans une cellule
    Par freyliss dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/08/2007, 14h02
  5. [Tableaux] Supprimer des caractères dans une chaine
    Par ddubois dans le forum Langage
    Réponses: 10
    Dernier message: 16/12/2006, 13h53

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