ubuntuusers.de

escape oder Umleitung in Perl

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

wenze

Avatar von wenze

Anmeldungsdatum:
9. August 2006

Beiträge: 161

Wohnort: vergessen

Hallo,

ich habe ein Problem mit einem Systemaufruf der mir immer wieder Meldungen reinbringt.

1
su - sidadm -c disp+work -version

Ausgabe:

--------------------
disp+work information
--------------------

kernel release                745

kernel make variant           745_REL

compiled on                   AIX 1 6 

compiled for                  64 BIT

compilation mode              UNICODE

compile time                  May 23 2017 08:18:29

Wed May 16 20:44:52 2018
Loading DB library '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' ...
Library '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' loaded
Version of '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' is "745.04", patchlevel (0.500)

update level                  0

patch number                  500

source id                     0.500

RKS compatibility level       0

DW_GUI compatibility level    500


---------------------
supported environment
---------------------

database (SAP, table SVERS)   740
                              750
                              762

operating system

Mit der Umleitung bekomme ich das ganze ohne "Loading DB library "

1
su - sidadm -c disp+work -version 2>/dev/null

Wie muss ich das in Perl mit der Umleitung schreiben, damit das sauber funktioniert?

Im Moment nutze ich:

1
2
my $disp = "disp+work"
my @SapKernel_Info = `su - $SIDadm -c $disp  2>/dev/null`;

Was mir diese Ausgabe bringt:

Wed May 16 20:58:39 2018
Loading DB library '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' ...
Library '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' loaded
Version of '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' is "745.04", patchlevel (0.500)

Wed May 16 20:58:39 2018
Loading DB library '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' ...
Library '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' loaded
Version of '/usr/sap/SID/SYS/exe/run/dbdb6slib.so' is "745.04", patchlevel (0.500)
host : aix : 6.1.0.0 : SID : 01 : 745_REL : UNICODE : 500
host : aix : 6.1.0.0 : SID : 00 : 745_REL : UNICODE : 500

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Siehe hier. Da ist auch beschrieben, wie man STDERR ignoriert.

wenze

(Themenstarter)
Avatar von wenze

Anmeldungsdatum:
9. August 2006

Beiträge: 161

Wohnort: vergessen

Danke, sowas habe ich gesucht.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

wenze schrieb:

Danke, sowas habe ich gesucht.

Bitte markiere das Thema als "gelöst", wenn Deine Frage beantwortet ist! Vielen Dank!

wenze

(Themenstarter)
Avatar von wenze

Anmeldungsdatum:
9. August 2006

Beiträge: 161

Wohnort: vergessen

Habe gerade das getestet:

To capture a program's STDOUT, but discard its STDERR:

1
2
3
4
5
6
7
    use IPC::Open3;
    use File::Spec;
    my $in = '';
    open(NULL, ">", File::Spec->devnull);
    my $pid = open3($in, \*PH, ">&NULL", "disp+work");
    while( <PH> ) { }
    waitpid($pid, 0);
Antworten |