Schrift
[thread]6784[/thread]

system probleme: mehrere befehle absetzen



<< >> 7 Einträge, 1 Seite
pktm
 2005-03-12 21:05
#52599 #52599
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich würde gerne folgendes machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/Perl/bin/perl

use strict;
use warnings;
use File::Spec;
use Data::Dumper;

my @befehle = (
'psexec \\Server -u Usn -p pwd -i cmd.exe',
'cd..',
'cd..',
"cd Perl",
"cd tk",
"cd werbung",
"werbung.pl -start -hideCursor",
);

print Data::Dumper::Dumper( \@befehle );

system(@befehle) == 0 or die "fehler bei system: ", $?, $!;


Aber ich erhalte immer die Ausgabe:
Quote
Das System kann den angegebenen Pfad nicht finden.
fehler bei system: 256No such file or directory at system.pl line 20.


Wenn ich die Befehle so wie sie da oben stehen in die Konsole eingebe klappt alles wunderbar.

Woran liegts?

mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2005-03-12 21:31
#52600 #52600
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
versuch mal
Code: (dl )
1
2
my $cmd = join "\n", @befehle;
system($cmd) == 0 or die "fehler bei system: ", $?, $!;
pktm
 2005-03-13 20:05
#52601 #52601
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Brachte auch nicht das gewünschte Ergebnis.
Allerdings lag es nicht am COde sonder daran, dass psexec eine neue shell öffnet, die nächsten Kommandos aber nicht in diese, sonder in die systemeigene shell gepostet wurden.
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2005-03-14 17:03
#52602 #52602
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
vielleicht hilft es, die einzelnen kommandos mit && zusammenzukleben und als ein kommando auszufuehren...

Nebenbei: Das Modul FindBin hilft, relative Pfade in absolute zu konvertieren, sodass das Script nicht mehr auf irgendein aktuelles Verzeichnis angewiesen ist, wenn man alles, was von extern kommt (z.B. Dateien, eigene Module) mit $FindBin::Bin erweitert, z.B.
Code: (dl )
1
2
use FindBin;
my $infile = "$FindBin::Bin/myFile.txt";
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2005-03-15 16:52
#52603 #52603
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Das mit && hat leider keine Änderung ergeben, die Befehle wurden wieder in der selben Shell abgesetzt.

Dafür hat mich der Tipp mit FinBin auf die Idee gebracht doch die Implementation endlich auch zu benutzen.
Hatte nämlich bislang das hier stehen:
Code: (dl )
1
2
use FinBin qw($Bin); # oder so
use lib qw(pm/);


Jetzt steht dort:
Code: (dl )
1
2
use FindBin qw($Bin);
use lib "$Bin/pm/";


Jetzt habe ich auch keine Fehlermeldungen durch relative Pfade beim remot-Zugriff und kann das Programm mittels
Code: (dl )
psexec \\Server -i -w"C:/Perl/tk/werbung" werbung.pl -start -hideCursor

starten. *freu* :laugh:

Allerdings fände ich es wesentlich besser wenn ich es mit Perl hinbekommen würde.

EDIT: Typo\n\n

<!--EDIT|pktm|1110912696-->
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2005-03-15 17:31
#52604 #52604
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
funktioniert:
Code: (dl )
1
2
use FindBin qw($Bin);
use lib "$bin/pm/";

wirklich bei Aufrufen ausserhalb des Verzeichnisses? $Bin ne $bin... aber da du sowieso mit use strict arbeitest, war das sicher nur ein tippfehler hier im board...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2005-03-15 20:52
#52605 #52605
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ach entschuldige, natürlich muss es groß B sein. Habe es oben geändert.
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 7 Einträge, 1 Seite



View all threads created 2005-03-12 21:05.