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 12/11/2008, à 05:04

Goldy

$RANDOM innacessible en root dans mon script

Bonjour,

Je suis en train d'écrire un script nécessitant l'execution en root et utilisant la variable $RANDOM pour générer des chiffres aléatoires.

Le principe du script fonctionne, mais impossible de le lancer en root, la variable $RANDOM est vide.

Voilà pour vous montrer avec une ligne de débug qui echo $RANDOM au début du script

goldy@loli-pantsu:~/prog$ ./mac_changer 
DEBUG random 4972
Bienvenue dans le programme de changement d'adresse MAC d'Aperture Science


Vous n'êtes pas root, execution du script en sudo
DEBUG random 
Bienvenue dans le programme de changement d'adresse MAC d'Aperture Science


Vous êtes root
Veuillez sélectionner une option :

	1. Changer l'adresse mac aléatoirement
	2. Restaurer l'adresse mac matériel

Comment puis-je accéder à $RANDOM en root ?

Merci d'avance.

Dernière modification par Goldy (Le 12/11/2008, à 13:13)

Hors ligne

#2 Le 12/11/2008, à 09:53

tiky

Re : $RANDOM innacessible en root dans mon script

Chez moi:

echo $RANDOM

fonctionne parfaitement en root.
Le problème vient de ton programme.


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#3 Le 12/11/2008, à 12:26

fugitif

Re : $RANDOM innacessible en root dans mon script

Idem

[11:25:56]~ root@ubuntu:~$ echo $RANDOM
22059
[11:25:57]~ root@ubuntu:~$ echo $RANDOM
5633
[11:25:58]~ root@ubuntu:~$ echo $RANDOM
28892
[11:25:58]~ root@ubuntu:~$ exit
exit
[11:26:10]~ fugitif@ubuntu:~$ echo $RANDOM
27694


Opteron 165 - 2Go DDR - Ubuntu Hardy - 32bits

Hors ligne

#4 Le 12/11/2008, à 13:07

Goldy

Re : $RANDOM innacessible en root dans mon script

Effectivement, moi aussi ça me trouble, parce que lancé comme ça, ça fonctionne.

Pourtant, vous remarquez bien comme moi que l'execution du script affiche le nombre random et qu'il ne s'affiche plus une fois le script passé en root. Je me demande bien quel type d'erreur ça peut être.

Pour info, je copie la commande que j'ai écrite pour relancer le script en root

if [ $USER = root ]
	then echo "Vous êtes root"
else
	echo "Vous n'êtes pas root, execution du script en sudo"
	sudo $0
	exit
fi

Le problème est le même si je lance le script directement en root avec sudo. Il doit bien y avoir une explication à ce problème.

Le fait qu'il reconnaisse $USER montre que ce n'est pas un problème de path, mais uniquement $RANDOM, je vais essayer de faire d'autres scripts avec random dedans pour voir.

Dernière modification par Goldy (Le 12/11/2008, à 13:22)

Hors ligne

#5 Le 12/11/2008, à 18:26

Goldy

Re : $RANDOM innacessible en root dans mon script

Je viens de faire de nouveau testes.

Le problème semble venir de sudo, j'ai crée un script simple :

#/bin/bash

#Test random

echo "Test de \$RANDOM"
echo
echo "\$RANDOM = $RANDOM"

Et voilà ce que j'obtiens en console

goldy@loli-pantsu:~/prog$ ./random
Test de $RANDOM

$RANDOM = 227
goldy@loli-pantsu:~/prog$ sudo ./random
Test de $RANDOM

$RANDOM = 
goldy@loli-pantsu:~/prog$ sudo -s
root@loli-pantsu:~/prog# ./random
Test de $RANDOM

$RANDOM = 904

On vois que passer avec sudo, la variable $RANDOM est vide, par contre, une fois dans un terminal en root, alors la variable redevient valide.

Je pense qu'il s'agit vraisemblablement d'un bug, est-ce que quelqu'un peut essayer de lancer ce script pour vérifier ?

Hors ligne

#6 Le 12/11/2008, à 18:31

seb0uil

Re : $RANDOM innacessible en root dans mon script

idem,
avec le script

$ ./test.sh
Test de $RANDOM

