Page 1 sur 1

[install] Script d'installation archlinux (résolu)

Publié : sam. 25 avr. 2015, 10:31
par KorteX39
Bonjour à tous
Je m'atelle à une tache ardue. Je suis en train de créer un script bash (mon tout 1er script mais j'aime le gout du défie) et je bloque sur deux petites choses.
Je cherche dans un premier temps à afficher les differents disque contenu dans /dev/sd*. J'y arrive mais je ne sais comment exploiter le resultat pour que l'utilisateur puisse choisir le disque à préparer.
Le second soucis comment lancer fdisk sur le disque choisi et retourner sur le script une fois terminé?
Voici le bout de code que j'ai commencé à créer soyez indulgent comme je le précisait c'est mon tout premier script. Le but pour moi étant avant tout d'apprendre le bash.

Code : Tout sélectionner

#!/bin/bash
#Version 1.0
echo Installation de Archlinux
#Préparation des disques
echo Choix du disque sur lequel installer votre distribution
echo /dev/.sd*
exit 0
Bon en continuant de chercher, je me suis rendu compte que je pourrais peut-ere effectuer cette tache avec test. Genre

Code : Tout sélectionner

[[ -f /dev/sda ]]
[[ -f /dev/sdb ]]
...

Puis avec if si les fichiers existe je place les valeurs dans des variables differentes... sinon je ne les place pas ceci s'entends
Pensez-vous que ca puisse fonctionner?

Re: [install] Script d'installation archlinux

Publié : sam. 25 avr. 2015, 14:20
par papajoke
Bonjour,
il est possible de faire directement une boucle du type:

Code : Tout sélectionner

for i in $(ls /dev/[hs]d[a-z][1-9]*)
ou de mettre le résultat du ls dans un tableau pour le réutiliser plusieurs fois ultérieurement

Re: [install] Script d'installation archlinux

Publié : sam. 25 avr. 2015, 17:11
par KorteX39
Merci papajoke je vais essayer.
EDIT : Si je place ta commande cela me met une erreur

Code : Tout sélectionner

