Server Management

Gestion des quotas utilisateurs PHP et Linux

Spread the love

La gestion efficace de l’espace disque des utilisateurs est essentielle au maintien d’un environnement serveur sain. Cet article explore plusieurs méthodes basées sur PHP pour récupérer les informations de quota utilisateur sur un système Linux, répondant à divers scénarios et préférences. Nous aborderons des techniques allant de l’utilisation de commandes Linux standard à l’utilisation de solutions de bases de données et de fonctions IMAP, en mettant l’accent sur une implémentation sécurisée et robuste.

Table des matières

Utilisation de repquota pour les rapports de quota système

La commande repquota -a fournit un rapport complet des quotas utilisateurs sur votre système de fichiers. PHP peut exécuter cette commande à l’aide de shell_exec() et analyser la sortie résultante. Note de sécurité critique : Toujours désinfecter les entrées utilisateur avant de les intégrer dans les commandes shell pour éviter les failles d’injection de commandes.


&1'); // 2>&1 redirige stderr vers stdout pour une meilleure gestion des erreurs
if ($output === null || strpos($output, 'repquota: ') === 0) { //Vérification des erreurs d'exécution de repquota
    error_log("Erreur lors de l'exécution de repquota : " . $output); 
    echo "Erreur lors de la récupération des informations de quota.";
    exit(1);
}

$lines = explode("n", trim($output));
$quotas = [];
foreach ($lines as $line) {
    if (strpos($line, "/") !== false) { //Ignorer les lignes d'en-tête
        continue;
    }
    $parts = preg_split('/s+/', $line); //Utiliser preg_split pour une gestion robuste des espaces
    if(count($parts) > 5){ //S'assurer que suffisamment de données existent
        $username = $parts[0];
        $used = $parts[1];
        $limit = $parts[2];
        $quotas[$username] = ['used' => $used, 'limit' => $limit];
    }
}


print_r($quotas); //Afficher les résultats
?>

Estimation de l’utilisation avec du

La commande du -sh fournit un résumé de l’utilisation du disque pour un répertoire donné. Bien qu’il ne s’agisse pas d’une récupération directe de quota, elle est utile pour estimer l’espace disque consommé par le répertoire personnel d’un utilisateur. N’oubliez pas de gérer les erreurs potentielles, telles que l’inexistence du répertoire.


&1");
    if ($output === null || strpos($output, "du: cannot access") === 0) {
        return false; //Gérer les erreurs avec élégance
    }
    list($size, $path) = explode("t", trim($output));
    return $size;
}

$username = "user1";
$homeDir = "/home/{$username}";
$size = getDirectorySize($homeDir);
if ($size !== false) {
    echo "Taille du répertoire personnel de {$username} : {$size}n";
} else {
    echo "Erreur lors de la récupération de la taille du répertoire pour {$username}n";
}
?>

Récupération des quotas depuis une base de données MySQL

Si vous maintenez une base de données MySQL pour suivre les quotas utilisateurs, l’extension MySQLi de PHP offre un moyen pratique de récupérer ces informations. N’oubliez pas d’utiliser des requêtes paramétrées pour éviter l’injection SQL.


connect_errno) {
    die("Échec de la connexion : " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("SELECT quota FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$username = "user1";
$stmt->execute();
$stmt->bind_result($quota);
$stmt->fetch();
$stmt->close();
$mysqli->close();

echo "Quota de {$username} : " . $quota . "n";
?>

Accès aux quotas de boîte aux lettres IMAP

La fonction imap_get_quota() est spécialement conçue pour récupérer les quotas de boîte aux lettres pour les serveurs IMAP. Ceci est pertinent si vous gérez des comptes de messagerie et leurs limites de stockage.


usage . " octets sur " . $quota->limit . " octetsn";
    imap_close($imapStream);
} else {
    echo "Échec de la connexion au serveur IMAP : " . imap_last_error() . "n";
}
?>

Planification des vérifications de quota avec Cron

Pour la surveillance automatisée des quotas, utilisez les tâches cron. Un script shell peut exécuter repquota, et un script PHP peut traiter la sortie, générer des rapports ou des alertes. Cela permet des vérifications régulières sans exécution constante de processus PHP.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *