Thanks a lot! It works fine!

I didn't know about pexpect but even if it seems too much for what I 
want to do, it's good to know ;)

Finally I ended with:
$ ./sec --input=- --debug=3 --no-tail --conf=./rules.sec --log=-
or, simpler:
$ ./sec --testonly --debug=3 --conf=./rules.sec --log=-

Note logs are sent to standard output so my Python program can fetch it 
without using an external file. And command with --testonly works the 
same as first command.

Thanks again!

Marien

Le 2014-08-11 15:47, John P. Rouillard a écrit :
> Hello:
> 
> In message <[email protected]>,
> Marien Fressinaud writes:
>> I'm facing a problem to get result of SEC standard error. I'm 
>> currently
>> writing a software in Python which starts SEC as a subprocess and 
>> tests
>> if a rule file is well-written. So I try to catch SEC standard error 
>> to
>> get something like:
>> ./rules.sec line 1 (test line): Line not in keyword=value format or
>> non-alphanumeric keyword
>> 
>> ## What did I try and what is the result?
>> Since I didn't have anything on standard output / error in Python, I
>> tried these commands in a terminal:
>> 
>> $ ./sec --input=- --debug=3 --no-tail --conf=./rules.sec
>> ./rules.sec line 1 (test line): Line not in keyword=value format or
>> non-alphanumeric keyword
>> 
>> Result is what I expected so I tried then:
>> 
>> $ ./sec --input=- --debug=3 --no-tail --conf=./rules.sec
>> 2>error_file.txt
>> $ cat error_file.txt
>> 
>> ... But there was nothing in my file!
>> 
>> I'm running on an updated Manjaro (~ Arch) distribution with Gnome
>> Terminal 3.12.
>> SEC is in v2.7.6.
> 
> Note in the man page for SEC the --log argument is described:
> 
>   --log=<logfile>
>         use  <logfile>  for logging SEC activities. Note that if the 
> SEC
>         standard error is connected to a terminal, messages will also 
> be
>         logged there, in order to facilitate debugging.
> 
> So that looks like the only way to capture stderr is to run SEC under
> a pty (pseudoterminal).  If you want to choose this solution, I
> suggest reading up on the pexpect python library which I think will do
> that.
> 
> You could try:
> 
> $ ./sec --input=- --debug=3 --no-tail --conf=./rules.sec --log 
> error_file.txt
> 
> and parse error_file.txt which will have the output from sec that
> normally would be sent to stderr if you were on a terminal.
> 
> Also if you are only checking syntax errors, you may want --testonly
> as well. I am not sure if that flag stops stderr redirection though.
> 
>> I don't know if this is a bug or if I'm doing something wrong, but 
>> maybe
>> someone has already faced this kind of problem?
> 
> Given the man page entry, I would say it works as designed.
> 
> --
>                               -- rouilj
> John Rouillard
> ===========================================================================
> My employers don't acknowledge my existence much less my opinions.

------------------------------------------------------------------------------
_______________________________________________
Simple-evcorr-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to