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 :

Retrouver le disque système (même avec LUSK)


Sujet :

Shell et commandes GNU

  1. #1
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut Retrouver le disque système (même avec LUSK)
    bonjour,

    je dois retrouver le disque ou est installé le système pour tester ensuite si c'est un SSD ou HDD,
    MAIS
    problèmes avec LUSK (voire même avec LVM? non testé)

    j'utilisais df :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    disk=$(df --output="source,target" | grep "/$" | cut -c 6-8 )
    mais avec lusk ca ne marche pas :
    df --output="source,target" me retourne un /dev/mapper/....

    j'ai donc essayé avec lsblk :
    #lsblk -o "name,mountpoint" -pa
    /dev/sda
    ├─/dev/sda1 /boot
    ├─/dev/sda2
    │ └─/dev/mapper/cryptManjaro /
    ├─/dev/sda3
    └─/dev/sda5 [SWAP]
    ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    disk=$(df --output="source,target" | grep "/$" | cut -c 6-8 )
    [[ "$disk" == "map" ]] && disk=$(lsblk -o "name,mountpoint"  -pa | grep "/$" -B1 | head -n 1 | cut -c12-14)
    mais prendre toujours ligne -1 ne me parait vraiment pas bon (si j'ai un home crypté aussi et placé avant par exemple).

    Une "bonne" solution serait de remonter de "/$" jusqu'a la ligne débutant par le caractère "/" ? il me semble que c'est facile avec sed mais la c'est hors de mes compétences.

    Sinon il existe peut être une solution plus directe avec quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    partition=$(df --output="source,target" |grep "/$" | cut -d / -f 3)
    if [[ "$partition" == "mapper" ]]; then
      partition=$(sudo cryptsetup status $(df --output="source,target" |grep "/$"|cut -d' ' -f1 |cut -d/ -f4
    ) | grep device | cut -d/ -f3)
    fi
    disk=${partition:0:3}
    mais la il faut utiliser sudo et reste le cas avec LVM : aucune idée si ca marche ?
    $moi= ( !== ) ? : ;

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    c'est facile avec sed mais la c'est hors de mes compétences.
    Oh. Ben. Les compétences, ça s'acquiert.

    $ cat lsblk.txt
    #lsblk -o "name,mountpoint" -pa
    /dev/sda
    ├─/dev/sda1 /boot
    ├─/dev/sda2
    │ └─/dev/mapper/cryptManjaro /
    ├─/dev/sda3
    └─/dev/sda5 [SWAP]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed -n '/^\//h;/\/$/{x;p}' lsblk.txt 
    /dev/sda
    // la ligne contient une expression régulière. Quand la ligne contient cette expression régulière, la commande est exécutée.
    /^/ la ligne a un début.
    /^\// la ligne débute par une oblique.
    /\/$/ la ligne finie par une oblique.
    h mise en mémoire tampon
    x échanger la mémoire tampon avec l'espace de travail.
    {x;p} considérer l'échange de mémoires et l'affichage comme une seule commande.
    /^\//h;/\/$/{x;p} Quand la ligne commence par une oblique, mettre en mémoire; Quand la ligne termine par une oblique, reprendre la mémoire et afficher.

    [edit]
    A la réflexion, pas la peine d'échanger. Écraser l'espace de travail par la mémoire tampon est suffisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed -n '/^\//h;/\/$/{g;p}' lsblk.txt 
    /dev/sda
    [/edit]
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/07/2015, 00h15
  2. [Système] Probleme avec un switch case!
    Par Death83 dans le forum Langage
    Réponses: 7
    Dernier message: 29/01/2006, 16h28
  3. [Servlet]pdf sur le disque, l'afficher avec une servlet
    Par canou94 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 08/12/2005, 15h11
  4. [Système] Problème avec header() ...
    Par tom06440 dans le forum Langage
    Réponses: 15
    Dernier message: 27/10/2005, 21h33
  5. [Système]Probleme avec un chemin dans cmd.exe
    Par Sarrus dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 14/09/2005, 08h31

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