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 02/02/2008, à 08:41

pmdzlineur

bash: je coince au passage en root

ci-dessous un bash pour installer un logiciel médical.
Je le décompresse , puis je passe en root pour configurer mysql.
Et là  je reste sur le prompt root, le reste ne continue pas.
Je suis novice comme vous le voyez.
Merci d'un peu d'aide svp.

#!/bin/bash
DIALOG=${DIALOG=dialog}
cd /home/$USER
/usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
chown -R $USER MedinTuxDist-V1.26-Utf8
chmod -R 775  MedinTuxDist-V1.26-Utf8
fichmdp='tempfile 2>/dev/null'
echo "entrez votre mot de passe root" > $fichmdp
su - 
$fichmdp
rm $fichmdp
#o npasse en root 
/etc/init.d/mysql stop
#puis redémarrer en mode safe pour changer les tables d'autorisation
mysqld_safe --skip-grant-tables --skip-networking &
mysql mysql
#définir le mot de passe mysql
fichtemp='tempfile 2>/dev/null' || fichtemp=/tmp/test$$
trap "rm -f $fichtemp" 0 1 2 5 15
echo "choisissez un mot de passe mysql" 
2> $fichtemp
update user set password=password($fichtemp) where user="root" and host="localhost";
exit
/etc/init.d/mysql restart
mysql -u root -p
$fichtemp
GRANT ALL ON *.* TO root@localhost IDENTIFIED BY "";
./home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
GRANT ALL ON *.* TO root@localhost IDENTIFIED BY "$fichtemp";
exit

je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne

#2 Le 02/02/2008, à 09:04

helios91940

Re : bash: je coince au passage en root

comment as tu fait pour te loger en root?


There is no system but GNU, and Linux is one of its kernels.

Adhérez à l'APRIL!
http://www.april.org/adherer

Hors ligne

#3 Le 02/02/2008, à 09:17

pmdzlineur

Re : bash: je coince au passage en root

merci de ta réponse.
Jusqu'à 

fichmdp='tempfile 2>/dev/null'

je suis en user
puis je veux passer en root
je crée donc une variable dans lequel le mot de passe sera placé
et j'espère que cette variable sera lue après su - pour pouvoir partir sur un autre shell en root, mais ça ne marche pas.


je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne

#4 Le 02/02/2008, à 09:19

helios91940

Re : bash: je coince au passage en root

D'après la doc "Sous Ubuntu, le compte système (root) est bloqué. Vous ne pourrez pas vous y connecter à  l'aide de la commande su root (ou su seule). Pour effectuer des tà¢ches administratives, utilisez sudo ( cf: http://doc.ubuntu-fr.org/sudo ). Néanmoins, vous pouvez avoir accès à  un terminal superutilisateur en utilisant sudo sans que vous activiez le compte root."


There is no system but GNU, and Linux is one of its kernels.

Adhérez à l'APRIL!
http://www.april.org/adherer

Hors ligne

#5 Le 02/02/2008, à 09:29

pmdzlineur

Re : bash: je coince au passage en root

là  je suis sous debian pour ce travail, même si mes autres ordi sont sous ubuntu.
Donc ce n'est pas ça.
Mon bash est fait pour pouvoir être exécuté sur d'autres distrib, ce logiciel étant os indépendant.
Mon problème est que je sais pas comment faire un fork pour partir sur un sous shell en root.


je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne

#6 Le 02/02/2008, à 11:07

Aurel34

Re : bash: je coince au passage en root

il faut lancer ton logiciel en root, on ne peut pas "escalader" les privilèges sous unix... (enfin parfois si en exmploitant un bug, mais c'est une autre histoire).

par contre tu peux lancer un autre script "à exécuter en root" depuis ton premier script, genre

su root -c ". ./mon_script_root

à ce moment tu rentres ton pass, su lance ton shell (bash par exemple) et lui envoie l'argument -c ... pour lui demander de "sourcer" l'autre script.

A oui et puis ça ne sert à rien de stocker ton mdp dans une variable, vu que su n'acceptera de se lancer que depuis un terminal (pas uns cript). Il faut donc taper ton mdp à chaque fois.

#7 Le 02/02/2008, à 18:11

pmdzlineur

Re : bash: je coince au passage en root

j'ai changé mon script
ça marchait (mal)  avant la condition if , depuis ça ne marche plus du tout puisque ça ne me demande plus le mot de passe mysql hmm

#!/bin/bash -v
#cd /home/$USER
#/usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
#chown -R $USER MedinTuxDist-V1.26-Utf8
#chmod -R 775  MedinTuxDist-V1.26-Utf8

echo "entrez votre mot de passe root" 

#on npasse en root 
sudo /etc/init.d/mysql stop
#puis redémarrer en mode safe pour changer les tables d'autorisation
sudo mysqld_safe --skip-grant-tables --skip-networking &
if [ $? = 0 ] ;
 then
	do 
	  sudo mysql mysql 
	done
 else
	echo "erreur" > installerror.txt
fi
#définir le mot de passe mysql

echo -n "choisissez un mot de passe mysql" 
read mdpmysql

update user set password=password($mdpmysql) where user="root" and host="localhost";
exit
sudo /etc/init.d/mysql restart
mysql -u root -p[$mdpmysql]
GRANT ALL ON *.* TO root@localhost IDENTIFIED BY "";
./home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
GRANT ALL ON *.* TO root@localhost IDENTIFIED BY "$mdpmysql";
exit

ah lal la wink


je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne

#8 Le 03/02/2008, à 17:50

pmdzlineur

Re : bash: je coince au passage en root

ça y est je m'en suis sorti, mon bash marche :

#!/bin/bash -v
echo "assurez vous d'abord d'avoir installé /n
les paquets mysql: /n
mysql-client-5.0 /n
mysql-server-5.0 /n
mysql-admin /n
et leurs dépendances /n
et les paquets qt3 : /n
qt3-designer /n
qt3-qtconfig /n
etc...
et placez le .7zip dans votre dossier personnel"
sleep 5

touch /home/$USER/table && echo "#!/bin/bash
update user set password=password('') where user="root" and host="localhost";" > /home/$USER/table
chmod +x /home/$USER/table

cd /home/$USER
/usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
chown -R $USER MedinTuxDist-V1.26-Utf8
chmod -R 775  MedinTuxDist-V1.26-Utf8

echo "entrez votre mot de passe root" 

#on passe en root 
sudo /etc/init.d/mysql stop
#puis redémarrer en mode safe pour changer les tables d'autorisation
sudo mysqld_safe --skip-grant-tables --skip-networking & 
if [ "$?" == "0" ] 
 then 

#définir le mot de passe nul mysql
	mysql mysql < /home/$USER/table 
fi

sudo /etc/init.d/mysql restart
echo "une fois démarré le programme medintux, /n
vous cliquerez sur installer les bases /
puis un fois installées, sur démarrer medintux.
Vous pourrez donner ultérieurement un mot de passe à  votre base de donnée avec un autre progamme "
sleep 5
/home/pmddeb/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
exit

merci à  tous


je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne