Operating System - HP-UX
1827107 Members
3876 Online
109714 Solutions
New Discussion

passing variable to connect direct

 
SOLVED
Go to solution
steven Burgess_2
Honored Contributor

passing variable to connect direct

Hi all

I posted this question last night but in the wrong area, so here goes again

I have a whole bunch of files in a directory that I need to submit using connect direct

I have created the following script to do this.

It works if I submit one file manually - However there is more than one file and having to past each file into the submit defeats the object

#!/usr/sbin/sh
cd $XELOGD/connectd
ls xeSnd* > $XELOGD/connectd/cube

CUBES=cube
for file in $(cat $CUBE)
do
export $file
echo 'submit file=/tmp/$file;' | direct | grep process >> /tmp/processid
done

The above bombs out with the message

XSQF009I Return Code: 8 Feedback: 2
:&FILENAME=/tmp/$file:&OSERR=2:

XAPI006I Return Code: 0 Feedback: 0
Specified file could not be opened.


Any help would be greatly appreciated

Thanks in advance

Steve

take your time and think things through
15 REPLIES 15

Re: passing variable to connect direct

aarrghh - the dreaded NDM! You poor soul!

In this case however the error is in your script - replace:

echo 'submit file=/tmp/$file;' | direct | grep process >> /tmp/processid

with:

echo "submit file=/tmp/$file;" | direct | grep process >> /tmp/processid

The single quotes make everything inside them literal (no variable substitution), hence the error message. I seem to remember you should also use the '-x' flag when calling direct from the command line (but I can't remember why!)

echo "submit file=/tmp/$file;" | direct -x | grep process >> /tmp/processid

HTH

Duncan

I am an HPE Employee
Accept or Kudo
steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Hi duncan

Nope, it doesn't work

$ echo $(cat $file)
xeSndCube_CC_C_.26774

$ echo "submit file=/tmp/$file;" |direct -x
| grep process >> /tmp/process.out

XSQF009I Return Code: 8 Feedback: 2
:&FILENAME=/tmp/file:&OSERR=2:

XAPI006I Return Code: 0 Feedback: 0
Specified file could not be opened.


Regards

Steve
take your time and think things through
Deepak Extross
Honored Contributor

Re: passing variable to connect direct

Steven,
Have you replaced the HostName with or is it literally
xeSndCube_CC_C_.26774 ?

If it is a literal, the shell is going to get confused by the '<', which normally is a redirection operator.

This should work:
xeSndCube_CC_C_\.26774

steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Deepak

I only used to mask the name of the host from the forum

Regards

Steve
take your time and think things through
steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Hi

The issue seems to be with the variable $file being passed to the connect direct session

Steve
take your time and think things through
Deepak Extross
Honored Contributor

Re: passing variable to connect direct

OK, heres another thing you can try.

for file in $(cat $CUBE) do echo "submit file=/tmp/$file;"
done >> ./myfile

Check that the contents of myfile are ok, and then run a

for myfile in $(cat ./myfile)
do
echo $myfile | direct | grep process >> /tmp/processid
done

Hope this helps.
steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Hi Deepak

Thanks for the reply, still getting the errors, a little different this time though

XPAE003I Return Code: 8 Feedback: 0
:&KEYWD=file:

XPAM001I Return Code: 8 Feedback: 0
Errors Parsing

Cheers

Steve
take your time and think things through
Deepak Extross
Honored Contributor

Re: passing variable to connect direct

Did the intermediate file come out ok? What does "cat ./myfile" show?
steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Hi

myfile is fine

submit file=/tmp/xeSndCube_CC_C_SI***W3.26774;

Steve

take your time and think things through
Deepak Extross
Honored Contributor

Re: passing variable to connect direct

Hmm...looks like it's having a problem with the keyword "submit file".
Are you sure it's "submit file"? Should it be, perhaps, "submitfile" or "submit_file"?
steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Deepak

nah man

The command is used with connect direct shell

heres what it looks like when you enter direct from the from prompt



******************************************************
* *
* CONNECT:DirectUNIX *
* *
*----------------------------------------------------*
* Copyright (c) 1983, 2000 Sterling Commerce, Inc. *
* Version 3.3.03 *
******************************************************

Enter a ';' at the end of a command to submit it. Type 'quit;' to exit CLI.

Direct>

I use the submit command for each file that requires sending.

I'm off home now 06:00 in the UK and not back till Friday , I'm determined to get to the bottom of this. I will check for any replies When I get up this afternoon

Thanks very much for your help

Steve
take your time and think things through
Deepak Extross
Honored Contributor
Solution

Re: passing variable to connect direct

Steven,

If you want to use the interactive CLI interface, maybe the best way to go about it would be to use "expect".

http://hpux.connect.org.uk/hppd/hpux/Tcl/expect-5.31/
steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Hi

I'm not back in the office till Friday to test this further, but was wondering if anyone had any further input regarding this question

Regards

Steve
take your time and think things through
SHABU KHAN
Trusted Contributor

Re: passing variable to connect direct

Steven,

I am not familiar with connect direct but just a thought, did you try running in debug mode and see what value is being passed when you do a submit

1) ksh -x scriptname
2) Also try putting double quotes around /tmp/"$file"

Let us know after you get back ...

Thanks,
Shabu



steven Burgess_2
Honored Contributor

Re: passing variable to connect direct

Hi

I removed the export $file from the script, it now looks like

#!/usr/bin/sh

clear
if [ $LOGNAME != dssadmin ]
then
echo "\n\tYou must be dssadmin user to run this script!!!!"
sleep 5
exit
fi

> $XELOGD/connectd/records.log

cd $XELOGD/connectd
ls xeSnd* > $XELOGD/connectd/sendem.log
sendit=$XELOGD/connectd/sendem.log
for file in $(cat $sendit)
do
ls $file >> $XELOGD/connectd/cubes.log
done
CUBES=$XELOGD/connectd/cubes.log
for files in $(cat $CUBES)
do
echo "submit file=/tmp/$files;" | direct -x >> $XELOGD/connectd/processid.log 2>
> $XELOGD/connectd/errors.log
done
clear


Thanks for your help

Steve
take your time and think things through