× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



You may have a problem to include the redirection character '>' in the QP2SHELL 
parameters.

Try the following trick:
Create a PASE script file - an ASCII file that contains the PASE command that 
you want to run. You should use the full path to the PASE command.
For example, let's try to remove non-existent file foo. 
We create a new ASCII file called myscript.sh (the CCSID must be ASCII or PASE 
cannot use it..) by running 

touch /yourfolder/myscript.sh

in a PASE environment.

Then, use EDTF to place the following command inside the newly created file:

/QOpenSys/bin/rm  foo  2> /tmp/error.log 

Now run the following: 

CALL PGM(QP2SHELL) PARM('/QopenSys/bin/sh' '/yourfolder/myscript.sh') 

When you look inside /tmp/error.log you should see the error message

rm: foo: No such file or directory



Regards, 
Shalom Carmel
-----------------------
www.venera.com - Exposing iSeries insecurity



----- Original Message -----
From: midrange-l-request@xxxxxxxxxxxx
To: midrange-l@xxxxxxxxxxxx
Sent: 9/3/05 4:33 PM
Subject: MIDRANGE-L Digest, Vol 4, Issue 1662


> 
> ------------------------------
> 
> message: 7
> date: Sat, 3 Sep 2005 15:12:36 -0500 (CDT)
> from: Scott Klement 
> subject: RE: Pase environment from a batch cl
> 
> > I've run across a number of questions similar to "How do I avoid the 
> > terminal display?" I have a strong feeling that I saw an answer in at 
> > least one case that related to environment variable settings, but I 
> > don't think it was directly related to this kind of situation.
> 
> Hmmm... I suspect that you're thinking of QIBM_QSH_CMD_OUTPUT. When you 
> set it to NONE it'll disable the terminal output.  But, it's for QShell, 
> not PASE.
> 
> 
> > However, can you describe how the QIBM_USE_DESCRIPTOR_STDIO environment 
> > variable should be used? What circumstances might it be used within?
> 
> In Unix and MS-DOS, each program has 3 standard i/o channels available.
> 
> One called STDIN (standard input) reads data from the terminal, but can be 
> redirected to get it's input from a file or script.
> 
> One called STDOUT (standard output) writes results to the terminal, but 
> aain, can be redirected to write output to a file.
> 
> One called STDERR (standard error) also writes the results to the 
> terminal. The problem with STDOUT is, if you're attempting to populate a 
> file, but the program wants to write an error message, that error message 
> ends up in the file -- that's not usually desirable.  So error messages 
> are written to a separate channel, STDERR.
> 
> These three standard input/output streams are collectively referred to as 
> "STDIO"
> 
> Since the C programming language grew up around Unix (and Unix around C) 
> it has these constructs built into it.  Other Unix children do as well 
> (such as Java, Perl, etc.)  They're also used to allow communications 
> between a web server and a CGI program, since those also grew up around 
> the Unix environment.
> 
> So, when C was implemented on the iSeries, they created these 
> stdin, stdout, stderr channels as well.  They're buffered streams, 
> compatible with those you'd use with the fopen(), fgets(), fputs(), etc 
> APIs from the ILE C runtime.
> 
> When the iSeries added the IFS to it's repetoire in V3R1, they also 
> implemented descriptor I/O, and the whole new set of APIs, open(), read(), 
> etc.  And they added a 2nd set of fopen(), fgets(), etc routines that work 
> with the IFS.
> 
> Well, on a Unix system, there's only one implementation of fopen() and 
> friends, and under the covers they call the open() and friends.  When you 
> work with stdin, it's always using descriptor 0, when you use stdout, it's 
> always descriptor 1, when you use stderr, always descriptor 2.
> 
> That wasn't the case on the iSeries -- the iSeries had the 
> stdin/stdout/stderr streams before they even had descrptors, so they 
> didn't do it that way.  That really screws up shell scripts (such as those 
> for QShell or PASE) since they rely on those descriptor numbers.
> 
> So, they added the QIBM_USE_DESCRIPTOR_STDIO envvar.  When this is set to 
> Y, the system will act in a manner compatible with Unix, using those 3 
> descriptors for the STDIO streams.
> 
> Indeed, in a previous message someone told the OP to do the following:
> 
>        scp source host:target 2> /tmp/error_log
> 
> What that "2>" means is that you want it to write the output of descriptor 
> 2 to a file called /tmp/error_log.  But for some reason, the OP couldn't 
> get that to work.
> 
> I don't think that sort of redirect works with qp2shell, because it 
> doesn't submit a background job to run the commands in like QShell does, 
> but maybe it's just me.
> 
> > I ask in order to get info but also in case it sparks someone else's 
> > memory of a different envvar. Maybe there is an obscure technique out 
> > there. (And maybe not.)
> 
> What about my suggestion of using spawnp()?  Wouldn't that work?
> 
> 


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.