Zentyal Forum, Linux Small Business Server
International => Magyar => Topic started by: levideo on November 20, 2012, 01:14:54 pm
-
Találtam olyan scriptet, amivel usereket lehet fájlból kiolvasva létrehozni.
Nekem viszont olyan kéne amivel törölni tudnék usert.
Hiába próbáltam így :
#!/usr/bin/perl
use strict;
use warnings;
use EBox;
use EBox::UsersAndGroups::User;
use EBox::Global;
EBox::init();
my @users;
open (my $USERS, 'users2.txt');
while (my $line = <$USERS>) {
chomp ($line);
my $user;
my ($givenname, $surname, $p, $desc, $nev, $m, $username ) = split(';', $line);
my $email=$username.'@matrametal.hu';
$user->{'user'} = $username;
$user->{'givenname'} = $givenname;
$user->{'surname'} = $surname;
$user->{'password'} = $p;
$user->{'mail'} = $email;
$user->{'comment'} = $desc;
# print $username.", ".$surname." ; ";
push (@users, $user);
....
}
close ($USERS);
foreach my $user (@users) {
my $h=$user->{'user'};
EBox::UsersAndGroups::User->deleteObject('uid=$h,ou=Users,dc=matrametal,dc=hu');
}
1;
Nem megy...
Valakinek ötlete van ???
-
ez a hiba üzenet :
Can't use string ("EBox::UsersAndGroups::User") as a HASH ref while "strict refs" in use at /usr/share/perl5/EBox/UsersAndGroups/User.pm line 81.
-
ez a hiba üzenet :
Can't use string ("EBox::UsersAndGroups::User") as a HASH ref while "strict refs" in use at /usr/share/perl5/EBox/UsersAndGroups/User.pm line 81.
A group létrehozó topikban is azt javasolták, hogy ne referenciát adjak át. Itt is ez lehet a gond.
De bennem felmerült még más is: vannak bizonyos helyek ahol azt mondjuk, hogy felhasználót sose törlünk.
Mi ennek az oka? Az, hogy az user által elkövetett tevékenységek nyomozására akár még évek múlva is szükség lehet.
Bár ha nincs Informatikai Biztonsági Szabályzat az adott helyen akkor ezt nem kell annyira erőltetni.
Ha mégis kell nyomozni akkor majd lesz rá szabály is, gondolom! :)
-
Gondolom ebben a sorban van a gond:
EBox::UsersAndGroups::User->deleteObject('uid=$h,ou=Users,dc=matrametal,dc=hu');
Helyette mit kéne ide írnom ??
A group létrehozó topikban is azt javasolták
Erről a topikról küldenél egy linket !!
-
Itt (http://forum.zentyal.org/index.php/topic,13139.0.html (http://forum.zentyal.org/index.php/topic,13139.0.html)) a fórumon van erre példa
-
Akkor valami ilyesmi kéne ?
#!/usr/bin/perl
use strict;
use warnings;
use EBox;
use EBox::UsersAndGroups::User;
EBox::init();
open (my $U, 'users.txt');
while (my $line = <$U>) {
chomp ($line);
my ($uname, $system) = split(',', $line);
EBox::UsersAndGroups::User->deleteObject($uname);
print "A user totolve: $uname\n";
}
close ($U);
1;
A users.txt tartalma meg :
user1,0
user2,0
user3,0
Kipróbálom a hétvégén...
-
ez a hiba üzenet :
Can't use string ("EBox::UsersAndGroups::User") as a HASH ref while "strict refs" in use at /usr/share/perl5/EBox/UsersAndGroups/User.pm line 81.
A group létrehozó topikban is azt javasolták, hogy ne referenciát adjak át. Itt is ez lehet a gond.
De bennem felmerült még más is: vannak bizonyos helyek ahol azt mondjuk, hogy felhasználót sose törlünk.
Mi ennek az oka? Az, hogy az user által elkövetett tevékenységek nyomozására akár még évek múlva is szükség lehet.
Bár ha nincs Informatikai Biztonsági Szabályzat az adott helyen akkor ezt nem kell annyira erőltetni.
Ha mégis kell nyomozni akkor majd lesz rá szabály is, gondolom! :)
Igazából csak tesztelés céljából kell a törlő script.
Scripttel létrehoztam egy csomó teszt usert, de körülményesnek tartom egyesével törölgetni őket a webUI-n.
Egyébként meg éles helyzetben is jól jöhet, ha nincs webes elérhetőség csak SSH.
Viszont tapasztaltam még egy érdekes hibát a egy user törlésekor : Nem törli a home könyvtárát.
Ez gáz.
Mert ha a cégtől elmegy egy dolgozó, a főnököm közli, hogy töröljem a rendszerből.
Én törlöm, de a home könyvtára, és benne az összes fájlja, levele ugye megmarad.
Ha a munkatárs fél év múlva visszajön a céghez, újra létre kéne hoznom a Zentyalban.
Viszont nem engedi a WEBUI-n , mert van home könyvtára. Patt helyzet !!
Szerintetek miért van ez így, és mi lehet a korrekt megoldás ??
-
ez a hiba üzenet :
Can't use string ("EBox::UsersAndGroups::User") as a HASH ref while "strict refs" in use at /usr/share/perl5/EBox/UsersAndGroups/User.pm line 81.
A group létrehozó topikban is azt javasolták, hogy ne referenciát adjak át. Itt is ez lehet a gond.
Nos így sem jó.
A hibaüzenet ugyanaz ....
-
nincs valakinek egy működő scriptje ?
-
Szia!
Nos scripem nincs.
Viszont én hasonló helyzetben nem törlöm a felhasználót. logikus következtetésnek tartom a felhasználó megtartását.
Én 1. csak a jelszavát írnám át a usernek. Így ha visszajön újra aktívvá tehető a fiókja.
2. ha visszajön más névvel venném fel újra.
Persze ez csak az én megoldásom lenne
további szép ünnepeket
-
Ha tesztelésről van szó akkor jól jönne egy script az userek törlésére.
Éles környezetben én sose törölnék usereket! Miért?
Mi van ha visszamenőleg 5 évre nyomozni kell egy user tevékenysége után!?
c
-
Papp László 1. megoldása logikusnak tűnik. Én is ezt alkalmazom éles szerveren.
Csak teszt, gyakorlás miatt lett volna jó. Egyébként, miért nem lehet megoldani, hiszen a WEBGUI-n működik egy felhasználóval.
Akkor miért nem lehet ezt megcsinálni PERL scripttel, konzolról ??
Igazán közzé tehetnék a megoldást a ZENTYAL -készítői ...
Tudom, benne van a scriptekben, csak én (meg más sem) jön rá, hogy hogyan kell ...
-
Továbbra sincs megoldás rá ??
-
A kérdés még mindig adott : Hogyan lehet törölni usert perl scriptből ???
-
Nem tudom, sikerült-e megoldani, de ha nem, akkor próbáld meg ezt:
#!/usr/bin/perl
use strict;
use warnings;
use EBox;
use EBox::Global;
EBox::init();
my $usersModule = EBox::Global->modInstance('users');
my @users = ();
open(my $USERS,"users") or die "Error opening 'users' file: $!";
while(my $line = <$USERS>) {
chomp ($line);
my ($username,$givenname,$surname,$password) = split(',',$line);
push(@users,$username);
}
close($USERS);
foreach my $username (@users) {
$usersModule->delUser($username);
}
1;
-
A scriptet futtatva ezt kapom :
Can't locate object method "delUser" via package "EBox::Users" at ./user_del2.pl line 22.