IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Script perl fonctionne en .pl mais pas en .exe


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut Script perl fonctionne en .pl mais pas en .exe
    Bonjour à tous !
    Alors voilà, j'ai un script Perl qui à pour but de convertir des fichiers XML en map Freemind (.mm).
    Quand je lance ce script perl en ligne de commande tout fonctionne à merveille, cependant, j'ai besoin d'utiliser ce script sur une machine qui n'a pas perl. Je l'ai donc converti en fichier exécutable avec le module pp de PAR:: Packer. Mais quand je lance l'exécutable j'ai une erreur et le script ne marche plus.
    Pour information, il n'y a besoin d'aucun paramètre pour lancer le script.

    Voici mon erreur :
    Nom : errorExeScript1.png
Affichages : 155
Taille : 9,1 Ko

    Si je comprend bien l'erreur il ne trouve pas le fichier, pourtant il existe bel et bien et se trouve dans le même répertoire.

    Et voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    #!/usr/bin/perl
    # (C) Kost. Distributed under GPL.
     
    use strict;
    use XML::Simple;
    use Getopt::Long;
    use Cwd;
    use Carp;
    use warnings;
    use File::Spec;
    # use Data::Dumper;
     
    my $mindmap;
    my $fileperhost = 1;
    my $nmapfile;
     
    my $repertoireCourant = getcwd;
    my $nomScan           = File::Spec->catfile($repertoireCourant, 'leScan.xml');
    my $nomMap            = File::Spec->catfile($repertoireCourant, 'mapXmind.mm');
     
    $nmapfile=$nomScan;
    $mindmap=$nomMap;
     
    #my $repertoireCourant= cwd();
    #my $nomScan="/leScan.xml";
    #my $nomMap="/mapXmind.mm";
    #$nmapfile=$repertoireCourant . $nomScan;
    #$mindmap=$repertoireCourant . $nomMap;
     
    #$nmapfile="leScan.xml";
    #$mindmap="mapXmind.mm";
     
    $fileperhost=0;
     
    print STDERR "Using $mindmap as output\n";
     
    print STDERR "Processing $nmapfile...\n";
    my $nmapxml;
     
    eval {
    #print qx(dir);
    $nmapxml = XMLin($nmapfile, ForceArray => 1, KeyAttr => ''); 
    } or die ("Check your XML file $nmapfile! Error parsing XML file: $!");
     
    my $mindfile=$mindmap;
    if ($fileperhost == 0) {
    	open (OFILE,">$mindfile") or die ("Cannot open $mindmap for writting: $!");
    	print OFILE '<map version="0.7.1">'."\n";
    	print OFILE '<node TEXT="scan">'."\n";
    	print OFILE '<node TEXT="hosts">'."\n";
    } else {
    	open (GFILE,">$mindmap.mm") or die ("Cannot open $mindmap for writting: $!");
    	print GFILE '<map version="0.7.1">'."\n";
    	print GFILE '<node TEXT="scan">'."\n";
    	print GFILE '<node TEXT="hosts">'."\n";
    }
     
    foreach my $host (@{$nmapxml->{'host'}}) {	
    	my %hostinfo;
    	$mindfile=$mindmap."-".$host->{'address'}->[0]->{'addr'}.".mm";
    	if ($fileperhost == 1) {
    		open (OFILE,">$mindfile") or die ("Cannot open $mindmap for writting: $!");
    		print OFILE '<map version="0.7.1">'."\n";
    		print OFILE '<node TEXT="scan" LINK="'.$mindmap.'.mm">'."\n";
    		print OFILE '<node TEXT="hosts">'."\n";
     
    		print GFILE "<node TEXT=\"$host->{'address'}->[0]->{'addr'}\" LINK=\"$mindfile\">\n";
    		print GFILE "</node>\n"; # host
    	}
    	print OFILE "<node TEXT=\"$host->{'address'}->[0]->{'addr'}\">\n";
     
    	print OFILE '<node TEXT="dns">'."\n";
    	print OFILE "<node TEXT=\"$host->{'hostnames'}->[0]->{'hostname'}->[0]->{'name'}\"/>\n";
    	print OFILE "</node>\n"; # dns
     
    	print OFILE '<node TEXT="OS">'."\n";
    	if (($host->{'os'}->[0]->{'osclass'}) || ($host->{'os'}->[0]->{'osmatch'})) {
    	print OFILE "<node TEXT=\"$host->{'os'}->[0]->{'osclass'}->[0]->{'type'},$hostinfo{'name'}=$host->{'os'}->[0]->{'osmatch'}->[0]->{'name'},$hostinfo{'acc'}=$host->{'os'}->[0]->{'osmatch'}->[0]->{'accuracy'}\"/>\n";
    	}
    	print OFILE "</node>\n"; # OS
     
    #	print Dumper (@{$host->{'ports'}->[0]->{'port'}});
     
    	print OFILE '<node TEXT="ports">'."\n";
    	if (defined({$host->{'ports'}->[0]->{'port'}})) {
    	print OFILE '<node TEXT="open">'."\n";
    	if ({$host->{'ports'}->[0]->{'port'}}) {
    	foreach my $port (@{$host->{'ports'}->[0]->{'port'}}) {
    		my $fstate;
    		$fstate=$port->{'state'}->[0]->{'state'};
    		if ($fstate eq "open") {
    			print OFILE "<node TEXT=\"$port->{'protocol'}/$port->{'portid'}\">\n";
    			print OFILE "<node TEXT=\"$port->{'service'}->[0]->{'name'};$port->{'service'}->[0]->{'product'};$port->{'service'}->[0]->{'conf'}\"/>\n";
    			print OFILE "</node>\n";
    		}
    	} # foreach
    	} # not empty
    	print OFILE "</node>\n";
    	} # defined
     
    	if (defined({$host->{'ports'}->[0]->{'extraports'}})) {
    	if (({$host->{'ports'}->[0]->{'extraports'}})) {
    		print OFILE '<node TEXT="extra">'."\n";
    		foreach my $port (@{$host->{'ports'}->[0]->{'extraports'}}) {
    			print OFILE "<node TEXT=\"$port->{'state'}\">\n";
    			print OFILE "<node TEXT=\"$port->{'count'}\"/>\n";
    			print OFILE "</node>\n"; # state
    		}
    		print OFILE "</node>\n"; # extra 
    	}
    	}
     
    	print OFILE "</node>\n";  # ports node
     
    	print OFILE "</node>\n"; # host node
    	if ($fileperhost == 1) {
    		print OFILE "</node>\n"; # hosts
    		print OFILE "</node>\n"; # scan
    		print OFILE "</map>\n";
    		close OFILE;
    	}
    }
    if ($fileperhost == 0) {
    	print OFILE "</node>\n"; # hosts
    	print OFILE "</node>\n"; # scan
    	print OFILE "</map>\n";
    	close OFILE;
    } else {
    	print GFILE "</node>\n"; # hosts
    	print GFILE "</node>\n"; # scan
    	print GFILE "</map>\n";
    	close GFILE;
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    ça fait presque une dizaine d'années que je n'ai pas essayé de générer un exécutable avec Perl, j'ai oublié tous les détails (et puis ça a pu évoluer depuis).

    Mais je te conseille de lire ce tutoriel de notre ami Djibril: http://djibril.developpez.com/tutori...-sources-perl/.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Quand tu lances la version en .pl, tu mets exactement les mêmes paramètres ? (rappel de la commande dans l'historique du shell et remplacement de .pl par .exe ?) et depuis le même dossier lors de l'appel ? (dans ton script tu utilises Cwd pour déterminer le répertoire courant ... essaye plutôt de ne rien mettre, vu que par défaut, les fichiers sont pris avec un chemin relatif au répertoire courant s'ils ne commencent pas par /).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Bonsoir,

    ça fait presque une dizaine d'années que je n'ai pas essayé de générer un exécutable avec Perl, j'ai oublié tous les détails (et puis ça a pu évoluer depuis).

    Mais je te conseille de lire ce tutoriel de notre ami Djibril: http://djibril.developpez.com/tutori...-sources-perl/.
    J'ai lu son tutoriel (très bien au passage ) mais je n'ai pas trouvé de solution à mon problème ...


    Citation Envoyé par Philou67430 Voir le message
    Quand tu lances la version en .pl, tu mets exactement les mêmes paramètres ? (rappel de la commande dans l'historique du shell et remplacement de .pl par .exe ?) et depuis le même dossier lors de l'appel ? (dans ton script tu utilises Cwd pour déterminer le répertoire courant ... essaye plutôt de ne rien mettre, vu que par défaut, les fichiers sont pris avec un chemin relatif au répertoire courant s'ils ne commencent pas par /).
    Je ne passe aucun paramètre pour la version en .pl, et oui les deux sont dans le même dossier.
    J'ai essayé de ne pas mettre le chemin, mais je tombe sur la même erreur malheureusement

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je voulais dire : quand tu lances le script tu es dans le même dossier dans les deux cas ?

    Pourrais-tu faire un "dir" du dossier c:\Stage\nmap_vers_xMind\scriptFinal ?
    Pourrais-tu montrer avec quelle ligne de commande utilisant pp tu as généré ton exécutable perl ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Je voulais dire : quand tu lances le script tu es dans le même dossier dans les deux cas ?

    Pourrais-tu faire un "dir" du dossier c:\Stage\nmap_vers_xMind\scriptFinal ?
    Pourrais-tu montrer avec quelle ligne de commande utilisant pp tu as généré ton exécutable perl ?
    Oui oui je suis dans le même dossier
    Quand je lance le script .pl :
    Nom : lancerScriptPerl.PNG
Affichages : 167
Taille : 4,8 Ko

    Le résultat du "dir" :
    Nom : resultatDir.PNG
Affichages : 191
Taille : 13,6 Ko

    La commande pour générer l'exécutable :
    Nom : genererExe.PNG
Affichages : 206
Taille : 2,4 Ko

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Pourrais-tu essayer l'option --bundle de pp ? (au hasard).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Dans l'eval XMLin, pourrais-tu ajouter, avant l'appel à XMLin, la ligne suivante :
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Pourrais-tu essayer l'option --bundle de pp ? (au hasard).
    L'erreur reste la même

    Citation Envoyé par Philou67430 Voir le message
    Dans l'eval XMLin, pourrais-tu ajouter, avant l'appel à XMLin, la ligne suivante :
    Je te met le résultat de quand j'exécute le script :
    Nom : resultatQxDir.PNG
Affichages : 221
Taille : 18,9 Ko

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Le résultat que tu nous affiches est celui après le lancement du .pl.
    Peux-tu recréer ton exe à partir de ton .pl modifié comme te l'a dit Philou67430. Cela permettra de voir ce que l'exe te retourne.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Ah oui désolé, je n'avais pas compris ça

    Voilà :
    Nom : resultatScript.png
Affichages : 172
Taille : 58,8 Ko

    Et au passage, la fenêtre n’apparaît que brièvement. Comment faire pour la garder ouverte jusqu'à appuyer sur une touche (par exemple) ?

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Crée un nouveau .pl dans lequel tu mets le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/usr/bin/perl
    use Carp;
    use strict;
    use warnings;
    use Cwd;
    use File::Spec;
     
    my $repertoireCourant = getcwd;
    my $nomScan           = File::Spec->catfile($repertoireCourant, 'leScan.xml');
    my $nomMap            = File::Spec->catfile($repertoireCourant, 'mapXmind.mm');
    print "Repertoire courrant : $repertoireCourant\n";
    print "nomScan : $nomScan\n";
    print "nomMap : $nomMap\n";
     
    # Vérification de l'existence des fichiers
    if ( -f $nomScan ) {
    	print "$nomScan existe\n";
    }
    if ( -f $nomMap ) {
    	print "$nomMap existe\n";
    }
    Exécutes le .pl et donne-nous le résultat.

    Puis tu génères un exe à partir de ce .pl et tu exécute également le .exe. Pour exécuter le .exe, tu peux le faire en ligne de commande.

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Voilà le résultat :

    Nom : resultatTestCode.PNG
Affichages : 243
Taille : 16,6 Ko

    (Et merci pour l'astuce)

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Points : 145
    Points
    145
    Par défaut
    Bonjour,

    Je vais peut être dire une bêtise, mais si tu remplaçais le "slash" par des "back-slash" ?

    Question subsidiaire le système d'exploitation, l'interpréteur Python et le cmd.exe sont en 32 bits ou 64bits ?

    Pour déterminer si cmd.exe est en 32bits ou 64bits, on peut exécuter la commande suivante: echo %PROCESSOR_ARCHITECTURE%

    Salutations.

  15. #15
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Essaye maintenant ton script d'origine en modifiant la construction du nom de fichier par celle proposée par djibrill
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  16. #16
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Essaye maintenant ton script d'origine en modifiant la construction du nom de fichier par celle proposée par djibrill
    voilou !

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par aepli Voir le message
    Bonjour,

    Je vais peut être dire une bêtise, mais si tu remplaçais le "slash" par des "back-slash" ?

    Question subsidiaire le système d'exploitation, l'interpréteur Python et le cmd.exe sont en 32 bits ou 64bits ?

    Pour déterminer si cmd.exe est en 32bits ou 64bits, on peut exécuter la commande suivante: echo %PROCESSOR_ARCHITECTURE%

    Salutations.
    A quel endroit ?
    Tout est en 64bits

    Citation Envoyé par Philou67430 Voir le message
    Essaye maintenant ton script d'origine en modifiant la construction du nom de fichier par celle proposée par djibrill
    Je viens d'essayer, toujours la même erreur
    Nom : resultatModifChemin.PNG
Affichages : 238
Taille : 9,5 Ko


    J'ai mis mon code à jour dans le tout premier message, au cas où

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Je viens d'essayer avec la version "lourde" de Strawberry Perl (j'utilisais la version portable jusqu'à présent) mais le résultat est encore le même.

  19. #19
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Essaye ce .pl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    #!/usr/bin/perl
    # (C) Kost. Distributed under GPL.
    use Carp;
    use warnings;
    use strict;
    use XML::Simple;
    use Getopt::Long;
    use Cwd;
    use File::Spec;
    use Data::Dumper;
     
    my $fileperhost = 1;
     
    my $repertoireCourant = getcwd;
    my $nmapfile           = File::Spec->catfile($repertoireCourant, 'leScan.xml');
    my $mindmap            = File::Spec->catfile($repertoireCourant, 'mapXmind.mm');
    print "Repertoire courrant : $repertoireCourant\n";
    print "nmapfile : $nmapfile\n";
    print "mindmap : $mindmap\n";
     
    $fileperhost=0;
     
    print STDERR "Using $mindmap as output\n";
    print STDERR "Processing $nmapfile...\n";
     
    if ( ! -f $nmapfile ) { die "$nmapfile not exists\n"; }
    my $nmapxml = XMLin($nmapfile, ForceArray => 1, KeyAttr => ''); 
     
    my $mindfile=$mindmap;
    if ($fileperhost == 0) {
    	open OFILE,'>', $mindfile or die ("Cannot open $mindmap for writting: $!");
    	print OFILE '<map version="0.7.1">'."\n";
    	print OFILE '<node TEXT="scan">'."\n";
    	print OFILE '<node TEXT="hosts">'."\n";
    } else {
    	open GFILE, '>', "$mindmap.mm" or die ("Cannot open $mindmap for writting: $!");
    	print GFILE '<map version="0.7.1">'."\n";
    	print GFILE '<node TEXT="scan">'."\n";
    	print GFILE '<node TEXT="hosts">'."\n";
    }
     
    foreach my $host (@{$nmapxml->{'host'}}) {	
    	my %hostinfo;
    	$mindfile=$mindmap."-".$host->{'address'}->[0]->{'addr'}.".mm";
    	if ($fileperhost == 1) {
    		open OFILE,'>', $mindfile or die ("Cannot open $mindmap for writting: $!");
    		print OFILE '<map version="0.7.1">'."\n";
    		print OFILE '<node TEXT="scan" LINK="'.$mindmap.'.mm">'."\n";
    		print OFILE '<node TEXT="hosts">'."\n";
     
    		print GFILE "<node TEXT=\"$host->{'address'}->[0]->{'addr'}\" LINK=\"$mindfile\">\n";
    		print GFILE "</node>\n"; # host
    	}
    	print OFILE "<node TEXT=\"$host->{'address'}->[0]->{'addr'}\">\n";
     
    	print OFILE '<node TEXT="dns">'."\n";
    	print OFILE "<node TEXT=\"$host->{'hostnames'}->[0]->{'hostname'}->[0]->{'name'}\"/>\n";
    	print OFILE "</node>\n"; # dns
     
    	print OFILE '<node TEXT="OS">'."\n";
    	if (($host->{'os'}->[0]->{'osclass'}) || ($host->{'os'}->[0]->{'osmatch'})) {
    	print OFILE "<node TEXT=\"$host->{'os'}->[0]->{'osclass'}->[0]->{'type'},$hostinfo{'name'}=$host->{'os'}->[0]->{'osmatch'}->[0]->{'name'},$hostinfo{'acc'}=$host->{'os'}->[0]->{'osmatch'}->[0]->{'accuracy'}\"/>\n";
    	}
    	print OFILE "</node>\n"; # OS
     
    #	print Dumper (@{$host->{'ports'}->[0]->{'port'}});
     
    	print OFILE '<node TEXT="ports">'."\n";
    	if (defined({$host->{'ports'}->[0]->{'port'}})) {
    	print OFILE '<node TEXT="open">'."\n";
    	if ({$host->{'ports'}->[0]->{'port'}}) {
    	foreach my $port (@{$host->{'ports'}->[0]->{'port'}}) {
    		my $fstate;
    		$fstate=$port->{'state'}->[0]->{'state'};
    		if ($fstate eq "open") {
    			print OFILE "<node TEXT=\"$port->{'protocol'}/$port->{'portid'}\">\n";
    			print OFILE "<node TEXT=\"$port->{'service'}->[0]->{'name'};$port->{'service'}->[0]->{'product'};$port->{'service'}->[0]->{'conf'}\"/>\n";
    			print OFILE "</node>\n";
    		}
    	} # foreach
    	} # not empty
    	print OFILE "</node>\n";
    	} # defined
     
    	if (defined({$host->{'ports'}->[0]->{'extraports'}})) {
    	if (({$host->{'ports'}->[0]->{'extraports'}})) {
    		print OFILE '<node TEXT="extra">'."\n";
    		foreach my $port (@{$host->{'ports'}->[0]->{'extraports'}}) {
    			print OFILE "<node TEXT=\"$port->{'state'}\">\n";
    			print OFILE "<node TEXT=\"$port->{'count'}\"/>\n";
    			print OFILE "</node>\n"; # state
    		}
    		print OFILE "</node>\n"; # extra 
    	}
    	}
     
    	print OFILE "</node>\n";  # ports node
     
    	print OFILE "</node>\n"; # host node
    	if ($fileperhost == 1) {
    		print OFILE "</node>\n"; # hosts
    		print OFILE "</node>\n"; # scan
    		print OFILE "</map>\n";
    		close OFILE;
    	}
    }
    if ($fileperhost == 0) {
    	print OFILE "</node>\n"; # hosts
    	print OFILE "</node>\n"; # scan
    	print OFILE "</map>\n";
    	close OFILE;
    } else {
    	print GFILE "</node>\n"; # hosts
    	print GFILE "</node>\n"; # scan
    	print GFILE "</map>\n";
    	close GFILE;
    }
    Si c'est OK, converti le en exe et teste le.

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par djibril Voir le message
    Essaye ce .pl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    #!/usr/bin/perl
    # (C) Kost. Distributed under GPL.
    use Carp;
    use warnings;
    use strict;
    use XML::Simple;
    use Getopt::Long;
    use Cwd;
    use File::Spec;
    use Data::Dumper;
     
    my $fileperhost = 1;
     
    my $repertoireCourant = getcwd;
    my $nmapfile           = File::Spec->catfile($repertoireCourant, 'leScan.xml');
    my $mindmap            = File::Spec->catfile($repertoireCourant, 'mapXmind.mm');
    print "Repertoire courrant : $repertoireCourant\n";
    print "nmapfile : $nmapfile\n";
    print "mindmap : $mindmap\n";
     
    $fileperhost=0;
     
    print STDERR "Using $mindmap as output\n";
    print STDERR "Processing $nmapfile...\n";
     
    if ( ! -f $nmapfile ) { die "$nmapfile not exists\n"; }
    my $nmapxml = XMLin($nmapfile, ForceArray => 1, KeyAttr => ''); 
     
    my $mindfile=$mindmap;
    if ($fileperhost == 0) {
    	open OFILE,'>', $mindfile or die ("Cannot open $mindmap for writting: $!");
    	print OFILE '<map version="0.7.1">'."\n";
    	print OFILE '<node TEXT="scan">'."\n";
    	print OFILE '<node TEXT="hosts">'."\n";
    } else {
    	open GFILE, '>', "$mindmap.mm" or die ("Cannot open $mindmap for writting: $!");
    	print GFILE '<map version="0.7.1">'."\n";
    	print GFILE '<node TEXT="scan">'."\n";
    	print GFILE '<node TEXT="hosts">'."\n";
    }
     
    foreach my $host (@{$nmapxml->{'host'}}) {	
    	my %hostinfo;
    	$mindfile=$mindmap."-".$host->{'address'}->[0]->{'addr'}.".mm";
    	if ($fileperhost == 1) {
    		open OFILE,'>', $mindfile or die ("Cannot open $mindmap for writting: $!");
    		print OFILE '<map version="0.7.1">'."\n";
    		print OFILE '<node TEXT="scan" LINK="'.$mindmap.'.mm">'."\n";
    		print OFILE '<node TEXT="hosts">'."\n";
     
    		print GFILE "<node TEXT=\"$host->{'address'}->[0]->{'addr'}\" LINK=\"$mindfile\">\n";
    		print GFILE "</node>\n"; # host
    	}
    	print OFILE "<node TEXT=\"$host->{'address'}->[0]->{'addr'}\">\n";
     
    	print OFILE '<node TEXT="dns">'."\n";
    	print OFILE "<node TEXT=\"$host->{'hostnames'}->[0]->{'hostname'}->[0]->{'name'}\"/>\n";
    	print OFILE "</node>\n"; # dns
     
    	print OFILE '<node TEXT="OS">'."\n";
    	if (($host->{'os'}->[0]->{'osclass'}) || ($host->{'os'}->[0]->{'osmatch'})) {
    	print OFILE "<node TEXT=\"$host->{'os'}->[0]->{'osclass'}->[0]->{'type'},$hostinfo{'name'}=$host->{'os'}->[0]->{'osmatch'}->[0]->{'name'},$hostinfo{'acc'}=$host->{'os'}->[0]->{'osmatch'}->[0]->{'accuracy'}\"/>\n";
    	}
    	print OFILE "</node>\n"; # OS
     
    #	print Dumper (@{$host->{'ports'}->[0]->{'port'}});
     
    	print OFILE '<node TEXT="ports">'."\n";
    	if (defined({$host->{'ports'}->[0]->{'port'}})) {
    	print OFILE '<node TEXT="open">'."\n";
    	if ({$host->{'ports'}->[0]->{'port'}}) {
    	foreach my $port (@{$host->{'ports'}->[0]->{'port'}}) {
    		my $fstate;
    		$fstate=$port->{'state'}->[0]->{'state'};
    		if ($fstate eq "open") {
    			print OFILE "<node TEXT=\"$port->{'protocol'}/$port->{'portid'}\">\n";
    			print OFILE "<node TEXT=\"$port->{'service'}->[0]->{'name'};$port->{'service'}->[0]->{'product'};$port->{'service'}->[0]->{'conf'}\"/>\n";
    			print OFILE "</node>\n";
    		}
    	} # foreach
    	} # not empty
    	print OFILE "</node>\n";
    	} # defined
     
    	if (defined({$host->{'ports'}->[0]->{'extraports'}})) {
    	if (({$host->{'ports'}->[0]->{'extraports'}})) {
    		print OFILE '<node TEXT="extra">'."\n";
    		foreach my $port (@{$host->{'ports'}->[0]->{'extraports'}}) {
    			print OFILE "<node TEXT=\"$port->{'state'}\">\n";
    			print OFILE "<node TEXT=\"$port->{'count'}\"/>\n";
    			print OFILE "</node>\n"; # state
    		}
    		print OFILE "</node>\n"; # extra 
    	}
    	}
     
    	print OFILE "</node>\n";  # ports node
     
    	print OFILE "</node>\n"; # host node
    	if ($fileperhost == 1) {
    		print OFILE "</node>\n"; # hosts
    		print OFILE "</node>\n"; # scan
    		print OFILE "</map>\n";
    		close OFILE;
    	}
    }
    if ($fileperhost == 0) {
    	print OFILE "</node>\n"; # hosts
    	print OFILE "</node>\n"; # scan
    	print OFILE "</map>\n";
    	close OFILE;
    } else {
    	print GFILE "</node>\n"; # hosts
    	print GFILE "</node>\n"; # scan
    	print GFILE "</map>\n";
    	close GFILE;
    }
    Si c'est OK, converti le en exe et teste le.

    Le script exécuté avec Perl fonctionne, mais quand je le converti en exe voilà l'erreur qu'il me retour :
    Nom : errorDjibril1.PNG
Affichages : 244
Taille : 21,6 Ko

    J'ai pourtant réessayé après avoir installé le module (cpan XML::LibXML:SAX) et la même erreur revient.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Script qui fonctionne sur chrome mais pas firefox
    Par crozet.magenta dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/01/2013, 12h14
  2. Script qui fonctionne en local, mais pas en ligne
    Par student_php dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/11/2010, 10h22
  3. [Wamp] Requete fonctionne sous phpmyadmin mais pas en script php
    Par ben.IT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 04/01/2010, 16h16
  4. Script qui fonctionne sous FireFox mais pas sous IE
    Par Sebastien14 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/01/2009, 10h32
  5. Réponses: 3
    Dernier message: 07/06/2007, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo