#1 Le 27/08/2007, à 14:03
- $c0ubid0u
[Resolu] Script bash / Création d'user / Serveur web
Bonjour,
Grace a un tuto j'ai realiser ce script :
#!/bin/bash
# récupération des paramètres
echo "Entrez le nom du compte a creer : "
read login;
echo "Entrez son mot de passe : "
read password;
passmysql=$password
echo "Entrez le nom de domaine (sans \"www\", par exemple domaine.com) : "
read domaine;
# vérification
echo
echo "Domaine : $domaine"
echo "Compte : $login"
echo "Passwd : $password"
echo "Est-ce correct ? (o/[n]) "
read ans;
if [ $ans != o -a $ans != O ]
then
echo "Bye !"
fi
# création du user (le programme s'arrête par sécurité si le user existe déja )
/usr/sbin/useradd $login -p `perl -e "print crypt('$password',pwet)"` -g vhosts -d /home/$login -m -s /bin/bash
if [ $? -ne 0 ]
then
echo "L'utilisateur $login existe déjà , opération annulée !"
fi
echo " + Utilisateur \"$login\" cr??\n"
# création des répertoires
/bin/mkdir /home/$login /home/$login/www
echo " + Répertoires créés\n"
# Copie de php5-cgi dans le répertoire cgi-bin de l'utilisateur
/bin/cp -R /usr/lib/cgi-bin/ /home/$login/
echo " + php5-cgi copié\n"
# création du lien symbolique "www" nécessaire a Proftpd
cd /home/$login/
ln -s /usr/share/phpmyadmin/ phpmyadmin
echo " + Lien \"phpmyadmin\" créé\n"
# modifications des droits sur les dossiers
# chown -R $login:vhosts /var/www/$login/
chown -R $login /home/$login/
chmod -R 755 /home/
echo " + Droits modifiés\n"
mkdir /etc/apache2/vhosts
# création du virtual host (inclus dans httpd.conf)
echo "
<VirtualHost *>
ServerAlias $login.sebastien247.homelinux.com
DocumentRoot /home/$login/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/$login/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
" >> /etc/apache/vhosts/$login.conf
echo " + VirtualHost Apache creer\n\n"
# mysql
echo "Faut-il installer une base de donnée mySQL ? (o/[n]) "
read ans;
if [ $ans = o -o $ans = O ]
then
echo "Entrez le password root mysql :"
read passroot;
# création de la base
/usr/bin/mysqladmin -u root -p$passroot create $login
echo "Base MySQL \"$login\" creer\n"
# création du compte + db + droits
/usr/bin/mysql -u root --password=$passroot mysql <<END_COMMANDS
GRANT ALL PRIVILEGES ON $login.* TO "$login"@"localhost" IDENTIFIED BY '$passmysql';
FLUSH PRIVILEGES;
END_COMMANDS
# redémarrage de la base
/usr/bin/mysqladmin -u root -p$passroot reload
echo "User MySQL \"$login\" cr??\n"
else
echo "Tant pis ..."
fi
Mais les erreurs suivante arrive :
server:/home/sebastien/Desktop# sh serveur_web.sh
Entrez le nom du compte a creer :
****
: command not founde 5:
: command not founde 6:
Entrez son mot de passe :
****
: command not founde 8:
: command not founde 10:
Entrez le nom de domaine (sans "www", par exemple domaine.com) :
****
: command not founde 12:
: command not founde 13:
: command not founde 15: echo
Domaine : ****
Compte : ****
Passwd : ****
Est-ce correct ? (o/[n])
o
: command not founde 20:
serveur_web.sh: line 119: syntax error near unexpected token `fi'
serveur_web.sh: line 119: `fi'
Merci par avance pour votre aide
nb : Je debute en script shell
Dernière modification par $c0ubid0u (Le 27/08/2007, à 19:43)
Hors ligne
#2 Le 27/08/2007, à 14:28
- Compte anonymisé
Re : [Resolu] Script bash / Création d'user / Serveur web
Salut
As-tu essayer d'exécuter ton script ainsi :
bash nom_du_script
ou :
chmod a+x nom_du_script
puis :
./nom_du_script
@+
#3 Le 27/08/2007, à 14:56
- $c0ubid0u
Re : [Resolu] Script bash / Création d'user / Serveur web
Je vien de le faire, et toujours la meme erreur
Hors ligne
#4 Le 27/08/2007, à 15:24
- Maitrepylos
Re : [Resolu] Script bash / Création d'user / Serveur web
Salut, chez moi ça passe sans problème.
Vérifie si bash est installé sur ta machine.
par contre attention ici
then
echo "Bye !"
fi
Parce que qu'elle que soit la réponse il passe à la partie suivante du code
L'experience est la somme de toutes nos erreurs
Hors ligne
#5 Le 27/08/2007, à 15:27
- $c0ubid0u
Re : [Resolu] Script bash / Création d'user / Serveur web
a oui, j'ai oublier de pressiser le serveur et sur une debian 4
bash et installer
Hors ligne
#6 Le 27/08/2007, à 15:29
- Maitrepylos
Re : [Resolu] Script bash / Création d'user / Serveur web
a tout hasard, remplace echo par print
L'experience est la somme de toutes nos erreurs
Hors ligne
#7 Le 27/08/2007, à 15:37
- $c0ubid0u
Re : [Resolu] Script bash / Création d'user / Serveur web
then
echo "Bye !"
sleep
exit
fi
C'est mieu ?
avec print c'est encore pire, il y a plus d'erreur
Edit :
Malgrer les not found les echo marche, mais le problemme qui me gene le plus c'est a la ligne 119
Dernière modification par $c0ubid0u (Le 27/08/2007, à 15:44)
Hors ligne
#8 Le 27/08/2007, à 16:46
- Compte anonymisé
Re : [Resolu] Script bash / Création d'user / Serveur web
Salut
J'ai aussi fait un test et pas d'erreur !!!
Tu peux tenter de récupérer le script depuis le forum (par copier coller) puis de l'intégrer dans un fichier via l'éditeur vi :
les commandes (si tu ne connais pas vi) :
vi test_bash puis :
appuyer sur la touche i (i minuscule pour insertion)
puis clic droit dans la fenêtre de l'éditeur et coller
tu quittes par la série de touches :
[Echap] (sortie du mode insertion) puis :wq pour w(rite) q(uit)
Je pense qu'il y a dans ton fichier script des caractères "parasites".
@+
Dernière modification par Compte anonymisé (Le 27/08/2007, à 16:48)
#9 Le 27/08/2007, à 19:43
- $c0ubid0u
Re : [Resolu] Script bash / Création d'user / Serveur web
Nikel sa marche au poil merci
Hors ligne
#10 Le 10/10/2007, à 10:01
- Xarkam
Re : [Resolu] Script bash / Création d'user / Serveur web
Bonjour,
j'ai trouvé ce script qui est vraiment pas mal
Donc j'ai repris les grandes bases que j'ai adapté mais je n'est pas encore testé la partie création utilisateur et la boucle fin de script.
Il manque aussi la vérification qui valide si l'utilisateur est en mode root ou non lorsqu'il exécute le script.
#!/bin/bash
demande_infos_utilisateur() {
#demande des infos
echo "Entrez le login du compte utilisateur local :"
read login;
echo "Entrez le mot de passe du compte utilisateur local :"
read password;
echo "Entrez le nom du groupe d'utilisateurs dans le quelle vous souhaitez l'ajouter : "
read groups_utilisateurs;
passmysql=$password
# vérification
echo
echo "Compte : $login"
echo "Passwd : $password"
echo "Est-ce correct ? (o/[n]) "
read ans;
if [ "$ans" != "o" -a "$ans" != "O" ]
then
#echo "Bye !"
etat_script=100
boucle_fin_script
fi
}
creation_compte_utilisateur(){
# création du user (le programme s'arrête par sécurité si le user existe déja )
/usr/sbin/useradd $login -p `perl -e "print crypt('$password',pwet)"` -g $groups_utilisateurs -d /home/$login -m -s /bin/bash
if [ $? -ne 0 ]
then
#echo "L'utilisateur $login existe déjà , opération annulée !"
etat_script=110
boucle_fin_script
fi
echo " + Utilisateur \"$login\" créé\n"
}
creation_compte_mysql() {
echo "Faut-il installer une base de donnée mySQL ? (o/[n]) "
read ans;
if [ $ans = o -o $ans = O ]
then
echo "Veuillez entrer le mot de passe root de mysql :"
read mysqlpassroot;
# création de la base
/usr/bin/mysqladmin -u root -p $mysqlpassroot create $login
echo "Base MySQL \"$login\" créée\n"
# création du compte + db + droits
/usr/bin/mysql -u root -p $mysqlpassroot mysql <<END_COMMANDS
GRANT ALL PRIVILEGES ON $login.* TO "$login"@"localhost" IDENTIFIED BY '$passmysql';
FLUSH PRIVILEGES;
END_COMMANDS
# redémarrage de la base
/usr/bin/mysqladmin -u root -p $mysqlpassroot reload
echo "User MySQL \"$login\" créé\n"
echo "La création c'est bien déroulée"
fi
}
boucle_fin_script(){
case "$etat_script" in
100)
echo "Les informations de l'utilisateur on étés notées comme invalides , opération annulée !"
echo "Bye."
sleep 3
exit 0
;;
110)
echo "L'utilisateur $login existe déjà , opération annulée !"
echo "Bye."
sleep 3
exit 0
;;
*)
echo "La création de l'utilisateur ainsi que de sa base mysql c'est bien déroulée"
echo "Bye."
sleep 3
exit 0
esac
}
###############################################
etat_script=0
ROOT_UID=0 # Root a l'identifiant $UID 0.
if [ "$UID" -eq "$ROOT_UID" ] # Le vrai "root" peut-il se lever, s'il-vous-plaît ?
then
demande_infos_utilisateur
creation_compte_utilisateur
creation_compte_mysql
boucle_fin_script
else
echo "Vous êtes simplement un utilisateur ordinaire (mais maman vous aime tout autant)."
fi
exit 0
11-10-2007 , Edit: Ajout de la vérification si le script est lancé en tant que root ou non.
Dernière modification par Xarkam (Le 11/10/2007, à 09:46)
Osames Manager
---
Asus Rampage V Extrême | Intel i7 5820K | Corsair 16GB DDR4 | NVIDIA GeForce 770GTX
Utilisateur d'Ubuntu, Debian, et Windows
Hors ligne
#11 Le 11/10/2007, à 11:46
- Xarkam
Re : [Resolu] Script bash / Création d'user / Serveur web
Pour ceux qui aiment les boites de dialogues j'ai refait la partie de demande d'infos
#!/bin/bash
demande_infos_utilisateur() {
login=$($DIALOG --stdout --backtitle "Création d'un nouvelle utilisateur" \
--title "Login" \
--inputbox "Entre le login du compte utilisateur local : " 0 0 \
)
password=$($DIALOG --stdout --backtitle "Création d'un nouvelle utilisateur" \
--title "Mot de passe : " \
--inputbox "Entre le mot de passe du compte utilisateur local : " 0 0 \
)
groups_utilisateurs=$($DIALOG --stdout --backtitle "Création d'un nouvelle utilisateur" \
--title "Groupe d'utilisateurs" \
--inputbox "Entrez le nom du groupe d'utilisateurs dans le quelle vous souhaitez l'ajouter : " 0 0 $login\
)
groupes=`groups $login`
if [ -n $groupes ]
then
groupes=$login
fi
infos=$($DIALOG --stdout --backtitle "Création d'un nouvelle utilisateur" \
--title "Informations des données entrées" \
--yesno "Voici un récapitulatif des informations que vous avez entré:\n \
Nom d'utilisateur local : $login\n \
Mot de passe local : $password\n \
Group où à été ajouté l'utilisateur : $groups_utilisateurs \n \
Groupes par défaut : $groupes \n\n \
Ces valeurs sont-elles correctes ?\n" \
0 0 )
retval="$?"
case "$retval" in
0)
exit 0
;;
*)
$DIALOG --stdout --backtitle "Création d'un nouvelle utilisateur" \
--title "Erreur de données" \
--yesno "Vous avez invalidé les données entrées.\n \
Voules-vous reprendre la procédure ou bien quitter le script ?" \
0 0
if [ $? == "0" ]
then
demande_infos_utilisateur
else
exit 0
fi
;;
esac
}
#############################
DIALOG=${DIALOG=dialog}
demande_infos_utilisateur
exit 0
Copiez/collez ce code pour tester.
Dernière modification par Xarkam (Le 11/10/2007, à 15:35)
Osames Manager
---
Asus Rampage V Extrême | Intel i7 5820K | Corsair 16GB DDR4 | NVIDIA GeForce 770GTX
Utilisateur d'Ubuntu, Debian, et Windows
Hors ligne