$RANDOM = 11341

$ sudo ./test.sh
Test de $RANDOM

$RANDOM =

alors que :

$ echo $RANDOM
25797
$ sudo echo $RANDOM
26709

Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#7 Le 12/11/2008, à 18:32

Goldy

Re : $RANDOM innacessible en root dans mon script

Je viens d'essayer avec l'option -s à sudo

goldy@loli-pantsu:~/prog$ sudo -s ./random
Test de $RANDOM

$RANDOM = 983

Et ça marche.

Donc visiblement, il faut utiliser -s à sudo pour lancer un script avec $RANDOM dedans. On dirait effectivement un bug.

Hors ligne

#8 Le 12/11/2008, à 18:36

seb0uil

Re : $RANDOM innacessible en root dans mon script

Effectivement, d'ailleurs en affichant l'user dans le script, on a bien

$ ./test.sh
Test de $RANDOM

24313
User :
seb0uil

$ sudo ./test.sh
Test de $RANDOM


User :
root

$ sudo  -s ./test.sh
Test de $RANDOM

22922
User :
root

ca fonctionne avec la variable $USER, mais pas avec $RANDOM (sans le -s )


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#9 Le 12/11/2008, à 18:42

Goldy

Re : $RANDOM innacessible en root dans mon script

Je viens de tester sur une debian lenny et le problème n'est pas présent :

goldy@petite-loli:~/prog$ ./random
Test de $RANDOM

$RANDOM = 29665
goldy@petite-loli:~/prog$ sudo ./random
[sudo] password for goldy: 
Test de $RANDOM

$RANDOM = 3257

Hors ligne

#10 Le 12/11/2008, à 19:01

seb0uil

Re : $RANDOM innacessible en root dans mon script

Goldy a écrit :

Je viens de faire de nouveau testes.

Le problème semble venir de sudo, j'ai crée un script simple :

#/bin/bash

#Test random

echo "Test de \$RANDOM"
echo
echo "\$RANDOM = $RANDOM"

Le problème me semble plutot venir du script...
Finallement chez moi ca marche avec un
#! /bin/bash

sans quoi sudo utilise /bin/dash par defaut (il me semble) sur ubuntu, et ce dernier ne semble pas connaitre $RANDOM

$ /bin/dash
$ echo $RANDOM

$ /bin/bash
seb0uil@eeeXubuntu:/tmp$ echo $RANDOM
691

pour ce qui est du -s, le man nous indique

-s  The -s (shell) option runs the shell specified by the SHELL envi‐
           ronment variable if it is set or the shell as specified in
           passwd(5).

et chez moi

$ echo $SHELL
/bin/bash

cqfd


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#11 Le 12/11/2008, à 19:03

Goldy

Re : $RANDOM innacessible en root dans mon script

Effectivement... C'est moi qui avait oublié d'écrire convenablement l'en-tête du script.

...

J'avais ouvert un rapport de bug sur launchpad.... le fail.

Hors ligne

#12 Le 12/11/2008, à 19:06

seb0uil

Re : $RANDOM innacessible en root dans mon script

en complément,un petit test (en ayant enlever la premiere ligne du script #! ... )

$ sudo ./test.sh
Test de $RANDOM

User :
root

$ ./test.sh
Test de $RANDOM

28626
User :
seb0uil

$ cd /bin
/bin$ ls -l sh
lrwxrwxrwx 1 root root 4 2008-02-06 00:42 sh -> dash

/bin$ sudo rm sh
/bin$ sudo ln -s bash sh
/bin$ ls -l sh
lrwxrwxrwx 1 root root 4 2008-11-12 18:03 sh -> bash

$ cd /tmp/
/tmp$ ./test.sh
Test de $RANDOM

23116
User :
seb0uil

/tmp$ sudo ./test.sh
Test de $RANDOM

24934
User :
root

c'est donc a priori bien ca ! tongue


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#13 Le 12/11/2008, à 19:14

Goldy

Re : $RANDOM innacessible en root dans mon script

Oui, j'ai corrigé ça dans mon script, et ça fonctionne maintenant.

Ça faisait un moment que j'avais pas fait de script et j'avais oublié ce fondamental.

Hors ligne