Author Topic: user törlése scriptből ??  (Read 2148 times)

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
user törlése scriptből ??
« 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 ???


levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #1 on: November 20, 2012, 01:24:23 pm »
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.

Tibor Balázs

  • Zen Apprentice
  • *
  • Posts: 30
  • Karma: +2/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #2 on: November 23, 2012, 09:56:34 pm »
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!  :)

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #3 on: November 24, 2012, 08:30:38 am »
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 !!

Tibor Balázs

  • Zen Apprentice
  • *
  • Posts: 30
  • Karma: +2/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #4 on: November 24, 2012, 08:36:52 am »

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #5 on: November 24, 2012, 08:48:15 am »
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...

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #6 on: November 24, 2012, 09:02:19 am »
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 ??

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #7 on: November 26, 2012, 08:07:27 am »
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 ....


levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #8 on: December 23, 2012, 12:35:35 pm »
nincs valakinek egy működő scriptje ?

papp lászló

  • Zen Apprentice
  • *
  • Posts: 49
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #9 on: December 26, 2012, 09:36:34 am »
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


Tibor Balázs

  • Zen Apprentice
  • *
  • Posts: 30
  • Karma: +2/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #10 on: December 26, 2012, 03:54:29 pm »
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

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #11 on: December 27, 2012, 09:46:36 am »
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 ...


levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #12 on: January 30, 2013, 10:12:26 am »
Továbbra sincs megoldás rá ??

levideo

  • Zen Apprentice
  • *
  • Posts: 44
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #13 on: February 26, 2014, 10:25:23 am »
A kérdés még mindig adott : Hogyan lehet törölni usert perl scriptből ???

toby0501

  • Zen Apprentice
  • *
  • Posts: 18
  • Karma: +0/-0
    • View Profile
Re: user törlése scriptből ??
« Reply #14 on: March 18, 2014, 01:01:48 pm »
Nem tudom, sikerült-e megoldani, de ha nem, akkor próbáld meg ezt:

Code: [Select]
#!/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;