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

    Edited once, last by Papsi (April 22, 2011 at 1:23 PM).

  • 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.

    VDR zwei drei
    • VDR 01 (Server): 2.7.4/6 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): 2.6.9 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - mpv - osd2web - osdteletext - skinnopacity - softhddevice - streamdev-client - svdrpservice]
  • "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/funktione…rufe.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

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!