Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/08/2016, à 14:37

iGenji

Aide Script Bash [Résolu]

Bonjour tout le monde, je viens ici pour implorer votre aide afin d'avoir la correction du script ci-dessus.

Donc je suis un petit novice dans le monde Linux, je l'ai en dual boot depuis 1 mois maintenant. Je connais quelque commande terminal mais sans plus. Mais bon au fil du temps je progresse et je me renseigne. Je viens ici parce que j'ai besoin d'une correction d'un exercice
(oui je suis étudiant en informatique) script bash dont je n'ai aucune idée de comment le résoudre (je sais faire quelques petites choses qu'il demande mais ce script dépasse mes connaissance actuels ). Donc je remercie d'avance l'âme charitable qui va m'aider (ou pas )

Script :
" Rédiger un script bash lsh qui affiche la liste des scripts bash du(des) répertoire(s) passé(s) en
arguments à la commande. Pour chaque script trouvé, votre programme doit afficher les lignes de
commentaires d'entête (le début du fichier) (maximum 10 lignes).
Votre programme doit implémenter les directives suivantes :
• Le script reçoit 0, 1 ou plusieurs argument(s), le(s) nom(s) de répertoire(s). Si l'utilisateur ne
positionne aucun argument, le script doit traiter le répertoire courant.
• La liste des arguments doit être recopiées dans un tableau.
• Si votre programme trouve au moins un script valide, il retourne le code 0 sinon la valeur 1.
• Tous les messages d'erreur sont sauvés dans un fichier log dans le répertoire var du répertoire de
login de l'utilisateur, le nom du fichier incorpore le Pid du programme pour en assurer une
certaine unicité, ce nom est de la forme lshXXX.log où XXX représente le Pid du programme.
• En fin de traitement, votre programme doit afficher le nombre total de scripts valides (de type text
et dont le shebang 1 est correct)
• Pour une meilleure lisibilité des résultats affichés, votre programme marque une pause après
chaque script trouvé (en attendant que l'utilisateur introduise un caractère), de plus, cette pause
permet à l'utilisateur d'écourter la boucle de traitement d'un répertoire s'il introduit une ligne vide
ou une marque de fin de fichier (<ctrl d> en Linux/Unix).
• Les messages d'erreur que votre programme peut générer sont les suivants :



l'argument ...... n'est pas un répertoire
le fichier ...... n'est pas de type text
le shebang du fichier ..... ne correspond pas à celui d'un script bash
le script .... n'a pas de commentaire en début de fichier "

Dernière modification par iGenji (Le 21/08/2016, à 18:52)

Hors ligne

#2 Le 21/08/2016, à 17:01

cqfd93

Re : Aide Script Bash [Résolu]

Bonjour,

À quoi ça sert de se creuser un peu la tête quand on peut demander la solution et l'avoir toute cuite… Tu veux aussi qu'on passe tes exams à ta place ?


cqfd93

Hors ligne

#3 Le 21/08/2016, à 17:51

iGenji

Re : Aide Script Bash [Résolu]

cqfd93 a écrit :

Bonjour,

À quoi ça sert de se creuser un peu la tête quand on peut demander la solution et l'avoir toute cuite… Tu veux aussi qu'on passe tes exams à ta place ?

J'ai essayé plusieurs fois, je voudrais juste une correction et non ça va je peux passer mon examen tout seul.
Voici mon code actuel

#!/bin/bash

if[$# -eq 0];then
	rep='./'
else
	rep=($*)
fi

erreur="~/var/log" #je ne sais pas comment mettre le Pid
compteur=0

	for repository in ${rep[$*]}
	do
		if[! -d $repository];then
			echo "N'est pas un repertoire" >> $erreur
		fi

		for folder in ${rep[$*]}
		do
			if [ ! -f fichier ];then  
			
		fi

		if ! file $folder | grep -q text ;then 
			echo " n'est pas de type text" >> $erreur
			
		fi
		if ! head -n& $folder | egrep -q "^#!/bin/bash" ;then 
			echo " n'est pas un script bash" >> $erreur
			
			fi

			return 1
			returnCode=0
			((compteur++)) 
			if ! head -n10 $folder | egrep "1#" ;then 
			echo "n'a pas d'entete" >> $erreur
		fi

		done
	done

		echo " Il y a $compteur script"

Hors ligne

#4 Le 21/08/2016, à 17:57

cqfd93

Re : Aide Script Bash [Résolu]

Déjà, avec le code, c'est mieux.

Tu as fait une batterie de test pour savoir si ça marche et dans le cas contraire, où ça coince ? Ça serait bon de montrer ça aussi.


cqfd93

Hors ligne

#5 Le 21/08/2016, à 18:27

iGenji

Re : Aide Script Bash [Résolu]

cqfd93 a écrit :

Déjà, avec le code, c'est mieux.

Tu as fait une batterie de test pour savoir si ça marche et dans le cas contraire, où ça coince ? Ça serait bon de montrer ça aussi.

c'est surtout ceci qui me pose problème

" Tous les messages d'erreur sont sauvés dans un fichier log dans le répertoire var du répertoire de
login de l'utilisateur, le nom du fichier incorpore le Pid du programme pour en assurer une
certaine unicité, ce nom est de la forme lshXXX.log où XXX représente le Pid du programme."

Je ne vois pas du tout comment faire

Hors ligne

#6 Le 21/08/2016, à 18:32

Watael

Re : Aide Script Bash [Résolu]

cqfd93 a écrit :

Tu as fait une batterie de test pour savoir si ça marche

penses-tu !
à quoi ça sert ? l'écriture d'un script en shell, c'est « juste trop pas de la programmation ! ».

pour apprendre à voler, ne faites pas de tests, un pas à la fois : jetez-vous tout de suite d'une falaise !


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 21/08/2016, à 18:36

erresse

Re : Aide Script Bash [Résolu]

Salut,
Quelques remarques "en passant" sur ton code :
À quoi est censé servir le deuxième "for folder..." ?
Si c'est pour obtenir la liste des fichiers du répertoire courant, ça ne va pas le faire du tout, tu cherches dans la liste des paramètres !
Pour les erreurs, il serait je crois judicieux d'inclure le nom du répertoire ou fichier concerné dans le message, sinon comment savoir sur quoi on détecté une erreur ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#8 Le 21/08/2016, à 18:39

cqfd93

Re : Aide Script Bash [Résolu]

iGenji a écrit :

c'est surtout ceci qui me pose problème

" Tous les messages d'erreur sont sauvés dans un fichier log dans le répertoire var du répertoire de
login de l'utilisateur, le nom du fichier incorpore le Pid du programme pour en assurer une
certaine unicité, ce nom est de la forme lshXXX.log où XXX représente le Pid du programme."

Je ne vois pas du tout comment faire

Dans ce domaine, je suis particulièrement incompétente, désolée.

Tiens, j'ai trouvé ça : http://blog.nicolashachet.com/niveaux/d … un-script/


cqfd93

Hors ligne

#9 Le 21/08/2016, à 18:43

pingouinux

Re : Aide Script Bash [Résolu]

Bonjour,

le nom du fichier incorpore le Pid du programme pour en assurer une
certaine unicité, ce nom est de la forme lshXXX.log où XXX représente le Pid du programme.

fichier=lsh$$.log

Hors ligne

#10 Le 21/08/2016, à 18:43

iGenji

Re : Aide Script Bash [Résolu]

erresse a écrit :

Salut,
Quelques remarques "en passant" sur ton code :
À quoi est censé servir le deuxième "for folder..." ?
Si c'est pour obtenir la liste des fichiers du répertoire courant, ça ne va pas le faire du tout, tu cherches dans la liste des paramètres !
Pour les erreurs, il serait je crois judicieux d'inclure le nom du répertoire ou fichier concerné dans le message, sinon comment savoir sur quoi on détecté une erreur ?

Oke merci comme ça c'est mieux ?

#!/bin/bash

if[$# -eq 0];then
	rep='./'
else
	rep=($*)
fi

erreur="~/var/log" #je ne sais pas comment mettre le Pid
compteur=0

	for repository in ${rep[$*]}
	do
		if[! -d $repository];then
			echo "N'est pas un repertoire" >> $erreur
		fi

		for folder in $repository/*
		do
			if [ ! -f fichier ];then  
			
		fi

		if ! file $folder | grep -q text ;then 
			echo "$folder n'est pas de type text" >> $erreur
			
		fi
		if ! head -n& $folder | egrep -q "^#!/bin/bash" ;then 
			echo "$folder n'est pas un script bash" >> $erreur
			
			fi

			return 1
			returnCode=0
			((compteur++)) 
			if ! head -n10 $folder | egrep "1#" ;then 
			echo "$folder n'a pas d'entete" >> $erreur
		fi

		done
	done

		echo " Il y a $compteur script"

Hors ligne

#11 Le 21/08/2016, à 18:47

iGenji

Re : Aide Script Bash [Résolu]

Oke Merci beaucoup à tous ! big_smile

problème résolu smile

Hors ligne