1 votes

Pourquoi mon programme launchctl n'accepte-t-il pas les connexions externes ?

J'essaie de mettre en place le Check_MK avec launchd sur un serveur Mac, pour renvoyer des données sur le port 6556 lorsqu'une autre machine s'y connecte.

(L'agent lui-même est essentiellement juste un shell script qui sort diverses informations sur l'état de la machine dans un format vaguement lisible par la machine).

Je suis capable de m'y connecter depuis la machine elle-même, par exemple avec curl localhost:6556 mais si j'essaie de me connecter en externe, il s'arrête.

J'ai un fichier .plist configuré comme celui qui se trouve à l'adresse suivante de.mathias-kettner.check_mk.plist stocké dans /Library/LaunchDaemon :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>EnvironmentVariables</key>
        <dict>
                <key>HOME</key>
                <string>/var/root</string>
                <key>PATH</key>
                <string>/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin</string>
        </dict>
        <key>Label</key>
        <string>de.mathias-kettner.check_mk</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/bin/check_mk_agent</string>
        </array>
        <key>Sockets</key>
        <dict>
                <key>Listeners</key>
                <dict>
                        <key>SockServiceName</key>
                        <string>6556</string>
                </dict>
        </dict>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
        <key>AbandonProcessGroup</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/var/log/check_mk.err</string>
        <key>WorkingDirectory</key>
        <string>/var/root</string>
</dict>
</plist>

(La seule différence est que le check_mk_agent est /usr/local/bin au lieu de /usr/bin, car je n'ai pas pu y créer le fichier).

Le fichier check_mk_agent lui-même se trouve à l'adresse suivante : check_mk_agent.macosx

Ce qui est étrange, c'est que si je dirige le fichier .plist vers quelque chose comme /bin/date alors cela fonctionne aussi à l'extérieur.

La seule chose que je puisse conclure est que la tâche s'exécute avec des autorisations différentes selon l'IP ou l'interface d'où provient la connexion, mais je ne sais pas comment modifier les autorisations avec lesquelles elle tente de s'exécuter.

0 votes

Je n'ai aucun problème pour curler une machine distante et obtenir tous les détails avec vérifier_mk_agent y courir. Le plist est Root:wheel. Le fichier vérifier_mk_agent est également Root:wheel et chmod +x. Vérifier votre fichier d'erreur à /var/log/check_mk.err ! Supplémentaire : avez-vous modifié export MK_LIBDIR y export MK_CONFDIR sur check_mk_agent.macosx et avez-vous créé les fichiers et dossiers appropriés dans le système ?

0 votes

Bonjour, merci pour les suggestions. J'ai créé les dossiers nécessaires, et vérifié les permissions. Le fichier d'erreur est vide. Mais il continue à n'autoriser que les connexions à localhost.

1voto

Oliver Points 11

Pourquoi n'utilisez-vous pas ssh pour demander les données à l'agent sur le mac ? https://mathias-kettner.de/checkmk_datasource_programs.html Vous n'avez pas besoin du launchd.

les regards, Oliver

0 votes

Merci, c'est potentiellement un bon conseil. Je n'étais pas la personne qui l'a mis en place à l'origine, mais je pourrais envisager de passer à cette méthode. Je suis cependant toujours intrigué par le problème initial.

0 votes

Note : au moment de la rédaction, l'URL ci-dessus semble avoir disparu, mais mathias-kettner.com/checkmk_datasource_programmes.html semble fonctionner. Peut-être sont-ils en train de migrer vers un nouveau serveur.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X