Mini Shell
#!/bin/bash
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
eval 'if [ -x /usr/local/cpanel/3rdparty/bin/perl ]; then exec /usr/local/cpanel/3rdparty/bin/perl -x -- $0 ${1+"$@"}; else exec /usr/bin/perl -x $0 ${1+"$@"}; fi;'
if 0;
#!/usr/bin/perl
#BEGIN { unshift @INC, '/scripts'; }
BEGIN { unshift @INC, '/usr/local/cpanel', '/scripts'; }
my $pckg_name = 'Cpanel';
use strict;
use warnings;
eval "use " .$pckg_name . "::Config::Users ();";
if ($@){
$pckg_name = 'cPScript';
eval "use " .$pckg_name . "::Config::Users ();";
}
#eval "use " .$pckg_name . "::Config::Users ();";
eval "use " .$pckg_name . "::DB::Map ();";
eval "use " .$pckg_name . "::DB ();";
use Data::Dumper;
my @old = ();
my @new = ();
my @copy_new = ();
my $noSystemUsers = ($#ARGV >= 0 && $ARGV[0] eq "--nosys");
if ($noSystemUsers) {
shift @ARGV;
}
my $numArgs = $#ARGV + 1;
if($numArgs>0){
foreach my $mb (@ARGV) {
if($mb>0){
my $uname_1 = getpwuid($mb);
@new = get_map_list_user_($uname_1);
foreach my $item (@new){
my $fnd = 0;
foreach my $item2 (@old){
if (($$item[0] eq $$item2[0]) && ($$item[1] eq $$item2[1])){
$fnd = 1;
last;
}
}
if($fnd==0){
push @old, $item;
}
}
}
}
foreach my $item (@old){
print $$item[0], " ", $$item[1], " ", $$item[2], "\n";
}
} else {
@new = get_map_list_();
@copy_new = map { [@$_] } @new;
my @del_list = ();
my @del_list2 = ();
my $i=0;
my $j=0;
foreach my $item (@new){
$j=0;
my $del = 0;
foreach my $item2 (@old){
if (($$item[0] eq $$item2[0]) && ($$item[1] eq $$item2[1])){
push @del_list, $j;
$del = 1;
}
$j++;
}
if($del==1){
push @del_list2, $i;
}
$i++;
}
foreach my $item (@del_list){
delete $old[$item];
}
foreach my $item (@del_list2){
delete $new[$item];
}
@old = grep {$_} @old;
@new = grep {$_} @new;
my $cnt_old = @old;
my $cnt_new = @new;
if($cnt_old>0 || $cnt_new>0){
foreach my $item (@copy_new){
print $$item[0], " ", $$item[1], " ", $$item[2], "\n";
}
}
}
sub get_map_list_ {
my @arr = ();
my @users =Cpanel::Config::Users::getcpusers();
foreach my $user (@users) {
my $user_map1 = Cpanel::DB::get_map ( {'cpuser' => $user} );
my $name="";
my $uid= -1;
my $dummy;
($name, $dummy, $uid, $dummy, $dummy, $dummy, $dummy, $dummy, $dummy) = getpwnam($user);
if ($uid>=0 && !$noSystemUsers){
push @arr, [ $user, $user, "$uid" ];
}
if ($uid>=0 && exists($$user_map1{'stash'}{'MYSQL'}{'dbusers'})){
for my $key (keys %{$$user_map1{'stash'}{'MYSQL'}{'dbusers'}}) {
push @arr, [ $key, $user, "$uid" ];
}
}
}
return @arr;
}
sub get_map_list_user_ {
my @arr = ();
my $user = shift;
my $user_map1 = Cpanel::DB::get_map ( {'cpuser' => $user} );
my $name = "";
my $uid = -1;
my $dummy;
($name, $dummy, $uid, $dummy, $dummy, $dummy, $dummy, $dummy, $dummy) = getpwnam($user);
if ($uid>=0 && !$noSystemUsers){
push @arr, [ $user, $user, "$uid" ];
}
if ($uid>=0 && exists($$user_map1{'stash'}{'MYSQL'}{'dbusers'})){
for my $key (keys %{$$user_map1{'stash'}{'MYSQL'}{'dbusers'}}) {
push @arr, [ $key, $user, "$uid" ];
}
}
return @arr;
}
Zerion Mini Shell 1.0