PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl system() mit Parametern



e2e4
31-01-2006, 12:45
Salut,

ich habe hier ein Problem vom dem system()-Aufruf bei der Übergabe von Parametern. Folgendes einfache Skript:


#!/usr/bin/perl

my @args = ("scp",
"-i",
"/skripte/id_dsa",
"dateikopierer@192.168.7.6:/backup/wikikonfigbackup-31.01.2006.tar.gz",
"/lvm-caebackup/Wikibackup");

system ( @args ) == 0 or die "system @args failed: $?";

Rufe ich dieses auf, dann bleibt das Programm hängen und gibt den failed-Wert 256 zurück.

Ich habe schon den Aufruf innerhalb einer Zeile probiert:


system ('"scp -i /skripte/id_dsa dateikopierer@192.168.7.6:/backup/wikikonfigbackup-31.01.2006.tar.gz /lvm-caebackup/Wikibackup"');

und komme dennoch nicht weiter.

Beim Aufruf direkt auf der Kommandozeile funktioniert alles tadellos. Wer hat eine Idee?

Grüße, e2e4

shb
31-01-2006, 13:03
warum schreibst du das so

system ('"scp -i /skripte/id_dsa dateikopierer@192.168.7.6:/backup/wikikonfigbackup-31.01.2006.tar.gz /lvm-caebackup/Wikibackup"');
und nicht so

system ("scp -i /skripte/id_dsa dateikopierer@192.168.7.6:/backup/wikikonfigbackup-31.01.2006.tar.gz /lvm-caebackup/Wikibackup");

oder sehe ich das falsch?

cu SHB

e2e4
31-01-2006, 13:13
Salut,

Dir geht es sicherlich um die hinzugefügten ' ' - Zeichen. Diese Variante hatte ich auch zuerst (ohne Erfolg), bis ich folgendes gefunden habe:

http://forum.perl.de/bb/viewtopic.php?t=3529

Eine Erklärung dafür konnte ich aber bisher noch nicht finden.

Grüße, e2e4

michael.sprick
31-01-2006, 13:56
So ganz spontan würde ich mal behaupten, beide Probleme sind auf das unmaskierte @ zurückzuführen...



my @args = ("scp",
"-i",
"/skripte/id_dsa",
"dateikopierer@192.168.7.6:/backup/wikikonfigbackup-31.01.2006.tar.gz",
"/lvm-caebackup/Wikibackup");

und


system ("scp -i /skripte/id_dsa dateikopierer@192.168.7.6:/backup/wikikonfigbackup-31.01.2006.tar.gz /lvm-caebackup/Wikibackup");


Wenn Du "" benutzt, werden alle enthaltenen Skalare, Arrays und hashes interpoliert. Du musst entweder das @ maskieren -> \@ oder das Ganze in Single Quotes setzen '

e2e4
31-01-2006, 14:42
So ganz spontan würde ich mal behaupten, beide Probleme sind auf das unmaskierte @ zurückzuführen...

Top! Das war die Lösung, Danke!