It worked in the macro because you didn't include the single quotes.  If
you'd left them out in the first try below, it should have worked, too.

(It didn't work with the single quotes because the client was trying to run a
file named "/tmp/test.sh >/tmp/test.log.`date +%d.%m.%Y` 2>&1", not a file
named "/tmp/test.sh".)

=Dave


On 04/01/2014 04:16 AM, PAC Brion Arnaud wrote:
> Dave,
>
> Thanks a lot for both explanations and example.
>
> Using these, I've finally been able to get the command accepted by the server 
> :
>
> tsm: TSM1_XXXXXX>def sched aix test_sched  act=command  
> objects="'/tmp/test.sh >/tmp/test.log.`date +%d.%m.%Y` 2>&1'" 
> durunits=minutes duration=10 startt=10:30 peru=o priority=1
> ANR2500I Schedule TEST_SCHED defined in policy domain AIX.
>
> Unfortunately, the execution failed, due to single quotes surrounding the 
> command :
>
> 04/01/14   10:30:44
> Executing Operating System command or script:
>    '/tmp/test.sh >/tmp/test.log.`date +%d.%m.%Y` 2>&1'
> 04/01/14   10:30:44 Finished command.  Return code is: 127
> 04/01/14   10:30:44 ANS1909E The scheduled command failed.
> 04/01/14   10:30:44 ANS1512E Scheduled event 'TEST_SCHED' failed.  Return 
> code = 127.
>
> I then tried my chance with a macro :
>
> DEFINE SCHEDULE AIX TEST_SCHED                                             \
>        ACTION=COMMAND                                                      \
>        SUBACTION=''                                                        \
>        OPTIONS=""                                                          \
>        OBJECTS="/tmp/test.sh >/tmp/test.log.`date '+%d.%m.%Y'` 2>&1"       \
>        PRIORITY=5                                                          \
>        STARTDATE=today                                                     \
>        STARTTIME=now+00:10                                                 \
>        DURATION=1                                                          \
>        DURUNITS=HOURS                                                      \
>        PERUNITS=ONETIME                                                    \
>        DAYOFWEEK=ANY                                                       \
>        EXPIRATION=NEVER
>
> This time it ran successfully :
>
> Scheduled Start      Actual Start         Schedule Name Node Name     Status
> -------------------- -------------------- ------------- ------------- 
> ---------
> 04/01/14   11:09:01  04/01/14   11:09:04  TEST_SCHED    XXXXXXXX      
> Completed
>
>
> Cheers.
>
> Arnaud
>
>
> -----Original Message-----
> From: ADSM: Dist Stor Manager [mailto:ADSM-L@VM.MARIST.EDU] On Behalf Of 
> David Bronder
> Sent: Monday, March 31, 2014 6:16 PM
> To: ADSM-L@VM.MARIST.EDU
> Subject: Re: schedulde command with date suffixed log file
>
> On 03/31/2014 09:27 AM, PAC Brion Arnaud wrote:
>>
>> A quick one: does anyone have the proper syntax to define a client schedule 
>> (using admin command line, or macro) that would execute a command having 
>> some date-suffixed log file, like :
>>
>> def sched aix test_sched  act=command  objects="/tmp/test.sh 
>> >/tmp/test.log.`date '+%d.%m.%Y'` 2>&1" durunits=minutes duration=10 
>> startt=now peru=o priority=1
>>
>> TSM server is 6.3.3.1 and runs under AIX .
>>
>> I already have tried various combinations of single and double quotes 
>> without success  ...
>
> First, if you included the objects string verbatim, you have an extra space
> between "test.log." and the date subshell.
>
> Generally, the most reliable method would be to wrap the entire client
> command in a simple shell script on the client.  Then the TSM client just
> executes the wrapper and the wrapper handles the shell metacharacters
> (redirection, subshell date, etc.).
>
> If that's not an option, you could try something like this:
>
>   ... objects="/usr/bin/sh -c '/tmp/test.sh >/tmp/test.log.`date +%d.%m.%Y`
> 2>&1'" ...
>
> The extra quotes around the argument to date aren't usually necessary unless
> something else is evaluating the % characters before date gets them.  With
> POSIX-compliant shells, including modern sh/ksh, you can also use $(...)
> instead of `...` for subshells (may not make a difference here, but can be a
> useful tool in the shell arsenal).
>
> =Dave
>

--
Hello World.                                David Bronder - Systems Architect
Segmentation Fault                                      ITS-EI, Univ. of Iowa
Core dumped, disk trashed, quota filled, soda warm.   david-bron...@uiowa.edu

Reply via email to