Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12587[/thread]

Programme starten die unter DOS laufen

Leser: 1


<< >> 10 Einträge, 1 Seite
johnh
 2008-10-05 22:55
#115189 #115189
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hiii,

1)ich bin ein Anfänger was die Programmierung in Perl angeht. Ich möchte einen Script schreiben, mit dem ich ein Programm starten kann, die unter Windows "cmd.exe" laufen. Kann mir jemand sagen, wie ich so ein Programm starten kann?

Ich habe folgendes Programmiert, bekomme aber eine Fehlermeldung. Das Programm was ich starten möchte heisst HrPing.
Code (perl): (dl )
1
2
3
4
5
6
#!/usr/bin/perl
my $Zeit=localtime();

my $result = ` C:/Windows/system32/cmd.exe -hrping      `;
#my $result = ` hrping  `;
print OLSR "$Zeit\n\n";


2)In einem Tutorial von Perl wurde ein Parser programmiert. Kann mir jemand sagen, was diese Zeile genau für eine Funktion hat:
Code (perl): (dl )
for (@Daten){ s#^.*]\s+(.*)#$1#}


Wäre sehr nett, wenn mir jemand helfen würde...

Grüße,
J
topeg
 2008-10-05 23:13
#115190 #115190
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Das startet wirklich das Programm HrPing?
Code: (dl )
C:/Windows/system32/cmd.exe -hrping

Schon mal so auf einer Konsole ausgeführt?

Code (perl): (dl )
for (@Daten){ s#^.*]\s+(.*)#$1#}

Das ersetzt jeden im Array stehenden Eintrag durch das Capture im regulären Ausdruck.
Längere Form:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for my $zeile (@Daten)
{
 $zeile=~s/
                ^  # Anfang des Stringes
                .* # kein, ein oder beliebig viele irgendwelche Zeichen, so viele wie möglich.
                ]  # ] ( vorsicht "[  ]" ist eine Zeichengruppe. Perl erkennt zwar,
                   # das hier keine Gruppe gemeint ist, aber das muss nicht immer so sein.)
                \s # Ein Leerzeichen oder Tab
                (  # Match Start (Inhalt wird in $1 stehen)
                .* # siehe oben
                )  # Match Ende
                 /$1/x; # der Ersetzungsteil.
                        # Alles was vorher gefunden wurde wird hier ersetzt.
                        # In diesem Fall durch $1
  # Näheres siehe "reguläre Ausdrücke"
}
johnh
 2008-10-05 23:27
#115191 #115191
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hii topeg,

Ne du, mit diesem Befehl habe ich das Programm Hrping nicht starten können. Ich habe nur geschrieben, wie ich es probiert habe...
topeg
 2008-10-05 23:39
#115192 #115192
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Hast du auch darüber nachgedacht warum das nicht geklappt hat?
ein paar Tipps:
- ein Programm startet man am besten mit der vollen Pfadangabe.
- Ich kenne kein Programm, das mit "-" anfängt.
- Das Programm "C:/Windows/system32/cmd.exe" öffnet ein neues Commandfenster.
- schau mal was dir "C:/Windows/system32/cmd.exe /h" für Hilfen gibt.
- Versuche erstmal das Programm "hrping" auf der Commandoshell aus zuführen.

Nebenbei, ich benutze kein Windows und kann dir nur begrenzt helfen.
johnh
 2008-10-06 00:21
#115193 #115193
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Danke Dir Topeg erstmal,

das Programm hrping kann ich ohne weiteres unter cmd.exe starten. Einfach den Pfad zum Hrping auffinden unter cmd.exe unter danach wird es gestarten.
Ich probier nochmal wie ich das unter perl machen kann...

Vielen Dank nochmals...
renee
 2008-10-06 11:43
#115196 #115196
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
johnh+2008-10-05 20:55:50--
Ich habe folgendes Programmiert, bekomme aber eine Fehlermeldung. Das Programm was ich starten möchte heisst HrPing.


Diese Fehlermeldung solltest Du auch posten...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
johnh
 2008-10-07 00:22
#115220 #115220
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hallo Renee..

wenn ich folgendes eingebe bekomme ich keine Fehlermeldung:
Code (perl): (dl )
my $result = "C:\Windows\system32\cmd\hrping -i1 10.1.1.8";


Allerdings kann ich damit nicht mein Programm hrping starten.. $result speichert mir nur den oben aufgeführten Pfad. Hast Du ne Idee wie ich hrping starten und den Inhalt in $result speichern kann ?
renee
 2008-10-07 00:48
#115222 #115222
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
In doppelten Anführungszeichen musst Du den Backslash escapen, also "C:\\Windows\\system32\\cmd\\hrping -i1 10.1.1.8". Außerdem startest Du hier kein Programm, sondern definierst eifnach einen String.

Mach mal

Code (perl): (dl )
1
2
my $result = qx{ C:\\Windows\\system32\\cmd\\hrping -i1 10.1.1.8 2>&1 };
print $result
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
johnh
 2008-10-07 01:06
#115225 #115225
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hammer :-))

Das ist die beste Lösung die ich bekommen habe :-))

Kannst Du mir bitte kurz erläutern, was "qx" und "2>&1" bedeutet ?

Danke Dir vielmals....
renee
 2008-10-07 09:21
#115235 #115235
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2>&1 leitet STDERR auf STDOUT um, so dass in $result auch Fehlermeldungen landen.

Zu qx findest Du mehr unter http://perldoc.perl.org/perlop.html#Quote-Like-Ope...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 10 Einträge, 1 Seite



View all threads created 2008-10-05 22:55.