Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

Among the lucky, you are the chosen one.


rocksolid / de.comp.lang.perl / STDIN und STDERR umleiten?

SubjectAuthor
* STDIN und STDERR umleiten?Ulli Horlacher
+- Re: STDOUT und STDERR umleiten?Ulli Horlacher
+* Re: STDIN und STDERR umleiten?Markus Schaaf
|`* Re: STDIN und STDERR umleiten?Ulli Horlacher
| `- Re: STDIN und STDERR umleiten?Ulli Horlacher
`- Re: STDOUT und STDERR umleiten?Heiko Schlichting

1
Subject: STDIN und STDERR umleiten?
From: Ulli Horlacher
Newsgroups: de.comp.lang.perl
Organization: University of Stuttgart, FRG
Date: Thu, 16 May 2024 07:47 UTC
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.datentrampelpfad.de!thinkmo.de!news.uni-stuttgart.de!.POSTED!not-for-mail
From: frams...@rus.uni-stuttgart.de (Ulli Horlacher)
Newsgroups: de.comp.lang.perl
Subject: STDIN und STDERR umleiten?
Date: Thu, 16 May 2024 07:47:27 +0000 (UTC)
Organization: University of Stuttgart, FRG
Lines: 23
Message-ID: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de>
X-Trace: news2.informatik.uni-stuttgart.de 1715845647 8239 129.69.1.129 (16 May 2024 07:47:27 GMT)
X-Complaints-To: rusnews@informatik.uni-stuttgart.de
NNTP-Posting-Date: Thu, 16 May 2024 07:47:27 +0000 (UTC)
User-Agent: tin/2.6.3-20231224 ("Banff") (Linux/5.15.0-107-generic (x86_64))
View all headers

In einem bash Skript kann ich STDIN und STDERR so umleiten:

exec >/tmp/zz.log 2>&1

Das gilt dann fuer alle nachfolgenden Kommandos.

Ich such dazu ein Perl-Aequivalent. Damit:

open $log,'>','/tmp/zz.log' or die $!;
*STDOUT = $log;
*STDERR = $log;
print "test\n";
system("pwd")

landet in /tmp/zz.log nur "test", nicht aber der output vom pwd.

--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/

Subject: Re: STDOUT und STDERR umleiten?
From: Ulli Horlacher
Newsgroups: de.comp.lang.perl
Organization: University of Stuttgart, FRG
Date: Thu, 16 May 2024 08:44 UTC
References: 1
Path: i2pn2.org!i2pn.org!news.nntp4.net!speedkom.net!news.uni-stuttgart.de!.POSTED!not-for-mail
From: frams...@rus.uni-stuttgart.de (Ulli Horlacher)
Newsgroups: de.comp.lang.perl
Subject: Re: STDOUT und STDERR umleiten?
Date: Thu, 16 May 2024 08:44:07 +0000 (UTC)
Organization: University of Stuttgart, FRG
Lines: 16
Message-ID: <v24h0n$8tr$1@news2.informatik.uni-stuttgart.de>
References: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de>
X-Trace: news2.informatik.uni-stuttgart.de 1715849047 9147 129.69.1.129 (16 May 2024 08:44:07 GMT)
X-Complaints-To: rusnews@informatik.uni-stuttgart.de
NNTP-Posting-Date: Thu, 16 May 2024 08:44:07 +0000 (UTC)
User-Agent: tin/2.6.3-20231224 ("Banff") (Linux/5.15.0-107-generic (x86_64))
View all headers

Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote:
> In einem bash Skript kann ich STDIN und STDERR so umleiten:
>
> exec >/tmp/zz.log 2>&1

ARGH!
Das muss latuernich "STDOUT und STDERR" heissen!
Subject angepasst :-}

--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/

Subject: Re: STDIN und STDERR umleiten?
From: Markus Schaaf
Newsgroups: de.comp.lang.perl
Organization: A noiseless patient Spider
Date: Thu, 16 May 2024 09:41 UTC
References: 1
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: msch...@elaboris.de (Markus Schaaf)
Newsgroups: de.comp.lang.perl
Subject: Re: STDIN und STDERR umleiten?
Date: Thu, 16 May 2024 11:41:15 +0200
Organization: A noiseless patient Spider
Lines: 52
Message-ID: <v24kbr$1g1f9$2@dont-email.me>
References: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 16 May 2024 11:41:15 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="3e38f57cc8fc67313a8152957cb846a1";
logging-data="1574377"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18I/h0FOqjDQuzZrWASiX4w"
User-Agent: Mozilla Thunderbird
In-Reply-To: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de>
Content-Language: de-DE, en-US
View all headers

Am 16.05.24 um 09:47 schrieb Ulli Horlacher:
> In einem bash Skript kann ich STDIN und STDERR so umleiten:
>
> exec >/tmp/zz.log 2>&1
>
> Das gilt dann fuer alle nachfolgenden Kommandos.
>
> Ich such dazu ein Perl-Aequivalent. Damit:
>
> open $log,'>','/tmp/zz.log' or die $!;
> *STDOUT = $log;
> *STDERR = $log;
> print "test\n";
> system("pwd")
>
> landet in /tmp/zz.log nur "test", nicht aber der output vom pwd.

Hattu Kopp wie Sieb, muttu aufschreiben!

> Am 14.02.23 um 16:46 schrieb Ulli Horlacher:
>> Markus Schaaf <mschaaf@elaboris.de> wrote:
>>> Am 14.02.23 um 15:30 schrieb Ulli Horlacher:
>>>> Ich moechte STDERR lokal umdefinieren (output verwerfen).
>>>>
>>>> So funktionierts leider nicht:
>>>>
>>>> {
>>>> open(local *STDERR,'>','/dev/null');
>>>> system qw'ls -l',@files;
>>>> }
>>>>
>>>> system muss ohne Shell funktionieren, weil @files problematische Zeichen
>>>> enthaelt.
>>>
>>> use IPC::Run qw( run );
>>> run [ qw'ls -l', @files ], '2>', '/dev/null' or die $?;
>>
>> IPC::Run ist nicht Bestandteil von Perl CORE.
>> Es muss mit Standard Perl funktionieren.
>
> Du bist aber schwierig: :-)
>
> use POSIX;
> my $ostderr = POSIX::dup( 2 );
> POSIX::dup2( POSIX::open( "/dev/null", &POSIX::O_RDWR ), 2 );
> system qw( ls a );
> POSIX::dup2( $ostderr, 2 );
> POSIX::close( $ostderr );
>
> MfG
>

Subject: Re: STDOUT und STDERR umleiten?
From: Heiko Schlichting
Newsgroups: de.comp.lang.perl
Organization: Freie Universitaet Berlin
Date: Thu, 16 May 2024 11:16 UTC
References: 1
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!not-for-mail
From: hei...@cis.fu-berlin.de (Heiko Schlichting)
Newsgroups: de.comp.lang.perl
Subject: Re: STDOUT und STDERR umleiten?
Date: 16 May 2024 11:16:54 GMT
Organization: Freie Universitaet Berlin
Lines: 27
Message-ID: <lam896F9l1qU1@mid.uni-berlin.de>
References: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit
X-Trace: news.uni-berlin.de 4CVlQE4mIT9DbgxcVo/9dgri/geWjRDgn5y4j1wyWCYRZmm6+Iv36kUsfuSJ+M0jOdBUM=
Cancel-Lock: sha1:kjvbY+rWqPhXWbCD0fcRiFzQleM= sha1:nSF3gJScJaqvLvCOL7a1em4dZyU= sha256:Qos4x1ZCIt1i+OBp5m9647OBEY+sUJ55I53gzezntRY=
User-Agent: slrn/1.0.3 (Linux)
View all headers

Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote:
>
> Ich such dazu ein Perl-Aequivalent. Damit:
>
> open $log,'>','/tmp/zz.log' or die $!;
> *STDOUT = $log;
> *STDERR = $log;
> print "test\n";
> system("pwd")
>
> landet in /tmp/zz.log nur "test", nicht aber der output vom pwd.

Das ist grundsätzlich schon richtig, aber mit 'system()' geht das ja gar
nicht über perl, sondern schreibt direkt. Folgendes funktioniert bei mir
(der Block und die Benutzung von local ist nicht zwingend, aber eine
elegante Methode, um das zu begrenzen/rückgängig zu machen):

{
open my $log, '>', '/tmp/zz.log' or die $!;
local *STDOUT = $log;
local *STDERR = $log;

print "test\n";
print qx(pwd);
}

Heiko

Subject: Re: STDIN und STDERR umleiten?
From: Ulli Horlacher
Newsgroups: de.comp.lang.perl
Organization: University of Stuttgart, FRG
Date: Thu, 16 May 2024 12:20 UTC
References: 1 2
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.datentrampelpfad.de!thinkmo.de!news.uni-stuttgart.de!.POSTED!not-for-mail
From: frams...@rus.uni-stuttgart.de (Ulli Horlacher)
Newsgroups: de.comp.lang.perl
Subject: Re: STDIN und STDERR umleiten?
Date: Thu, 16 May 2024 12:20:46 +0000 (UTC)
Organization: University of Stuttgart, FRG
Lines: 83
Message-ID: <v24tmu$bml$1@news2.informatik.uni-stuttgart.de>
References: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de> <v24kbr$1g1f9$2@dont-email.me>
X-Trace: news2.informatik.uni-stuttgart.de 1715862046 11989 129.69.1.129 (16 May 2024 12:20:46 GMT)
X-Complaints-To: rusnews@informatik.uni-stuttgart.de
NNTP-Posting-Date: Thu, 16 May 2024 12:20:46 +0000 (UTC)
User-Agent: tin/2.6.3-20231224 ("Banff") (Linux/5.15.0-107-generic (x86_64))
View all headers

Markus Schaaf <mschaaf@elaboris.de> wrote:
> Am 16.05.24 um 09:47 schrieb Ulli Horlacher:
>> In einem bash Skript kann ich STDIN und STDERR so umleiten:
>>
>> exec >/tmp/zz.log 2>&1
>>
>> Das gilt dann fuer alle nachfolgenden Kommandos.
>>
>> Ich such dazu ein Perl-Aequivalent. Damit:
>>
>> open $log,'>','/tmp/zz.log' or die $!;
>> *STDOUT = $log;
>> *STDERR = $log;
>> print "test\n";
>> system("pwd")
>>
>> landet in /tmp/zz.log nur "test", nicht aber der output vom pwd.
>
> Hattu Kopp wie Sieb, muttu aufschreiben!
>
>> Am 14.02.23 um 16:46 schrieb Ulli Horlacher:
>>> Markus Schaaf <mschaaf@elaboris.de> wrote:
>>>> Am 14.02.23 um 15:30 schrieb Ulli Horlacher:
>>>>> Ich moechte STDERR lokal umdefinieren (output verwerfen).

Da gings nur um STDERR und ausserdem ist das ja ueber ein Jahr her (faule
Ausrede)!

>> use POSIX;
>> my $ostderr = POSIX::dup( 2 );
>> POSIX::dup2( POSIX::open( "/dev/null", &POSIX::O_RDWR ), 2 );
>> system qw( ls a );
>> POSIX::dup2( $ostderr, 2 );
>> POSIX::close( $ostderr );

Das schreibt nur STDERR nach /dev/null
Ich will aber STDERR und STDOUT in ein logfile schreiben, nicht verwerfen.

So gehts nicht:

framstag@diaspora:/sw/share/fstools-0.0/examples: cat outputredirect.pl
#!/usr/bin/perl -w

use POSIX;

print "\nregular output:\n";
vsystem(qw'ls -l ZZ',$0);
$out = 'out.log';
print "\nredirected to $out:\n";
output($out);
system(qw'ls -l ZZ',$0);

sub output {
my $out = shift;
POSIX::dup2(POSIX::open($out,&POSIX::O_RDWR),1);
POSIX::dup2(POSIX::open($out,&POSIX::O_RDWR),2);
}

framstag@diaspora:/sw/share/fstools-0.0/examples: ./outputredirect.pl

regular output:
# ls -l ZZ ./outputredirect.pl
ls: cannot access 'ZZ': No such file or directory
-rwxr-xr-x 1 framstag users 591 May 16 14:15 ./outputredirect.pl

redirected to out.log:
Use of uninitialized value in subroutine entry at ./outputredirect.pl line 14.
Use of uninitialized value in subroutine entry at ./outputredirect.pl line 15.
# ls -l ZZ ./outputredirect.pl
ls: cannot access 'ZZ': No such file or directory
-rwxr-xr-x 1 framstag users 591 May 16 14:15 ./outputredirect.pl

Und wieso die Fehlermeldung?

--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/

Subject: Re: STDIN und STDERR umleiten?
From: Ulli Horlacher
Newsgroups: de.comp.lang.perl
Organization: University of Stuttgart, FRG
Date: Thu, 16 May 2024 12:32 UTC
References: 1 2 3
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.datentrampelpfad.de!thinkmo.de!news.uni-stuttgart.de!.POSTED!not-for-mail
From: frams...@rus.uni-stuttgart.de (Ulli Horlacher)
Newsgroups: de.comp.lang.perl
Subject: Re: STDIN und STDERR umleiten?
Date: Thu, 16 May 2024 12:32:15 +0000 (UTC)
Organization: University of Stuttgart, FRG
Lines: 69
Message-ID: <v24ucf$bml$2@news2.informatik.uni-stuttgart.de>
References: <v24dmf$81f$1@news2.informatik.uni-stuttgart.de> <v24kbr$1g1f9$2@dont-email.me> <v24tmu$bml$1@news2.informatik.uni-stuttgart.de>
X-Trace: news2.informatik.uni-stuttgart.de 1715862735 11989 129.69.1.129 (16 May 2024 12:32:15 GMT)
X-Complaints-To: rusnews@informatik.uni-stuttgart.de
NNTP-Posting-Date: Thu, 16 May 2024 12:32:15 +0000 (UTC)
User-Agent: tin/2.6.3-20231224 ("Banff") (Linux/5.15.0-107-generic (x86_64))
View all headers

Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote:

> Ich will aber STDERR und STDOUT in ein logfile schreiben, nicht verwerfen.
>
> So gehts nicht:
>
>
> framstag@diaspora:/sw/share/fstools-0.0/examples: cat outputredirect.pl
> #!/usr/bin/perl -w
>
> use POSIX;
>
> print "\nregular output:\n";
> vsystem(qw'ls -l ZZ',$0);
> $out = 'out.log';
> print "\nredirected to $out:\n";
> output($out);
> system(qw'ls -l ZZ',$0);
>
> sub output {
> my $out = shift;
> POSIX::dup2(POSIX::open($out,&POSIX::O_RDWR),1);
> POSIX::dup2(POSIX::open($out,&POSIX::O_RDWR),2);
> }

Falsche POSIX modes!

So funktionierts:

framstag@diaspora:/sw/share/fstools-0.0/examples: cat outputredirect.pl
#!/usr/bin/perl -w

use POSIX;

print "\nregular output:\n";
vsystem(qw'ls -l ZZ',$0);
$out = 'out.log';
print "\nredirected to $out:\n";
output($out);
vsystem(qw'ls -l ZZ',$0);

sub output {
my $out = shift;
my $mode = &POSIX::O_CREAT | &POSIX::O_WRONLY | &POSIX::O_APPEND;
POSIX::dup2(POSIX::open($out,$mode),1);
POSIX::dup2(POSIX::open($out,$mode),2);
}

framstag@diaspora:/sw/share/fstools-0.0/examples: ./outputredirect.pl

regular output:
# ls -l ZZ ./outputredirect.pl
ls: cannot access 'ZZ': No such file or directory
-rwxr-xr-x 1 framstag users 641 May 16 14:28 ./outputredirect.pl

redirected to out.log:

framstag@diaspora:/sw/share/fstools-0.0/examples: cat out.log
# ls -l ZZ ./outputredirect.pl
ls: cannot access 'ZZ': No such file or directory
-rwxr-xr-x 1 framstag users 641 May 16 14:28 ./outputredirect.pl

--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/


rocksolid / de.comp.lang.perl / STDIN und STDERR umleiten?

1
server_pubkey.txt

rocksolid light 0.9.12
clearnet tor