87 votes

Comment créer et formater une partition en utilisant un bash script ?

Existe-t-il un moyen de créer et de formater une partition en utilisant un bash script ?

Je pense que cela peut être fait avec fdisk mais je ne sais pas comment alimenter les commandes du bash script dans le fdisk script puis sortir du fdisk script.

Je veux créer une partition puis la formater en ntfs depuis bash.

8voto

ron Points 81

Vous pouvez script fdisk .

(echo n; echo p; echo 1; echo 1; echo 200; echo w) | fdisk /dev/sdc

Cela crée une partition de 200 Mo sur /dev/sdc

7voto

Shebanator Points 111

Transmettre les commandes à fdisk fonctionne bien, comme l'ont expliqué d'autres personnes, mais cette méthode est un peu plus élégante et lisible :

fdisk /dev/sdc <<EOF
n
p
1

w
EOF

Le transfert à partir d'un fichier (temporaire) fonctionne également :

fdisk /dev/sdc < /tmp/fdisk.cmds

3voto

printf 'o\nn\np\n1\n\n\nw' | fdisk /dev/sda

0voto

Paul Justin Points 1

Le script utilise fdisk pour créer des partitons basées sur les réponses d'autres personnes.

Changez ce qui suit dans le script :

NUM_PARTITIONS \=5

PARTITION_SIZE \="+10G"

Un exemple d'utilisation est donné après le script.

#!/bin/bash
if [ $# -eq 0 ]
then
  echo "input the device"
  exit
fi

NUM_PARTITIONS=5
PARTITION_SIZE="+10G"    

SED_STRING="o"
TAIL="p
w
q
"

NEW_LINE="
"
LETTER_n="n"
EXTENDED_PART_NUM=4
TGTDEV=$1

SED_STRING="$SED_STRING$NEW_LINE"
for i in $(seq $NUM_PARTITIONS)
do
  if [ $i -lt $EXTENDED_PART_NUM ]
  then
    SED_STRING="$SED_STRING$LETTER_n$NEW_LINE$NEW_LINE$NEW_LINE$NEW_LINE$PARTITION_SIZE$NEW_LINE"
  fi
  if [ $i -eq $EXTENDED_PART_NUM ]
  then
    SED_STRING="$SED_STRING$LETTER_n$NEW_LINE$NEW_LINE$NEW_LINE$NEW_LINE"
    SED_STRING="$SED_STRING$LETTER_n$NEW_LINE$NEW_LINE$PARTITION_SIZE$NEW_LINE"
  fi
  if [ $i -gt $EXTENDED_PART_NUM ]
  then
    SED_STRING="$SED_STRING$LETTER_n$NEW_LINE$NEW_LINE$PARTITION_SIZE$NEW_LINE"
  fi
done
SED_STRING="$SED_STRING$TAIL"

sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk ${TGTDEV}
  $SED_STRING
EOF

fonctionne avec :

sudo sh mk_partition.sh /dev/sdxxx

0voto

theAntonym Points 1

Non pas que quelqu'un me le demande, mais je me suis dit que j'allais le partager ici puisque je suis tombé dessus par hasard. J'ai essayé d'appliquer la commande sfdisk suivante sur Centos 7 :

echo 'type=83' | sudo sfdisk /dev/xvdb

Mais il a reçu la réponse suivante :

Checking that no-one is using this disk right now ...
OK

Disk /dev/xvdb: 1958 cylinders, 255 heads, 63 sectors/track
sfdisk:  /dev/xvdb: unrecognized partition table type

Old situation:
sfdisk: No partitions found

sfdisk: trailing junk after number

sfdisk: bad input

Enfin, voici ce qui a fonctionné pour moi :

sfdisk -f -uS -D /dev/xvdb << EOF
2048,,83,*
EOF

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X