Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

error calling unix script

Posted on 2014-03-29
17
Medium Priority
?
384 Views
Last Modified: 2014-04-21
Hi,
I am running below unix script as below

$ call test.sh
ksh: call:  not found
$

As i am not good in unix so please help me finish this.

#---- Set Environment
mdmdb="ABC"
mdmdbuser="USER"
mdmdbpwd="AAA"

#---- Connect to the Database
db2 connect to $mdmdb user $mdmdbuser using $mdmdbpwd

#
# Whatever you want to do goes here...
#
EXPORT TO
\userin\AA\TEST.ixf OF IXF
MESSAGES
\userin\AA\TEST.log
select * from SYSIBM.SYSDUMMY1

#---- Terminate DB2
db2 terminate
0
Comment
Question by:sam2929
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 3
  • +2
17 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 39963701
run it as

. test.sh
0
 

Author Comment

by:sam2929
ID: 39963738
looks like we need to give db2 path name

test.sh[7]: db2:  not found
test.sh[12]: EXPORT:  not found
0
 
LVL 84

Expert Comment

by:ozo
ID: 39963774
Is `EXPORT` supposed to be a shell command, or are you trying to pass it as input to the db2 command?
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:sam2929
ID: 39964347
pass input to db2 command
0
 
LVL 48

Expert Comment

by:Tintin
ID: 39964349
#!/bin/sh
#---- Set Environment
mdmdb="ABC"
mdmdbuser="USER"
mdmdbpwd="AAA"
PATH=$PATH:/directory/of/db2
export PATH

#---- Connect to the Database
db2 connect to $mdmdb user $mdmdbuser using $mdmdbpwd <<EOF

#
# Whatever you want to do goes here...
#
EXPORT TO
\userin\AA\TEST.ixf OF IXF
MESSAGES
\userin\AA\TEST.log
select * from SYSIBM.SYSDUMMY1
EOF

#---- Terminate DB2
db2 terminate

Open in new window

0
 

Author Comment

by:sam2929
ID: 39965327
I am not sure what path is but i found old script where some thing like this is done before is it possible to find what the path is from below script


Open in new window

if [ $? -eq 0 ]
  then
   DSENV="DEV"
   SCRIPT_DIR=/opt/IBM/InformationServer/Server/Projects/test_dev/Data
   PWS_SSH_KEY=${SCRIPT_DIR}/.ssh/id_rsa-MII-Test  ; export PWS_SSH_KEY
   . /db2_src/db2roar/sqllib/db2profile
     db_name=dev ; export db_name
     USER_PWS=aaa ; export USER_PWS
     HOST_PWS=99.99.99.00 ; export HOST_PWS
     PWS_TARGET_DIR="/db2_database/db2extracts/ibmcom/NcDbFeeds/cdt" ; export PWS_TARGET_DIR
     # temporary, until UAT project is online :
     PWS_TARGET_DIR="/db2_database/db2extracts/ibmcom/NcDbFeeds/pre" ; export PWS_TARGET_DIR
     HOST_PWS=99.99.99.99; export HOST_PWS
0
 
LVL 5

Expert Comment

by:John Pope
ID: 39966151
Hello

The path to the 'db2' command is not in that code you listed above.

To find out where your db2 command is run the following as root user;

find / -type f -name db2 -print

Open in new window


This should give you your path to the location of the command.  All you need to do is use the directory path.  Lets say the 'db2' command is located here,

/opt/ibm/db2db/cmds/db2

Open in new window


You set your $PATH to be,

$PATH=$PATH:/opt/ibm/db2db/cmds

Open in new window


Assuming you are coding it like Tintin suggests above.


Cheers, JP.
0
 
LVL 48

Expert Comment

by:Tintin
ID: 39966199
Doing

. /db2_src/db2roar/sqllib/db2profile

is most likely setting the PATH and other required variables.
0
 
LVL 20

Expert Comment

by:simon3270
ID: 39967088
Re the initial comment, I'd advise against running
. test.sh

Open in new window

in this case.  True, it is a quick way of running a script that doesn't have execute permission, but it runs in your shell's own environment, so any shell or environment variables that are changed will be changed in your interactive shell.  This is sometimes what you want, but in this case the script does some work and is not intended to set variables which are remembered after the script is run.  In particular, if it does something like "PATH=$PATH:/opt/ibm/db2db/cmds", then "/opt/ibm/db2db/cmds" will be added to your path every time you source the script, so that PATH will get longer and longer.

Better would be
bash test.sh

Open in new window

, assuming you are running a bash login shell.  If not, replace "bash" with whatever shell you are using.
0
 
LVL 84

Expert Comment

by:ozo
ID: 39968246
I agree.  It looked at first to me as if the script was intended to set  environment variables in your shell.
0
 
LVL 20

Expert Comment

by:simon3270
ID: 39968576
Me too - it was only later posts that told us it was an action script!
0
 

Author Comment

by:sam2929
ID: 40003570
getting below error now


#!/bin/sh
#---- Set Environment
mdmdb="AA"
mdmdbuser="BB"
mdmdbpwd="CC"
PATH=$PATH:/db2_src/db2ruin/sqllib/bin
export PATH

#---- Connect to the Database
db2 connect to $mdmdb user $mdmdbuser using $mdmdbpwd

#
# Whatever you want to do goes here...
#
EXPORT TO
/userin/Integration_dev/marketing_acct_em.ixf OF IXF
MESSAGES
/userin/Integration_dev/marketing_acct_em.log
select 'x' as id  from SYSIBM.SYSDUMMY1

EOF
      

#---- Terminate DB2
db2 terminate


test.sh[15]: EXPORT:  not found
test.sh[16]: /userin/Integration_dev/marketing_acct_em.ixf:  not found
test.sh[17]: MESSAGES:  not found
test.sh[18]: /userin/Integration_dev/marketing_acct_em.log:  not found
test.sh[19]: syntax error at line 19 : `as' unexpected
$
0
 
LVL 20

Expert Comment

by:simon3270
ID: 40003862
you are missing the

    <<EOF

at the end of the "db2 connect" line
0
 

Author Comment

by:sam2929
ID: 40004818
That worked but i didn't see below statment ixf or log file created in same directory

EXPORT TO
/userin/Integration_dev/marketing_acct_em.ixf OF IXF
MESSAGES
/userin/Integration_dev/marketing_acct_em.log
select 'x' as id  from SYSIBM.SYSDUMMY1
0
 
LVL 20

Accepted Solution

by:
simon3270 earned 2000 total points
ID: 40006093
I've dug around a bit more (I don't have a db2 system I can try this on), but I think you've merged two ways of running db2 commands - one where you precede each command with "db2", and one where you don't.

Please try either of these:
db2 "connect to $mdmdb user $mdmdbuser using $mdmdbpwd"
db2 "EXPORT TO /userin/Integration_dev/marketing_acct_em.ixf OF IXF MESSAGES /userin/Integration_dev/marketing_acct_em.log select 'x' as id  from SYSIBM.SYSDUMMY1"
db2 terminate

Open in new window

or
db2 <<EOF
connect to $mdmdb user $mdmdbuser using $mdmdbpwd
EXPORT TO /userin/Integration_dev/marketing_acct_em.ixf OF IXF MESSAGES /userin/Integration_dev/marketing_acct_em.log select 'x' as id  from SYSIBM.SYSDUMMY1"
terminate
EOF

Open in new window

(this code replaces everything from your "db2 connect" line to your "db2 terminate" line)
0
 

Author Comment

by:sam2929
ID: 40008481
Below script works now
1)i want to encrypt the mdmdbpwd password how can i do that
2) I have another folder /userin/dev/archive i want to archive 10 days worth of file there with time stamp too.

#!/bin/sh
#---- Set Environment
mdmdb="EMMDB"
mdmdbuser="MKT_DBO"
mdmdbpwd="time44up"
#-----PATH=$PATH:/db2_src/db2ruin/sqllib/bin
#------export PATH
. /db2_src/db2ruin/sqllib/db2profile

#---- Connect to the Database
db2 connect to $mdmdb user $mdmdbuser using $mdmdbpwd 

#
# Whatever you want to do goes here...
#
db2 "EXPORT TO
/userin/MAT_Integration_dev/marketing_acct_em.ixf OF IXF
MESSAGES
/userin/MAT_Integration_dev/marketing_acct_em.log
select 'x' as id  from SYSIBM.SYSDUMMY1"

	

#---- Terminate DB2
db2 terminate

Open in new window

0
 
LVL 20

Expert Comment

by:simon3270
ID: 40009211
Excellent.

No idea how to encrypt your password, and not enough information to archive your files, but those are separate questions - this one's answered!
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
Over the years I've spent many an hour playing on hardened, DMZ'd servers, with only a sub-set of the usual GNU toy's to keep me company; frequently I've needed to save and send log or data extracts from these server back to my PC, or to others, and…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question