install: ligne 7: erreur de syntaxe près du symbole inattendu « exit »
install: ligne 7: `exit 0'
j'ai essayé comme cela

Code : Tout sélectionner

for i in $(ls /dev/[hs]d[a-z][1-9]*); do echo $(ls /dev/[hs]d[a-z][1-9]*); done
Mais la commande echo me retourne le tout fois quatre

Code : Tout sélectionner

Installation de Archlinux
Choix du disque sur lequel installer votre distribution
/dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2
/dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2
/dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2
/dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2
:shock: :shock:

EDIT 2 : non c'est bon j'ai trouvé

Code : Tout sélectionner

for i in $(ls /dev/[hs]d[a-z][1-9]*); do echo $i; done

Re: [install] Script d'installation archlinux

Publié : dim. 26 avr. 2015, 11:13
par KorteX39
Le script pour le moment fonctionne jusqu'au chroot. je donne un petit apercu du travail, N'hesitez pas à corrgier ou à me donner des idées.

Code : Tout sélectionner

#!/bin/bash
#Version 1.0
echo Installation de Archlinux
#Préparation des disques
echo Choix des partitions utilisé ex : /boot /home ...
[size=150]IL Y AURA UN BOUT DE CODE ICI POUR CHOISIR QUEL TYPE DE PARTITION ON VEUX SUR SON SYSTEM ET LA SUITE DU CODE S'EN TROUVERA UN PEU TRANSFORMÉ[/size]
echo Choix du/des disque sur lequel installer votre distribution
ls /dev/sd*
read -e -p "/ (ex /dev/sda) " SLASH
read -e -p "/home (ex /dev/sda) " HOME
read -e -p "/BOOT (ex /dev/sda) " BOOT
read -e -p "/TMP (ex /dev/sda) " TMP
echo / $SLASH
echo /home $HOME
echo /boot $BOOT
echo /boot $TMP
#Montage des partitions
echo Montage des partitions
mount $SLASH /mnt
mkdir /mnt/{home,boot,tmp}
mount $BOOT /mnt/boot
mount $HOME /mnt/home
mount $TMP /mnt/tmp
echo installation des groupe base et base-devel
pacstrap /mnt base base-devel grub
echo création du fstab 
genfstab -U -p /mnt >> /mnt/etc/fstab
echo Chroot de l environnement créer
arch-chroot /mnt
exit 0
P.S : j'aimerais savoir si on peux demander a l'utilisateur d'appuyer sur entré après un echo parce que pour le moment tout défile un peu vite

Re: [install] Script d'installation archlinux

Publié : dim. 26 avr. 2015, 12:35
par papajoke
il faudrait surtout lire de la doc avant de coder; tu as bien lut le wiki avant d'installer arch :wink:
Guide avancé d'écriture des scripts Bash

Re: [install] Script d'installation archlinux

Publié : dim. 26 avr. 2015, 14:15
par KorteX39
Comme je le precisais plus haut se script a surtout pour but de m'apprendre et il va s'ameliorer avec le temps. Ce n'est certainement pas quelque chose que je vais partager enfin pas dans une version aussi debutant.
Je vois plus cela comme un travaux pratique qui va evoluer vers un vrai script à part entière

EDIT : Je rajouterais que lire de la doc sans pratiquer cette doc c'est aller droit au mur donc oui je lis des pages et des pages de doc mais j'essaye d'y appliquer dans la mesure de mes capacitées actuelle au projet que je me suis fixé

Re: [install] Script d'installation archlinux (résolu)

Publié : dim. 26 avr. 2015, 22:16
par Moviuro
Plop,

Code : Tout sélectionner

#!/usr/bin/env bash
C'est mieux (c'est une bonne habitude à prendre puisque sur BSD par exemple, bash est dans /usr/local/bin/bash

Code : Tout sélectionner

for i in $(ls <>)
est à bannir à cause du comportement flou de ls. bash fait tout seul le match de regexp:

Code : Tout sélectionner

for i in /dev/[hs]d[a-z][1-9]*; do ls -l "$i"; done
@papajoke : j'ai pas lu ton tuto, mais rien que pour le shebang, il est faux. il a certainement l'air complet, mais un truc faux dès le début, ça ne présage rien de bon.
EDIT: il doit dater de Mathusalem, ce tuto : il y a encore des backquotes dedans... c'est mal les backquotes...
@Kortex, il faut lire le bouquin de O'reilly: Learning the bash shell. amazon

Bon courage

Re: [install] Script d'installation archlinux (résolu)

Publié : dim. 26 avr. 2015, 23:55
par papajoke
Moviuro a écrit :EDIT: il doit dater de Mathusalem, ce tuto
2000 :!:
c'est la traduction fr d'un livre : ABS
et c'est à ma connaissance le seul livre complet et libre en fr sur bash (Domaine Publique depuis 2014?)

Re: [install] Script d'installation archlinux (résolu)

Publié : lun. 27 avr. 2015, 19:58
par avi3000
Le poids des mots !!!

shebang or not shebang:
Ma archlinux bien à jour, contient 373 scripts dans /usr/bin. Sur ces 373 scripts, seulement 20 utilisent le programme env. Il faudra prévenir les mainteneurs de la distribution, qu'ils ont faux dans 353 scripts.

La portabilité c'est bien, mais pas toujours nécessaire.

Le "Mendel Cooper", comme bash, date effectivement de Mathusalem, mais il reste un des nombreux ouvrages de référence sur l'écriture de script bash. A ma connaissance, la version française est à jour à la version 4 de bash.
Je n'ai rien comme Madame O'reilly, mais je préfère utiliser les excellentes sources d'information que sont les sites communautaires tels que tdlp.org ou ses équivalents français.

Re: [install] Script d'installation archlinux (résolu)

Publié : lun. 27 avr. 2015, 20:16
par Moviuro
Plop :)

Pour le shebang : https://stackoverflow.com/questions/733 ... 901#733901 Effectivement, c'est pas mortel, mais très surprenant puisque chez moi, chromium (!) utilise ledit mauvais shebang. (Je croyais à tort que ça avait aussi à voir avec l'environnement complet dans lequel le script se lançait : alias, fonctions, etc.)

Et je vais contribuer aux différents projets pour tout faire corriger ;)

++

Re: [install] Script d'installation archlinux (résolu)

Publié : lun. 04 mai 2015, 20:18
par avi3000
c'est mal les backquotes ?
RTFM

Re: [install] Script d'installation archlinux (résolu)

Publié : lun. 04 mai 2015, 22:29
par Moviuro
avi3000 a écrit :RTFM
Command Substitution
Command substitution allows the output of a command to be substituted in place of the command name itself. Command substitution occurs when the command is enclosed as follows:

Code : Tout sélectionner

$(command)
:copain:
Les backquotes, c'est antique.

Re: [install] Script d'installation archlinux (résolu)

Publié : mar. 05 mai 2015, 00:18
par avi3000
J'ai relu ce putain de manuel et refait des tests

Code : Tout sélectionner

/usr/lib/initcpio/busybox ash 
~ $ echo "<$(</etc/hostname)>"
<>
~ $ echo "<$(cat /etc/hostname)>"
<asus4570>
~ $ read z < /etc/hostname ;echo $z
asus4570
les backquotes, c'est pas beau