Je viens vous demander de l'aide pour l'édition d'un script.
Je suis totalement novice et ceci n'est juste pour me familiariser avec les scripts...
Avec ce script, je vais écrire dans un fichier d'un utilisateur (utilisateur enregistré dans le passwd).
Donc, avec un "read -p" , je demande le nom de l'utilisateur, ce qui me crée la variable $user et avec la possibilité d'un appui de la touche q pour quitter le script.
read –p "Utilisateur (q pour quitter) : " user
Et c'est juste après que ça coince, j’ai besoin de vérifier que :
- Si j'appuie sur "q", on quitte le programme (pourquoi pas ne pas faire une fonction au début du script et l'appeler à ce moment elle pourrai être utile pour d’autre vérification).
- De vérifier que la variable $user n'est pas vide.
- De vérifier que la variable $user n'est pas = a $user_interdit (variable définie en dur au début du script).
J’ai essayé les boucles, les conditions, des boucles dans des conditions, je ne trouve et comprend rien.
Ceci est pour la partie de vérification de read -p.
Par la suite, je souhaite vérifier dans mon passwd que la valeur de $user est bien présente.
Avec ceci j'arrive à savoir si mon utilisateur existe ou pas :
grep -w ^$user /etc/passwd > /dev/null;
echo $?
0 mon utilisateur existe
1 mon utilisateur n’existe pas.
Lorsque mon résultat est 1 donc que mon utilisateur n’existe pas, je souhaiterai que mon programme redemande la question du nom d’utilisateur et reprenne le cycle de vérification depuis le début.
J’espère avoir été assez clair dans mes explications.
Autre question, la redirection de la sortie d’affichage vers un fichier avec '>>' ne fonctionne uniquement en su?
Merci à tous par avance de vos réponses.
- Edité par Eric24 5 février 2015 à 22:54:29
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.
$ until grep -qw "^$user" /etc/passwd; do echo "quel utilisateur ? "; read user; done; echo "$user est présent dans /etc/passwd"
quel utilisateur ?
broc
quel utilisateur ?
shnock
quel utilisateur ?
dan
dan est présent dans /etc/passwd
«Autre question, la redirection de la sortie d’affichage vers un fichier avec '>>' ne fonctionne uniquement en su?»
je ne comprend pas. il manque le contexte.
- Edité par dantonq 7 février 2015 à 23:01:20
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Désolé pour se long silence à ceux qui m'ont répondu et qui attendent des réponses de ma part.
Donc Dantonq, j'ai testé se que tu m'as donné et sa fonctionne parfaitement, il ne me reste plus qu'a intégré la sortie du script si "q" est frappé.
A tous les deux, pour la redirection " >> " en fais mon script doit permettre de rajouter des alias dans le .bashrc de l'utilisateur choisit précédemment.
Donc le script s’exécute en su ou root (je part du principe que c'est l'admin qui utilise le script.)
Une fois l'utilisateur choisit, le script demande le nom de l'alias et le nom de la commande de base. Et je voulais utiliser >> pour intégrer les alias définis a la fin du fichier .bashrc de l'utilisateur.
Le soucis, c'est que si je lance la commande echo blablabla >> mon_fichier; depuis mon terminal sa fonctionne mais depuis mon script, sa ne fonctionne pas.
J'espère avoir été assez précis dans mon explication.
- Edité par Eric24 2 mars 2015 à 16:16:00
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.
$ cat monScript
#!/bin/bash
test $UID -eq 0 || {
echo "err: must be root"
exit 1
}
#
echo "bla bla" >> monFichier
#
echo "contenu de \"monFichier\""
cat monFichier
$ chmod +x monScript
$ ./monScript
err: must be root
$ su -c ./monScript
Mot de passe :
contenu de "monFichier"
bla bla
$ su -c ./monScript
Mot de passe :
contenu de "monFichier"
bla bla
bla bla
- Edité par dantonq 2 mars 2015 à 20:15:14
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
EDIT: La redirection >> fonction depuis mon script vers le fichier.
en fait au lieu d'écrire echo blablabla >> mon_fichier je l'avais écris avec des "echo "blablabla >> mon_fichier";
- Edité par Eric24 2 mars 2015 à 22:02:53
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.
Vérification utilisateur script bash
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Pensez au +1 pour ce qui vous ont aidés et n'oubliez pas de tagger votre sujet lorsqu'il est résolu.