Erreur lancement hostapd (erreur dans les 2 premières ligne)

Résolu/Fermé
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013 - 19 juin 2013 à 17:02
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013 - 20 juin 2013 à 11:24
en modifiant un fichier de configuration utilisant Config::Simple,sa genère automatiquement 2 lignes au debut du fichier après la configuration,les voila au dessous:
; Config::Simple 4.59
; Wed Jun 19 15:17:00 2013
elles sont genéré après que j ai valider les changement avec $cfg->save();
En faite je configure: /etc/hostapd-1.0/hostapd/hostapd.conf et le probleme c'est que quand je lance hostapd après configuration avec la commande:
hostapd /etc/hostapd-1.0/hostapd/hostapd.conf
j ai ce message d'erreur:
Line 1: invalid line '; Config::Simple 4.59'
Line 2: invalid line '; Wed Jun 19 15:17:00 2013'
2 errors found in configuration file '/etc/hostapd-1.0/hostapd/hostapd.conf'!!

Alors est-il possible de generer un fichier de configuration sans avoir ces 2 lignes causants l'erreur?? merci pour l aide :)))))
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 20/06/2013 à 11:11
Salut helmii,

1.

Alors, je comprends :

- que tu utilises un script Perl faisant usage du module Perl Config::Simple pour modifier un fichier de configuration du programme "hostapd" (qui, quant à lui est un démon programmé en C)

- que lorsque tu utilises ce module Perl à cette fin, des commentaires sont insérés, précédés d'un ; ce que "hostapd" n'apprécie pas

2.

Selon la page CPAN de la documentation de Config::Simple, ce module essaye de deviner la syntaxe du fichier de configuration. Tu peux tester pour savoir quel est le format qu'il détecte comme indiqué là :

https://metacpan.org/pod/release/SHERZODR/Config-Simple-4.59/Simple.pm#READING_THE_CONFIGURATION_FILE

open(FH, "/etc/hostapd-1.0/hostapd/hostapd.conf");
printf("This file uses '%s' syntax\n", $cfg->guess_syntax(\*FH));

Cela devrait indiquer que le format détecté est "ini" (ou "simple-ini", qui n'est qu'une déclinaison du même format). Il semble que le format des commentaires dans "hostapd" soit des lignes commençant par un #, selon l'exemple de fichier .conf fournit avec les sources de "hostapd", et que ";" ne lui plaise donc pas selon ton expérience.

Le problème est que le format "ini" ou "simple-ini" est le format correct Config::Simple à utiliser dans la mesure où le fichier .conf à gérer contient des valeurs affectées par des "=" et que l'ajout des commentaires problématiques avec un ";" en codé en dur pour le format "ini" et non paramétrable.

3.

Alors, si tu veux conserver l'usage de ce module, tu peux éventuellement le patcher.

Dans le source de Config::Simple v4.59, à partir de la ligne 598, on trouve :

# generates a writable string
sub as_string {
    my $self = shift;

    my $syntax = $self->{_SYNTAX} or die "'_SYNTAX' is not defined";
    my $sub_syntax = $self->{_SUB_SYNTAX} || '';
    my $currtime = localtime;
    my $STRING = undef;
    if ( $syntax eq 'ini' ) {
        $STRING .= "; Config::Simple $VERSION\n";
        $STRING .= "; $currtime\n\n";
        while ( my ($block_name, $key_values) = each %{$self->{_DATA}} ) {
            unless ( $sub_syntax eq 'simple-ini' ) {
                $STRING .= sprintf("[%s]\n", $block_name);
            }
            while ( my ($key, $value) = each %{$key_values} ) {
                my $values = join (WRITE_DELIM, map { quote_values($_) } @$value);
                $STRING .= sprintf("%s=%s\n", $key, $values );
            }
            $STRING .= "\n";
        }

Remplace le ";" contenu dans la chaîne par un "#", qui est officiellement supporté par Config::Simple comme marque de commentaire aussi dans le format "ini".

Tape "perldoc perllocal" pour trouver ton module et l'endroit où se trouve le fichier "Simple.pm" à modifier (fait une copie avant de le modifier, just au cas où).

C'est un "hack", mais assez anodin et qui ne devrait pas vraiment avoir d'effets de bord, le module indiquant lui même qu'il gère (à la lecture en fait) les deux types de caractères comme signifiant des commentaires (sauf qu'à l'écriture il choisit d'écrire ";").

Cela serait mieux de créer ton propre module, et de signaler le problème au concepteur du module pour qu'il le prenne en compte dans une future version (par exemple en donnant la possibilité de paramétrer le caractère utilisé pour les commentaires dans le format "ini" ou "simple-ini", voire en donnant la possibilité de ne pas inclure tout ou partie de ces commentaires, ou de les adapter).


Dal
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
20 juin 2013 à 11:24
c' est très clair!!merci infiniment :))))
0