Schrift
[thread]8202[/thread]

Problem mit dem Befehl system: Programmparameter aus einer Variable...



<< >> 6 Einträge, 1 Seite
DRACO
 2006-07-26 19:30
#68401 #68401
User since
2006-07-26
3 Artikel
BenutzerIn
[default_avatar]
mit dem Befehl system lassen sich ja programme ausführen jedoch wollte ich die Parameter für das Programm aus einer Variable auslesen Z.b.:

Code: (dl )
system "nmap -v -A $ip > C:/log/$ip.log";


Aber irgendwie krig ich das nich gebacken

BIG THX
renee
 2006-07-26 20:01
#68402 #68402
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gibt es denn eine Fehlermeldung?

probier mal
Code: (dl )
1
2
my @args = ('-v','-A',$ip,">","C:\\log\\$ip.log");
system('nmap',@args);
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/
DRACO
 2006-07-26 21:26
#68403 #68403
User since
2006-07-26
3 Artikel
BenutzerIn
[default_avatar]
hmm komischer weise funzen jez beide versionen jedoch hab ich noch ein paar probleme mit den Schleifen


ip.list:

Code: (dl )
1
2
192.168.0.40
192.168.0.2


scann.pl:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
$pfad ="ip.list";

open(DATEI, $pfad);
@inhalt=<DATEI>;
close(DATEI);

foreach $dip_tab (@inhalt) {
system "nmap -v -A $dip_tab > C:/log/$dip_tab.log";
print "scann fertig auf: $dip_tab\n";
}


er liest immer nur eine ip aus der liste aus die anderen ignoriert er hab ich da vil noch n Syntaxfehler

THX
renee
 2006-07-26 21:39
#68404 #68404
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein paar allgemeine Anmerkungen:

*) Du solltest Dir angewöhnen, Wiki:use strict und use warnings zu verwenden. Jetzt mögen die Programme noch übersichtlich sein, aber die beiden Sachen helfen Dir, viele Fehler zu vermeiden.

*) Du solltest Fehler abfangen.

*) Du solltest angeben, für was die Datei öffnest (lesend, schreibend).

*) Du solltest chomp verwenden

*) Statt alles in ein Array einzulesen und dann das Array abzuarbeiten, solltest Du schon beim Einlesen die Zeile "verarbeiten"

Das ganze sieht dann so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;

my $pfad ="ip.list";

open(DATEI, "<", $pfad) or die $!;
while(my $dip_tab = <DATEI>){
chomp $dip_tab;
system "nmap -v -A $dip_tab > C:/log/$dip_tab.log";
print "scann fertig auf: $dip_tab\n";
}
close DATEI;
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/
DRACO
 2006-07-26 22:06
#68405 #68405
User since
2006-07-26
3 Artikel
BenutzerIn
[default_avatar]
Danke für die Hinweise und die Korrektur werde mich in Zukunft drann halten ;).

soweit funzt ja alles nur das schreiben in die logfiles klappt noch nich so gut er schreibt immer nur bei einer ip ein log bei den anderen kommt
Code: (dl )
1
2
3
4
$ ./scann.pl
.log: No such file or directory
.log: No such file or directory
.log: No such file or directory
\n\n

<!--EDIT|DRACO|1153937192-->
betterworld
 2006-07-27 00:43
#68406 #68406
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=renee,26.07.2006, 18:01]probier mal
Code: (dl )
1
2
my @args = ('-v','-A',$ip,">","C:\\log\\$ip.log");
system('nmap',@args);
[/quote]
Das kann so nicht funktionieren. Die Mehrere-Parameter-Form von system ist zwar meist zu bevorzugen, weil dadurch die Parameter nicht durch eine Shell interpretiert werden, was unbeabsichtigte Nebenwirkungen erspart. In diesem Falle jedoch will man ja die Shell haben, denn die Umleitung mit '>' ist definitiv ein Shell-Feature.

[s]Man kann natuerlich auch so machen:[/s]
Code: (dl )
1
2
3
4
5
6
{
local *STDOUT;
open STDOUT, '>', "c:\\log\\$ip.log" or die $!;
my @args = ('-v','-A',$ip);
system('nmap', @args);
}

Update: Funktioniert doch nicht so, wie ich mir das gedacht habe.\n\n

<!--EDIT|betterworld|1153947721-->
<< >> 6 Einträge, 1 Seite



View all threads created 2006-07-26 19:30.