Bonjour,

J'ai un petit soucis dans la boucle de mon script lié à mon inexpérience :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
my @ldap = (`ldapsearch`) ;# Cette commande est volontairement tronquée list de tous les utilisateurs
foreach my $ldap (@ldap) {
	if ($ldap =~ /uid\=/) {
		my @uid= split/,/,$ldap;
		my @user = split /=/,$uid[0]; 
		$login = $user[1];
		print "Login : $login\n";
		my $pid = `ps \-fu $login | grep GTK2_passwd`;
		print "$pid\n";
			if ($pid =~ /GTK2_passwd/){
			next ;
			}
	}
 
	if ($ldap =~ /shadowLastChange/) {
		my @shdw = split/:/,$ldap;
		chomp ($shdw[1]);
		$shadow= mktime (0, 0, 0, $shdw[1], 0, 70);
		if (($local_unixtime - $shadow) > $unix_expire) {
			#print " on lance le GTK pour $login\n";
			my $cmd_disp_nb = `/usr/NX/bin/nxserver --list $login | grep localhost` ;
			chomp ($cmd_disp_nb);
			my @disp_nb = split /\s/,$cmd_disp_nb  ;
			#print "$disp_nb[0]\n";
			system ("su - $login -c \"export DISPLAY=:$disp_nb[0].0 && /usr/sbin/GTK2_script.pl\"");			
 
		}	
	}
}
Comme vous avez pu l'observer ce script démarre un autre script qui contient des object GTK. Je les ai séparés en deux car cette partie doit aller dans la crontab et c'est mieux s'ils sont idépendant. C'est pour cela que je fait un test avec la commande `ps` pour ne pas démarrer à chaque fois le script dans le bureau de l'utilisateur dont l'apparition de 50 fenêtre risquent de les perturber.

Comment faire pour faire le next proprement sans cassé la boucle? J'ai essayé de nommé la boucle sans succès.

Merci de votre aide.