[rt-users] Ticket Requestors returned as hash ref
Mathew Snyder
theillien at yahoo.com
Sun Aug 5 15:10:49 EDT 2007
I've been trying to figure out how to dereference the hash but I haven't been
successful.
Any thoughts?
Keep up with me and what I'm up to: http://theillien.blogspot.com
Mathew Snyder wrote:
> I'm rewriting a script which will look in our SPAM queue (to which all tickets
> deemed to be spam are banished) and run each of the spam "requestors" through
> rtx-shredder. I have it set up to do everything the way I want except it
> doesn't work because when asking for $ticket->Requestors I get
> RT::Group=HASH(refNumber)
>
> Here's my script:
> #!/usr/bin/perl
>
> #############################################
> # File: delete_spam.pl
> # Version: 2.0
> # Author: Mathew Snyder
> # Date: August 5, 2007
> # Comments: A script to gather up the spam
> # sent to the Security queue and
> # eliminate the "users" that
> # created it. It then marks those
> # tickets as deleted for the purpose
> # of further housecleaning by the
> # rtx-shredder cronjob.
> #############################################
>
> #Set up our environment
> use warnings;
> use strict;
> use lib '/usr/local/rt-3.6.1/lib';
> use lib '/usr/local/rt-3.6.1/local/lib';
> use lib '/usr/local/lib';
> use RT;
> use RT::Users;
> use RT::Tickets;
> use MIME::Lite;
> use Reports::Emails;
>
> RT::LoadConfig();
> RT::Init();
>
> my @usrID;
> my %userID;
> my @emails;
>
> my %skipEmails = (
> "ids-tripwire" => undef,
> "tripwire" => undef,
> "security" => undef
> );
>
> my $users = new RT::Users(RT::SystemUser);
> $users->LimitToPrivileged;
>
> while ( my $user = $users->Next ) {
> next if $user->Name eq 'root';
> $skipEmails{$user->EmailAddress} = undef;
> }
>
> foreach my $key (@usrID) {
> $skipEmails{$key} = undef;
> }
>
> my $tix = new RT::Tickets(RT::SystemUser);
> $tix->FromSQL('Queue = "SPAM"');
>
> while (my $ticket = $tix->Next) {
> print $ticket->Requestors . "\n";
> if (exists($skipEmails{$ticket->Requestors}) or $ticket->Requestors == "") {
> next;
> }
> else {
> push @emails, $ticket->Requestors;
> }
> # $ticket->SetStatus("deleted");
> }
>
> #my $count = 0;
> #foreach my $email (@emails) {
> #
> system("/usr/local/rt-3.6.1/local/sbin/rtx-shredder","--force","--plugin","Users=status,any;email,$email;replace_relations,Nobody");
> # $count++;
> #}
>
> #my $emailTo = "msnyder\@servervault.com";
> #my $emailFrom = "RT";
> #my $emailSubj = "RT Spam Removal";
> #my $emailMsg = "The spam removal script has completed and has removed
> $count spam created users";
>
> #my $fullEmail = new MIME::Lite(From => $emailFrom,
> # To => $emailTo,
> # Subject => $emailSubj,
> # Data => $emailMsg,
> #);
>
> #$fullEmail->send("sendmail", "/usr/sbin/sendmail -t");
> #unlink glob "*.sql";
>
> exit;
>
> Where am I going wrong with this? How do I set it up to get those actual email
> addresses instead of an RT::Group hash ref?
>
> Thanks,
> Mathew
More information about the rt-users
mailing list