Hier nur das komplette Script, um die “heißen Kartoffeln herauszufinden:
jb$ ./rpc_getmove-hot-potatoe.pl -m 6
NOTICE: Ticket#2010010610000011 (4) - number of used Queues: 8 - Limit: 6
Die Option -m gibt die maximale Anzahl der erlaubten Queues an, d.h. wird dieser Wert überschritten, wird die Ticketnummer ausgegeben.
Weitere Suchoptionen finden sich in der API Beschreibung der TicketSearch
Das Script setzt eine aktivierte SOAP Schnittstelle im OTRS voraus, sowie ein installiertes SOAP::Lite auf dem Rechner, auf dem das Script ausgeführt wird.
#!/usr/bin/perl -w # SOAP Config use SOAP::Lite( 'autodispatch', proxy => 'http://otrsserver/otrs/rpc.pl' ); my $SOAP_User = 'otrs'; my $SOAP_Pass = 'test'; # getting TicketID use Getopt::Std; my %opts; getopts( 'm:', \%opts ); if ( !$opts{m} ) { print STDERR "ERROR: Need -m Maximum Queues\n"; exit 1; } # SOAP script my $RPC = Core->new(); # Getting all Open Tickets my @TicketIDs = $RPC->Dispatch( $SOAP_User, $SOAP_Pass, 'TicketObject', 'TicketSearch', Limit => 100000, Result => 'ARRAY', UserID => 1, # Queues => ['system queue', 'other queue'], # UseSubQueues => 1, StateType => ['open', 'new', 'pending reminder'], ); # Start of for statement for my $TicketID (@TicketIDs) { my @QueueList = $RPC->Dispatch( $SOAP_User, $SOAP_Pass, 'TicketObject', 'MoveQueueList', TicketID => $TicketID, Type => 'Name', ); my $TicketNumber = $RPC->Dispatch( $SOAP_User, $SOAP_Pass, 'TicketObject', 'TicketNumberLookup', TicketID => $TicketID, ); $QL = scalar @QueueList; if ( $opts{m} < $QL ) { print "NOTICE: Ticket#$TicketNumber ($TicketID) - number of used Queues: $QL - Limit: $opts{m}\n"; } } exit 0;