Je signale tout de suite que c'est la première fois que j'essaie de comprendre un script et de le mettre en place donc je suis un gros zéro dans ce domaine !!
Mais certaines choses m'interpelle :
1) Il n'y a pas d'apostrophe fermante sur la ligne DB_PASS
2) Il n'y a pas d'apostrophe ouvrante à la ligne REPORT_ORG
Est ce normal ou une cause possible de plantage de ce script ?
quand un script génère des erreurs, il est bon de nous les afficher.
sans causer d'erreurs ou d'échecs, les accolades, ici, ne sont pas utiles. elles ne le sont que dans le cas de concaténations de variables précédents des caractères non spéciaux pour le shell.
et, des guillemets sont toujours les bienvenus autour des développements de variables. TOUJOURS.
cat /dev/null est inutile, une simple redirection (sans commande >fichier) suffit pour le purger. on ne sait d'ailleurs pas à quoi sert cette ligne : le fichier est automatiquement générer par opendmarc ? la sortie (d'une) des commandes est ajouté à ce fichier ? ce qui justifierait qu'il soit purgé avant ...
seules les variables d'environnement doivent être tout en majuscules, les variables créées/définies par un utilisateur, elles, doivent être tout en minuscules ou panachées.
- Edité par dantonq 20 février 2018 à 21:31:05
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Dmarc sert à limiter le spam qui circule sur les serveur de mail tel que Postfix.
Dmarc est un logiciel de contrôle et d'authentification des enregistrements SPF et Dkim (enregistrement TXT dans les DNS). Après le contrôle, dmarc applique la strategie définie par le serveur émetteur dans son enregistrement dmarc (qui est aussi un enregistrement TXT) pour accepter ou rejeter le mail. Dés lors, je suppose qu'il cré le fichier opendmarc.dat pour noter ses infos.
Le script doit récupérer ces infos une fois par jour, les inscrire dans une BDD, créer et envoyer un rapport à l'administrateur Dmarc du serveur émetteur. Une tache cron doit donc être rajouter dans le fichier /etc/crontab.
Je me suis déjà aperçu d'une erreur dans le fichier de configuration proposé par le tuto que j'ai suivi mais ce n'était qu'un chemin vers un fichier qui n'était pas bon.
J'ai rajouté les deux apostrophes manquantes et maintenant, j'ai quelque chose de totalement différent en sortie bien qu'il y a manifestement des erreurs mais j'en suis peut-être la cause. Dans le tuto, pour tester que le script fonctionne, il faut faire :
su -c "/etc/opendmarc/report-script" -s /bin/bash opendmarc
Cela me demande un MdP mais aucun de mes MdP ne marche et j'ai un echec d'authentification.
Pour essayer de palier à ce problème, j'ai lancer le script en tant que root
opendmarc-import: started at Tue Feb 20 23:05:29 2018
opendmarc-import: connected to database
opendmarc-import: updating at line 19
opendmarc-import: failed to retrieve table ID: Table 'opendmarc.requests' doesn't exist
opendmarc-import: terminating at Tue Feb 20 23:05:29 2018
opendmarc-reports: started at Tue Feb 20 23:05:29 2018
opendmarc-reports: failed to collect domain names: Table 'opendmarc.requests' doesn't exist
opendmarc-expire: started at Tue Feb 20 23:05:29 2018
opendmarc-expire: connected to database
opendmarc-expire: expiring messages older than 180 day(s)
opendmarc-expire: no rows deleted
Use of uninitialized value in concatenation (.) or string at /usr/sbin/opendmarc-expire line 291.
opendmarc-expire: TRUNCATE failed: root@monserveur:/home/moi#
C'est déjà mieux que d'avoir en réponse le fichier de Man !!!
dans la commande, su demande le mot de passe système de l'utilisateur opendmarc.
C'est ce que je pensais mais ce n'est pas un utilisateur système, juste un utilisateur MySQL
essaye de taper la commande en tant que root...
Sur le résultat au-dessus, j'étais en mode root après avoir fait sudo su ...
Lorsque j'avais lancer le script pour créer les tables dans la BDD, j'avais pas fait attention qu'une des tables comportait une erreur de synthaxe d'où l'erreur
opendmarc-import: failed to retrieve table ID: Table 'opendmarc.requests' doesn't exist
Le pire, c'est que ce script est fourni dans la doc de OpenDmarc !!
Mais ça a l'air de fonctionner dans l'ensemble
Merci de ton aide, je vais faire des test avant de mettre en résolu au cas ou j'ai encore besoin d'aide
La doc n'est pas sur internet, elle est installé dans /usr/share/doc/opendmarc/schema.mysql quand on installe opendmarc.
Copie de la table qui pose problème :
-- A table for logging reporting requests
CREATE TABLE IF NOT EXISTS requests (
id INT NOT NULL AUTO_INCREMENT,
domain INT NOT NULL,
repuri VARCHAR(255) NOT NULL,
adkim TINYINT NOT NULL,
aspf TINYINT NOT NULL,
policy TINYINT NOT NULL,
spolicy TINYINT NOT NULL,
pct TINYINT NOT NULL,
locked TINYINT NOT NULL,
firstseen TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
lastsent TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY(id),
KEY(lastsent),
UNIQUE KEY(domain)
);
A la ligne "lastsent", ça plante une erreur à cause la valeur de DEFAULT.
j'ai modifié la ligne comme suit :
lastsent DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
mais maintenant, quand je lance le script bash, j'ai une autre erreur
root@monserveur:/home/moi# "/etc/opendmarc/report_script" -s /bin/bash
opendmarc-import: started at Wed Feb 21 19:03:29 2018
opendmarc-import: connected to database
opendmarc-import: updating at line 20
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 39
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 57
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: terminating at Wed Feb 21 19:03:29 2018
opendmarc-reports: started at Wed Feb 21 19:03:29 2018
opendmarc-reports: selected 0 domain(s)
opendmarc-reports: terminating at Wed Feb 21 19:03:29 2018
et si je le relance une seconde fois, il s’exécute sans erreur mais mon fichier opendmarc.dat change de proprietaire et de groupe ( root:root ) et du coup le serveur rejette les mails qui arrivent après car :
est-ce que tu as essayé la commande su -c ... opendmarc en tant que root ? car opendmarc est un utilisateur système, mais n'a pas de mot de passe (root permet de s'en passer en utilisant su), et a nologin en tant que shell de connexion.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
root@monserveur:/home/moi# su -c "/etc/opendmarc/report-script" -s /bin/bash opendmarc
bash: /etc/opendmarc/report-script: Aucun fichier ou dossier de ce type
Oupss ! En effet, belle faute de frappe qui change beaucoup ...
Bon, j'ai laissé le script s’exécuter à l'heure prévu dans crontab mais j'ai juste eu droit à recevoir un mail d'erreur de root.
opendmarc-import: started at Thu Feb 22 02:31:02 2018
opendmarc-import: connected to database
opendmarc-import: updating at line 20
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 39
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 58
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 77
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 96
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: updating at line 114
opendmarc-import: failed to create table ID: Field 'adkim' doesn't have a default value
opendmarc-import: terminating at Thu Feb 22 02:31:02 2018
opendmarc-reports: started at Thu Feb 22 02:31:02 2018
opendmarc-reports: selected 0 domain(s)
opendmarc-reports: terminating at Thu Feb 22 02:31:02 2018
opendmarc-expire: started at Thu Feb 22 02:31:02 2018
opendmarc-expire: connected to database
opendmarc-expire: expiring messages older than 180 day(s)
Use of uninitialized value in concatenation (.) or string at /usr/sbin/opendmarc-expire line 291.
opendmarc-expire: TRUNCATE failed: opendmarc-expire: no rows deleted
mise à jour 18 heure après
J'ai mis des valeurs par défaut sur pratiquement chaque colonne, des 0 pour les "int" et des xxx pour les "varchar".
J'ai effacé les deux dernières lignes du script report_script, refais un opendmarc.dat avec des valeurs valide provenant d'un précédent enregistrement, supprimé toutes valeur dans la BDD, modifié l'heure du crontab et après éxécution, j'ai regardé. Toutes les tables étaient remplies, seul 5 colonnes n'ont pas été modifié et ont la valeur par défaut sur 39 colonnes au total.
Le rapport cron qui m'a été envoyé par mon serveur est plus positif maintenant :
opendmarc-import: started at Thu Feb 22 20:04:01 2018
opendmarc-import: connected to database
opendmarc-import: updating at line 20
opendmarc-import: updating at line 39
opendmarc-import: updating at line 57
opendmarc-import: terminating at Thu Feb 22 20:04:01 2018
Si ça accorde, le problème ne venait pas du script report_script mais uniquement de la BDD, mais je doute pouvoir tester ce soir, beaucoup de copains et copines arrivent pour boire l'apéro, donc après, c'est mort pour moi !!! lol
Mais je suis content, ça avance enfin ...
Merci Dantonq de m'avoir soutenu et de ton aide dans mon projet. Sans ce soutient, je pense que j'aurais abandonné ...
- Edité par florianboy01 22 février 2018 à 20:47:39
Petit problème de script bash
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
ce n'est pas
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique