Perl Script und svdrpsend + anderes Problem

  • Hallo,


    ich habe ein Perl Script und rufe damit die Daten von meinen Solarwechselrichtern ab.


    Nun möchte ich mir einige Daten per svdrpsend von meinen Server an einen bestimmten VDR im Heimnetz senden.


    Code
    /usr/bin/svdrpsend -d 192.168.0.9 MESG "Test"

    funktioniert ohne Probleme


    Nun möchte ich das in dieses Script einbauen:

    Code
    ...
    # Write Results to Console...
    print "$AC_POWER_NOW\n";
    
    
    # Send Results to WoZi VDR...
    /usr/bin/svdrpsend -d 192.168.0.9 MESG $AC_POWER_NOW;
    exit(0);


    Klappt leider nicht, mit folgender Meldung:

    Code
    root@Server:~# perl solar.pl
    Bareword found where operator expected at solar.pl line 605, near "/usr/bin"
        	(Missing operator before bin?)
    Bareword found where operator expected at solar.pl line 605, near "192.168.0.9 MESG"
        	(Missing operator before MESG?)
    syntax error at solar.pl line 605, near "/usr/bin"
    Execution of solar.pl aborted due to compilation errors.
    root@Server:~#



    Wie kann ich das Senden von svdrvsend in ein Perl Script einbauen?


    Gruß
    Papsi

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

    Einmal editiert, zuletzt von Papsi ()

  • Hi,


    in perl kannst du nicht wie in einer Shell externe Kommandos einfach so hinschreiben.
    Du musst sie entweder mit "system( ... )" oder mit "open( H, ... )" aufrufen.


    In deinem Fall z.B. mit


    $ret_val = system( "/usr/bin/svdrpsend -d 192.168.0.9 MESG $AC_POWER_NOW" );


    als einfachster Variante.


    Ciao.
    Michael.

  • "system" war die Lösung...


    Damit klappt es:

    Code
    system("/usr/bin/svdrpsend -d 192.168.0.9 MESG $AC_POWER_NOW");


    Vielen Dank !

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

  • Naja, svdrpsend ist auch nur ein ganz kleines Perl Script, warum übernimmst du den Code nicht einfach in dein Script?


    Ansonsten: http://de.selfhtml.org/perl/fu…/systemaufrufe.htm#system


    cu

  • hi


    ein qx ( /usr/bin/svdrpsend -d 192.168.0.9 MESG $AC_POWER_NOW) ; sollte auch gehen.


    wenn du es richtig machen willst solltest du open3 verwenden


    http://perldoc.perl.org/IPC/Open3.html


    ist in der regel als core modul dabei.


    holger

    VDR1 : core2duo 3.2 Ghz , 1GB Ram , 2x TT 1501 DVB-C 1 GB HD , Asus EN 210 Silent , Debian Squeeze 64bit + e-tobi Pakete
    VDR2 : 1.2 Ghz P3 , Digitainer 768 MB Ram , yavdr 0.3a 32 bit

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!