Reviewed-on: #2
pmoutils
Utilitaires système pour la gestion des adresses IP réseau et des processus.
Fonctionnalités
- Gestion des adresses IP : Détection et listing des interfaces réseau
- Surveillance des processus : Identification des processus utilisant un port spécifique
- Informations système : Détection de l'OS et de sa version
Installation
Via Cargo (recommandé)
Ajoutez cette dépendance à votre Cargo.toml :
[dependencies]
pmoutils = "0.1"
Depuis la source
git clone https://github.com/coissac/pmo.git
cd pmo/pmoutils
cargo build --release
Documentation
La documentation complète est disponible sur docs.rs.
Gestion des adresses IP
use pmoutils::guess_local_ip;
// Devine l'adresse IP locale utilisée pour les connexions sortantes
let ip = guess_local_ip();
println!("Adresse IP locale: {}", ip);
// Liste toutes les adresses IP non-loopback
use pmoutils::ip_utils::list_all_ips;
let ips = list_all_ips();
for (interface, addresses) in ips {
println!("Interface {}: {:?}", interface, addresses);
}
Surveillance des processus
use pmoutils::{find_process_using_port, TransportProtocol};
// Trouve le processus qui écoute sur un port spécifique
let info = find_process_using_port(8080, TransportProtocol::Tcp);
if let Some(process_info) = info {
println!("PID: {}", process_info.pid);
println!("Nom: {}", process_info.process_name);
println!("Propriétaire: {}", process_info.owner);
}
Informations système
use pmoutils::get_os_string;
// Obtient le nom et la version du système d'exploitation
let os_info = get_os_string();
println!("Système: {}", os_info); // Ex: "Linux/6.5.0" ou "macOS/15.1"
API
Modules
-
ip_utils: Utilitaires pour la gestion des adresses IPguess_local_ip()→ Devine l'IP localelist_all_ips()→ Liste toutes les IPs non-loopback
-
process: Utilitaires pour la gestion des processusfind_process_using_port()→ Trouve un processus par portProcessPortInfo→ Structure contenant les informations du processusTransportProtocol→ Énumération TCP/UDP
Fonctions publiques
get_os_string()→ Retourne une chaîne décrivant l'OS et sa version
Exemples complets
Voir la documentation API pour plus d'exemples.
Platformes supportées
- macOS (x86_64, ARM64)
- Linux (x86_64, ARM64)
- Windows (limité - certaines fonctionnalités peuvent ne pas être disponibles)
Développement
Prérequis
- Rust 1.70+ (edition 2021)
- Cargo (inclus dans Rust)
Compilation
cargo build --release
Tests
cargo test
Documentation locale
cargo doc --no-deps
Ouvrez target/doc/pmoutils/index.html dans votre navigateur.
Dépendances
get_if_addrs: Detection des adresses d'interfaces réseauos_info: Détection multiplateforme de l'OSnetstat2: Mapping des sockets et processussysinfo: Informations système et processususers: Résolution des utilisateurs par UID
License
Ce logiciel est régi par la licence CeCILL version 2.1.
Ce logiciel est un programme informatique servant à la gestion des adresses IP réseau et des processus système. Il est distribué sous la licence CeCILL telle que publiée par le CEA, le CNRS et l'INRIA.
Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous les termes de la licence CeCILL telle que publiée par CEA, CNRS et INRIA à l'adresse suivante : https://cecill.info
See the LICENSE file for the full license text.