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 27/08/2007, à 15: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, à 20:43)

Hors ligne

#2 Le 27/08/2007, à 15: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, à 15: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, à 16: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, à 16: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, à 16: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, à 16: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, à 16:44)

Hors ligne

#8 Le 27/08/2007, à 17: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, à 17:48)

#9 Le 27/08/2007, à 20: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, à 11: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, à 10: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, à 12: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, à 16: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