Shell or perl script from OS command_Sender File Channel
Hi All,
I am trying to execute a perl script from the File Sender Channel(NFS), OS command Before Message Processing. The script works fine if i run it from the shell. But when PI calls the script, the script does not get executed. The audit logs mention that the OS command has been called.
I tried using:
1) /<fullpath>perlScript.pl /<fullpath>filename.dat
2) perl /<fullpath>perlScript.pl /<fullpath>filename.dat
Both these commands work fine when i execute them on the shell.
I am on solaris and PI 7.0. The permission for the perl script and input files are all 777.
FYI.. i am using this perl script to transpose a complex file and make it # delimited file.
I have already read the blogs for OS command and executed some sample scenarios successfully.
I tried to call a shell script that does the same functionality as the perl script. Even that does not work.
Also, wrote a shell script to call the perl script inside it. No luck.
eg:
touch /fullpath>/create_before.dat
perl /<fullpath>perlScript.pl /<fullpath>filename.dat
touch /<fullpath>/create_after.dat
In this case, the create_before.dat and create_after.dat is getting created but the perl is not called. I know this because i cant see the output files of the perl script.
Regards,
Balaji
Edited by: Balaji M on Oct 30, 2008 2:36 PM
Hi,
The problem is fixed. The shell or perl both have logic to transpose a non industry starndard file to the delimited file which PI can use an FCC to pick up.
This was the fix:
we need to mention the shell the script is going to be run in.
In the shell script we mentioned --> *#!/usr/bin/bash* as the first line
normally, when we use the command -- which bash on the unix command prompt, it tells us the path for the bash used.
another option --> #!/usr/bin/ksh
again, on the command prompt -- which ksh command will tell us what ksh is being used.
If the script is a simple one that does copy or move commands, i believe we need not use the commands above. But is a good practice to have them in the script.
Regards,
Balaji
Edited by: Balaji M on Nov 3, 2008 4:38 PM
Similar Messages
-
Urgent Problem in Executing perl script from shell script
Hello,
I've a shell script on one server (source) and a perl script on another (target).
My perl script will check whether the directoryname, filename provided by shell script exists on the target server or not.
My shell script is as follows:
#! bin/bash
cmd=`ssh user@target "perl /home/user/test_dir/validate_file.pl"`
echo $cmd
And my perl script uses a package CU_Functions.pm, which is in the same directory as the perl script on the target server.
But when I invoke the perl script from shell script, I get the following error:
Source:user> (db:ias10g12_mid_db) /home/user/perl
$ sh /home/user/arcs/arcs_conn.sh
user@target's password:
Can't locate CU_Functions.pm in @INC (@INC contains: /local/perl-5.6.1/lib/5.6.1/i686-linux /local/perl-5.6.1/lib/5.6.1 /local/perl-5.6.1/lib/site_perl/5.6.1/i686-linux /local/perl-5.6.1/lib/site_perl/5.6.1 /local/perl-5.6.1/lib/site_perl .) at /home/user/test_dir/validate_file.pl line 13.
BEGIN failed--compilation aborted at /home/user/test_dir/validate_file.pl line 13.
Please let me know if I need to do any configurations prior to call the perl script.As for the Perl INC, I cannot recall the environment variable that sets that but the following example should work:
ssh user@host "export ENV_VAR=/path/to/include/files:$ENV_VAR ; /full/path/to/script" -
Calling PERL script from scheduler
Hello All,
I am trying to call PERL script from dbms_scheduler which makes the database connection using DBD module to read some values to perform the operation. My scheduler job kept failing with the following error:
ORA-27369: job of type EXECUTABLE failed with exit code: No such file or directory
STANDARD_ERROR="install_driver(Oracle) failed: Can't load '/usr/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file
It can't open libclntsh.so.10.1 file when I run the job, I guess because in job session, it creates a new shell and doesn't inherit the .profile and none of the environmental variables get set. When I run the PERL script manually it works because of all the env variables, so I put all those variables from my .profile into PERL script itself using ENV function but it still doesn't work, failed with very same error. And yes I do set LD_LIBRARY_PATH to point to $ORACLE_HOME/lib directory. Moreover, if I run the PERL script manually from a shell where I dont inherit .profile, it fails with very same error, so it is related to the environment issues but I have no idea how to fix it. I read somewhere the setting those env variable in PERL script itself doesn't help because by the time PERL get executed all the compilers are already initialized and and they don't use those environement variables anymore then. So the question is how to make it work?
I would really appreciate if someone can help me fixing this, it's gonna change my life here :)
DB Version: 10.2.0.2 (also tested on 11R2, same problem)
OS: SUSE Linux 64 bit
And here is my libclntsh file in $ORACLE_HOME/lib
$ls -l libclnt*
lrwxrwxrwx 1 epsora epsdba 52 2009-09-15 13:39 libclntsh.so -> /u01/app/epsora/product/10.2.0/lib/libclntsh.so.10.1
-rwxr-xr-- 1 epsora epsdba 20274415 2009-09-15 13:39 libclntsh.so.10.1
-rw-r----- 1 epsora epsdba 36840968 2009-09-15 13:38 libclntst10.a
Please let me know if you need more information about this setup.
Thanks
Daljit Singh
Edited by: Daljit on Jul 6, 2010 10:06 AMNothing in your post indicates that you created a directory object and granted privileges.
http://www.morganslibrary.org/reference/directories.html
did you? -
How to call a perl script from an apple script
Hi All,
How to Call a perl Script from an apple script.
Pls Give Your comments.
Thanx & Regards,
EstherApplescript to call a perl script named "/tmp/x.pl" passing an argument "world"
do shell script "/usr/bin/perl /tmp/x.pl world"
or if the script is given the executable atttribute (chmod +x /tmp/x.pl),
do shell script "/tmp/x.pl world"
Perl script "/tmp/x.pl" that prints a string using a passed argument
#!/usr/bin/perl
print "Hello $ARGV[$1]\n"; -
How to run the perl script from java ?
Hi , I need to run the pearl script from the server and to get the result of the script thro' java using SSH
Is there any 3rd party SSH API in java ?
Please help me out
thanks in advance
karthikThis seems like a very strange thing to want to do.
What is the perl script doing?
Do other programs (not some shell script) access this server-side perl script from a different machine?
If so how do they do it?
What currently triggers the perl script to execute?
What currently handles the output from the perl script?
If you can answer these questions (and understand the answers) you should be able to come up with a different approach to this.
You do not really want to call a remote perl script from a Java program, you want to achieve the effect you think that would have if you could do it.
So find the answers to the above questions, write them on 3" x 5" cards and lay them out on your desk.
What flow of control needs to happen? Which piece of code needs to produce or consume which piece of data?
If that fails, ask you self or who ever is making you do this what are the use-cases?
If you do not know what use-cases are or do not understand them well enough try reading
Use Case Modeling (The Addison-Wesley Object Technology Series) by Kurt Bittner and Ian Spence (Paperback - Aug 30, 2002)
http://www.amazon.com/s/ref=nb_ss_gw/002-7908514-4043267?url=search-alias%3Dstripbooks&field-keywords=use+cases&x=0&y=0
It is a short and easy to read book on the subject and also one of the best.
You MUST understand WHAT you are trying to achieve before you can decide HOW you are going to achieve it. -
Execute a shell or perl script
Is it possible to execute a unix(solaris) shell script or perl script from a stored procedure. If so, a short example would be great.
Thanks,
JohnExternal Procedure Source Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sh(char *);
void sh( char *cmd )
int num;
num = system(cmd);
Issue the following commands to compile the code and generate the shared
object in Solaris:
cc -G -c shell.c
ld -r -o shell.so shell.o
You can also use the demo_rdbms.mk makefile to build shared libraries for use in external procedures. Using this method insulates you from any Operating System specific dependencies (e.g., which flags to use
for ld).
For example:
In 8.0.X,
$ make -f demo_rdbms.mk extproc_nocallback \
SHARED_LIBNAME=shell.so OBJS=shell.o
In 8.1.X,
$ make -f demo_rdbms.mk extproc_no_context \
SHARED_LIBNAME=shell.so OBJS=shell.o
Library Definition
CREATE LIBRARY shell_lib is '/u11/home/lsupport/proc/shell.so';
Note: The directory in quotes is the current of location of the library that
was created in the steps above.
PL/SQL Wrapper Procedure
create or replace procedure shell(cmd IN char)
as external
name "sh"
library shell_lib
language C
parameters (cmd string);
Execution
SQL> exec shell('ls');
cli.trc exe_prba.sql prueba.mk shell.c.old
core listener.old prueba.o shell.o
dec2bin.c listener.ora prueba.so shell.so
dec2bin.c.old nena.lst prueba.sql shell.sql
dec2bin.o p.sql sal.1 shell.sql.old
dec2bin.so pepito.lst sal.2 sqlnet.log
dec2bin.sql prb sal.3 tnsnames.ora
dec2bin.sql.old prb.c salida.lst tnsnames.ora.old
envoltorio.sql prueba.c shell.c uno.sql
PL/SQL procedure successfully completed. -
I am facing a problem in running a PERL script in JAVA in UNIX box..
I am able to call ther perlscript.
Perl script has
#! /usr/local/bin/perl
print "\nEnter Your Name :";
$name = <>;
print "\nYour Name is : $name\n";
exit 0;
Perl script request for the INPUT(name) .
My Java program is
File perlfile = new File("test.pl");
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("perl "+perlfile);
Here is the problem tat IT IS says error =2 ..What has to be the solution so tat i can CALL PERL SCRIPT as similiar to running it separatly in prompt { >perl test.pl }
PLEASE help me on this....In the PERL SCRIPT (test.pl)
LINE 1 : #! /usr/local/bin/perl
LINE 2 : print "\nEnter Your Name :"; .
LINE 3 : $name = <>;
LINE 4 : print "\nYour Name is : $name\n";
LINE 5 : exit 0;
When i run this script in perl test.pl in prompt (UNIX BOX), i am gettin the request for name "Enter Your Name:____ " but when i call this script from Java it doesn't request for name and moreover the process doesnt ends (use ctrl+c to come out of the process).When i come out forcefully it shows the ERROR=2.
My requirement is such tat need to call a PERL SCRIPT from java so tat java process give the control to PERL script and it will continue the process..
Sample scenario:
Java move a file and store it in a new FOLDER
MY perl script will read the file in new FOLDER.
here the perl script will get the file name for processing... My issue comes here .$name is not be prompted while calling thro java.. -
How to load SQL scripts from a text file.
Hi, i tried several time to load a text file/SQL script with 10 different tables and data, but 10g Express doesen't allows me to do that, any one can direct me or point out to me what i should do or do i need to adopt any special method to to get this done. i am sure there must be some thing where you can upload SQL scripts from a text file (in SQL command editor!). thanks
Hi,
see my other answer here:
SQL command editor doesn't take more than 1 insert command
This seems to be a duplicate question, right? Or am I missing something?
Regards,
~Dietmar. -
Execution of Perl Script from HTML DB page.
Hi All,
I have a Perl script which takes 5 parameters and fetches data from one database and insert that data into my database table which is a master table for my project.
Is there any way to execute the perl script from a HTMLDB page by passing parameters.
Pls. provide me inputs if any.
Thanks & Regds.
Kumaraswamy RJ.Check out MOS note 1515609.1.
Regards,
- Loc -
Calling perl script from labview
Hi,
I have a perl script and I would like to call the perl script from Labview
anyone can help me with that?
I used system exec but I'm getting an error.
Anyone have a working example like calling a simple perl script from Labview.
Thanks
SL OngHi,
Thanks for the reply from everyone.
The attached is my code to call Perl script and after calling this, I need to query the Perl Script by sending command like @help. Do they have a way to query the Perl script by sending command like @help and get the return result.
I think Joseph you are right, but how do I get the return result if I invoke it in a separate dos session.
SL Ong -
Hi guys,
I am developing an online ticket booking system.
i have come toa point where i need to call a perl script from JSP.
please let me know how to do it.
Basically, i need to call a function in perl script from JSP in order to encrypt my information.
Any help is appreciated.
Thanks in advance.
Chintan ShahI haven't done this myself, but it seems like it is possible in Tomcat.
You can configure Tomcat to handle .cgi calls (it does this via a CGI servlet)
http://www.ftponline.com/javapro/2003_03/online/perl_teden_03_18_03/
http://tomcat.apache.org/tomcat-5.0-doc/cgi-howto.html
Once this is set up, theoretically you should be able to then use requestdispatcher and forward/include a cgi script to invoke the perl.
I don't know if you are using Tomcat or not though... :-) -
Calling a perl script from stored procedure
Can anyone tell me how to call/run a perl script from a stored procedure? If you have a sample code, please include it.
Thanks in advanceIf you have a web server setup that runs perl, you can do this by using the utl_http package...Here is some code I use to run a perl script and print the results to a web page on our site.
The in_URL parameter is the address of the perl code(i.e. http://website/path/perlscript?param1=value1¶m2=value2 etc)
PROCEDURE call_perl(in_URL VARCHAR2) IS
/* This is setup to allow a perl program to be submitted as a batch program
using the standard Portal batch program.
Sometimes these jobs take a long time to run, so the timeout value must
be set to a large value. The default timeout is 60 seconds, which is not long enough. */
req utl_http.req;
resp utl_http.resp;
value VARCHAR2(1024);
BEGIN
req := utl_http.begin_request(replace(utl_url.escape(replace(in_URL,'%3A',':')),CHR(13)));
utl_http.set_transfer_timeout(req, 18000); -- Set timeout to 5 hours for this specific request.
resp := utl_http.get_response(req);
LOOP
utl_http.read_line(resp, value, TRUE);
htp.p(value);
END LOOP;
utl_http.end_response(resp);
EXCEPTION WHEN utl_http.end_of_body THEN
utl_http.end_response(resp);
WHEN utl_http.init_failed THEN
htp.p('INIT FAILED');
WHEN utl_http.request_failed THEN
htp.p('REQUEST FAILED');
htp.p(NVL(utl_http.get_detailed_sqlerrm,' No more detail available.'));
END;
If you don't have a web server setup, I don't know offhand how you could do this.
Laurel -
Initiating a perl script from a trigger
I want to kick off a perl script from an Oracle trigger. Is this possible?
Not directly. At least as far as I know.
Here's how I see this done.
You should have a sqlplus running in background and waiting for an alert. On receipt of the alert the sqlplus will call a host(my_command) that will kick the named script.
null -
Executing a perl script from within java application
Hi,
Does anyone knows a way to execute a perl script from within java.
---kirkRuntime.exec("perl myscript.pl");
Of course whether that "works" depends on what the script does and where the java program runs. -
How can I get firefox to execute perl scripts from local files
I have created perl scripts on my local host (file type ".pl").
In MS Windows I have associated that type to a perl interpreter installed on my local host.
IE allows me to create links to them and to execute them (after asking for permission).
How can I get firefox to do the same? It doesn't seem to allow me to add application types, only to change those that are already defined. As a result, in firefox, they just show up as text, instead of being executed.First guess is that you did not use an .html extension on the file. The file may well be ''name.html.txt''
* see http://www.bbc.co.uk/webwise/guides/file-extensions
*http://windows.microsoft.com/en-gb/windows/show-hide-file-name-extensions#show-hide-file-name-extensions=windows-vista
Forum Note
This is normally offtopic for this forum. I say normally because now we cover webmaker questions. I wonder if this is therefore on topic as a webmaker question?
I have tagged with webmaker-contribution
Maybe you are looking for
-
Hi guys! I need to create some kind of report for my SD. It should contain all orders and first material availability date. This date is displayed in SD order in "all items" area as "first date" (data element name: ETDAT) I dont know how to find (sel
-
FSCM-COL: Worklist functionalities
Hi all, I have another quick question regarding the Worklist functionality that Iu2019m hoping that you guys could clarifyu2026 In the tab u201CInvoicesu201D I have a couple of fields: -u201CPaidu201D u2013 That corresponds to amount paid (Data Eleme
-
How do i extract pages?/
How do I extract pages to create one PDF with files from different sources?
-
Runtime error 10401 with CWAOPoint1 control
I am trying to run an older application and it fails with Runtime error 10401...the specified device is not a NI product... I am trying to run this on a laptop that does not have the hardware. How can I get around this error so I can step through my
-
Hello Everyone, I am creating a day planner for a customer. The day planner includes pictures for the month and then another for the individual weeks. Each set of pictures( four small weekly pictures and one large monthly picture) have a color bar on