问题在于远程监控系统客户。我无法使用外部客户后端,因此我想通过 CSV 文件更新客户数据库。我已经编写了一个脚本来通过 添加新客户otrs.AddCustomerUser.pl
。
但是我如何通过脚本批量禁用老客户?
答案1
我创建了一个基于的脚本otrs.AddCustomerUser.pl
来使客户用户无效:
otrs.DisableCustomerUser.pl:
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
use FindBin qw($RealBin);
use lib dirname($RealBin);
use lib dirname($RealBin) . '/Kernel/cpan-lib';
use lib dirname($RealBin) . '/Custom';
use Kernel::Config;
use Kernel::System::Encode;
use Kernel::System::Log;
use Kernel::System::Time;
use Kernel::System::Main;
use Kernel::System::DB;
use Kernel::System::CustomerUser;
# create common objects
my %CommonObject;
$CommonObject{ConfigObject} = Kernel::Config->new(%CommonObject);
$CommonObject{EncodeObject} = Kernel::System::Encode->new(%CommonObject);
$CommonObject{LogObject}
= Kernel::System::Log->new( %CommonObject, LogPrefix => 'OTRS-otrs.DisableCustomerUser.pl' );
$CommonObject{TimeObject} = Kernel::System::Time->new(%CommonObject);
$CommonObject{MainObject} = Kernel::System::Main->new(%CommonObject);
$CommonObject{DBObject} = Kernel::System::DB->new(%CommonObject);
$CommonObject{UserObject} = Kernel::System::CustomerUser->new(%CommonObject);
my %Options;
use Getopt::Std;
getopt( 'c', \%Options );
unless ( $ARGV[0] ) {
print
"$FindBin::Script [-c CustomerID] username\n";
print "\n";
exit;
}
my %Param;
$Param{Source} = 'CustomerUser';
$Param{UserLogin} = defined $Options{c} ? $Options{c} : $ARGV[0];
my %User = $CommonObject{UserObject}->CustomerUserDataGet( User => $Param{UserLogin});
if ( !%User ) {
print "No such user '$Param{UserLogin}'!\n";
exit(1);
}
my $Success = $CommonObject{UserObject}->CustomerUserUpdate(
Source => 'CustomerUser',
ID => $User{UserCustomerID},
UserCustomerID => $User{UserCustomerID},
UserLogin => $User{UserCustomerID},
UserFirstname => $User{UserFirstname},
UserLastname => $User{UserLastname},
UserEmail => $User{UserEmail},
ValidID => 2,
UserID => 1,
);
if($Success eq 1){
print "Set customer user $User{UserCustomerID} to invalid.\n";
}
exit(0);
调用:
# otrs.DisableCustomerUser.pl [-c CustomerID] username