Page 1 sur 1

[R]télécharger les log sans passer par le panel

Posté : 29 janv. 2018 23:10
par kagescan
Bonjour, j'aimerai faire des statistiques à propos de mon site et je voudrais savoir si il existe un moyen de pouvoir télécharger des logs ou les sauvegarder chaque semaine avec du PHP ou un script shell?
Je voudrais en fait avoir les stats de tout un mois voire deux mais je ne peux pas toujours téléchargé les logs donc récupérer simplement avec un script shell ou PHP pourrait être pratique
Même si ce que je demande est probablement impossible je tente quand même ! Merci !!

Re: télécharger les log sans passer par le panel

Posté : 30 janv. 2018 19:53
par Simon Le Guével
Bonsoir,

Ça devrait pouvoir se faire, je vais vous faire ça !

Simon

Re: télécharger les log sans passer par le panel

Posté : 14 avr. 2018 15:11
par ernesto
Bonjour.
Voila un script php qui permet de récupérer les log sans passer par le panel.
Il suffit de renseigner votre identifiant et mot de passe en début de script.
Le script va récupérer les log de la semaine: access.log et les logs de la semaine dernière; access_hold.log.
le script est également dispo ici: https://github.com/steneor/get-log-legtux
Cdlt

Code : Tout sélectionner

<?php
// connexion à legtux via la page de login
$login = "identifiant";     // ici votre identifiant
$password = "motdepasse";    // ici votre mot de passe
$url = "https://www.legtux.org/";
$cookie = "cookie.txt";
$timeout = 60;
$nom_local_zip = "log.zip";
$postdata = "login=" . $login . "&password=" . $password ;

$ch = curl_init();
curl_setopt ( $ch, CURLOPT_URL, $url . "index.php?page=connec" );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" );
curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 0 );
curl_setopt ( $ch, CURLOPT_HEADER, 0);
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt ( $ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ( $ch, CURLOPT_REFERER, $url . "index.php" );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postdata );
curl_setopt ( $ch, CURLOPT_POST, 1 );

$result = curl_exec ( $ch );
$result = curl_exec ( $ch );

curl_setopt ( $ch, CURLOPT_POST, 0 );

// fin de connexion, on ne ferme pas la curl en cours pour l'utiliser aprés
// récupération du fichier de log_user_YYYMMDD_hhmm.zip

//////////////////////////log de cette semaine: access.log ///////////////////////////////
curl_setopt ( $ch, CURLOPT_URL, $url . "member/apache_log.php" );
if ( $nom_local_zip ) {
    $fp = fopen( $nom_local_zip, 'w+b' ) or die( "Le fichier '$nom_local_zip' n'a pu etre ouvert en ecriture" );
    curl_setopt( $ch, CURLOPT_FILE, $fp );
} else {
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
}

$ret = curl_exec( $ch );

if ( $nom_local_zip ) {
    fclose( $fp );
}
if ( $ret === false ) {
    die( "Une erreur a été rencontrée : " . curl_error() );
}

// décompression de l'archive zip
$zip = new ZipArchive;
$zip->open($nom_local_zip);
$zip->extractTo('./');
$zip->close();

//////////////////////////log de la semaine dernière: access ///////////////////////////////
curl_setopt ( $ch, CURLOPT_URL, $url . "member/apache_log_old.php" );
if ( $nom_local_zip ) {
    $fp = fopen( $nom_local_zip, 'w+b' ) or die( "Le fichier '$nom_local_zip' n'a pu etre ouvert en ecriture" );
    curl_setopt( $ch, CURLOPT_FILE, $fp );
} else {
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
}
$ret = curl_exec( $ch );

if ( $nom_local_zip ) {
    fclose( $fp );
}
if ( $ret === false ) {
    die( "Une erreur a été rencontrée : " . curl_error() );
}

// décompression de l'archive zip
$zip = new ZipArchive;
$zip->open($nom_local_zip);
$zip->extractTo('./');
$zip->close();

curl_close( $ch );   //on ferme la curl

//nettoyage: efface les fichiers intermédiaires
unlink($cookie);
unlink($nom_local_zip);

//affiche la liste des fichiers dans le repertoire
    $rep = opendir( "./");
    chdir( "./");
    while ( $file = readdir( $rep ) ) {
        if ( $file != '..' && $file != '.' && $file != '' ) {
            if ( ( $file ) ) {
                echo "<a href=$file target=_blank>$file</a><br>";
            }
        }
    }
    closedir( $rep );

?>

Re: télécharger les log sans passer par le panel

Posté : 15 avr. 2018 12:01
par kagescan
Salut merci braucoup pour ta réponse !
Au final, je n'en ai plus besoin (j'ai préféré m'en passer et respecter la vie provée de mes visiteurs) mais merci quand même pour avoir passé du temps pour l'écrire !
Sujet [R]