AW: [dev] Call a GenericAgent-Job from within another Perl-Script
Alexander Scholler
alexander.scholler at augsburg.de
Wed Feb 7 14:51:42 GMT 2007
Hi Marco,
the authentification is really a problem if you want to call the URL. I
have no solution for that.
I think your GenericAgent-job is written within the GUI, so saved within
the DB - that's the problem!
If you wrote the job as shell-GenericAgent-job (see
Kernel/Config/GenericAgent.pm.example), you can easily run this command
from cmd-shell and thus also within a perl-script.
I also think that you have more functionality with shell-jobs than with
DB-jobs.
Also have a look at
http://dev.otrs.org/2.1/Kernel/System/GenericAgent.html
to see how GenericAgent-jobs can be run within the OTRS-API. I think
this could be the best solution, but you'll need to understand
OTRS-internas.
Bye, Alex
Marco Friebe schrieb:
> Hello Stefan,
>
> indeed, I considered this method but didn't know how to bypass OTRS authentication. We use standard otrs database authentication.
>
> Please let me know if you have any hack or idea.
>
> Thanks
>
> Marco
>
>
> Hallo Marco,
>
> I know this is maybe a bit overdone, but why not simply download your quoted URL
> via e.g. lynx (Linux/UNIX) or wget (Windows) ? I use this technique for some workarounds
> of this kind. As you did not state how you authenticate to the server, I do not know
> whether this will work out for you, but it is worth a try.
>
> Best regards
>
>
> Stefan
>
>
>
> -------- Original Message --------
> Subject: [dev] Call a GenericAgent-Job from within another Perl-Script (06-Feb-2007 18:44)
> From: Marco Friebe <marco.friebe at robotron.de>
> To: stefan
>
>> Hello,
>>
>> I want to call a GenericAgent-Job from within another Perl-Script. I want
>> do do some work in the otrs database (Oracle) and then call that Agent-Job
>> subsequently.
>>
>> Like it is done for manual job invocation using URL "http://localhost/otrs/
>> index.pl?Action=AdminGenericAgent&Subaction=RunNow&Profile=Test" but called
>> from commandline (Cron).
>>
>>
>> Since I'm a very novize regarding Perl I would be grateful if someone could
>> point me in the right direction. Maybe this problem has already been solved.
>>
>>
>>
>>
>> Snip*****
>>
>> use Kernel::Modules::AdminGenericAgent; (presupposed I'm in /opt/otrs)
>>
>> %ParamList = ("Subaction" => "RunNow", "Profile" => "Test");
>> Kernel::Modules::AdminGenericAgent::Run(%ParamList);
>>
>> Snap*****
>>
>>
>> I saw there is a constructor which needs to be called at first, but no idea
>> how to do this correctly.
>>
>>
>> And here an extract of AdminGenericAgent.pm
>>
>>
>> Snip*****
>>
>> sub new {
>> my $Type = shift;
>> my %Param = @_;
>>
>> # allocate new hash for object
>> my $Self = {};
>> bless ($Self, $Type);
>>
>> foreach (keys %Param) {
>> $Self->{$_} = $Param{$_};
>> }
>>
>> # check needed Opjects
>> foreach (qw(ParamObject DBObject TicketObject LayoutObject LogObject
>> ConfigObject)) {
>> if (!$Self->{$_}) {
>> $Self->{LayoutObject}->FatalError(Message => "Got no $_!");
>> }
>> }
>>
>> $Self->{PriorityObject} = Kernel::System::Priority->new(%Param);
>> $Self->{StateObject} = Kernel::System::State->new(%Param);
>> $Self->{LockObject} = Kernel::System::Lock->new(%Param);
>> $Self->{GenericAgentObject} = Kernel::System::GenericAgent->new(%Param);
>>
>>
>> return $Self;
>> }
>> # --
>> sub Run {
>> my $Self = shift;
>> my %Param = @_;
>> my $Output;
>> # get confid data
>> $Self->{StartHit} = $Self->{ParamObject}->GetParam(Param => 'StartHit')
>> || 1;
>> $Self->{SearchLimit} = $Self->{ConfigObject}->Get('SearchLimit') || 500;
>>
>> $Self->{SortBy} = $Self->{ParamObject}->GetParam(Param => 'SortBy') || '
>> Age';
>> $Self->{Order} = $Self->{ParamObject}->GetParam(Param => 'Order') || '
>> Down';
>> $Self->{Profile} = $Self->{ParamObject}->GetParam(Param => 'Profile') ||
>> '';
>> $Self->{SaveProfile} = 1;
>> $Self->{TakeLastSearch} = $Self->{ParamObject}->GetParam(Param => '
>> TakeLastSearch') || '';
>> $Self->{SelectTemplate} = $Self->{ParamObject}->GetParam(Param => '
>> SelectTemplate') || '';
>> $Self->{EraseTemplate} = $Self->{ParamObject}->GetParam(Param => '
>> EraseTemplate') || '';
>> # get db job data
>> my %DBParam = $Self->{GenericAgentObject}->JobGet(Name => $Self->{
>> Profile}) if ($Self->{Profile});
>>
>> # run job now
>> if ($Self->{Subaction} eq 'RunNow' && %DBParam) {
>> $Self->{GenericAgentObject}->JobRun(
>> Job => $Self->{Profile},
>> UserID => 1,
>> );
>> # redirect
>> return $Self->{LayoutObject}->Redirect(
>> OP => "Action=$Self->{Action}",
>> );
>> }
>>
>> # create new job
>> if ($Self->{Subaction} eq 'Add' && $Self->{Profile}) {
>> # insert new profile params
>> $Self->{GenericAgentObject}->JobAdd(
>> Name => $Self->{Profile},
>> Data => {
>> ScheduleLastRun => '',
>> },
>> );
>> # redirect
>> return $Self->{LayoutObject}->Redirect(
>> OP => "Action=$Self->{Action}&Subaction=LoadProfile&Profile=$
>> Self->{Profile}",
>> );
>> }
>>
>>
>> Snap*****
>>
>>
>> Thanks a lot.
>>
>> Greetings
>>
>> Marco
>>
>>
>> _______________________________________________
>> OTRS mailing list: dev - Webpage: http://otrs.org/
>> Archive: http://lists.otrs.org/pipermail/dev
>> To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
>
>
> _______________________________________________
> OTRS mailing list: dev - Webpage: http://otrs.org/
> Archive: http://lists.otrs.org/pipermail/dev
> To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
>
>
> _______________________________________________
> OTRS mailing list: dev - Webpage: http://otrs.org/
> Archive: http://lists.otrs.org/pipermail/dev
> To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
>
>
>
More information about the dev
mailing list