feat: amélioration scripts bash, scan réseau, fix cron, README
- system_prompt: section scripts bash (commandes interdites, mosquitto_pub, bonnes pratiques) - script.py: nettoyage guillemets échappés à la sauvegarde - network.py: nouvelle action scan (nmap/arp-scan/arp fallback), auto-détection subnet - cron.py: _get_current_crontab() évite d'écrire "(aucune sortie)" dans le crontab - README créé Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# agent_hal
|
||||
|
||||
Agent de contrôle système complet et d'édition de code/fichiers. Remplace et étend `agent_debian` avec des capacités supplémentaires : édition avancée de fichiers, git, SSH distant, fetch web, todo list. Dispose également d'une surveillance proactive disque/RAM.
|
||||
|
||||
## Rôle
|
||||
|
||||
HAL gère **ce serveur** (et les machines distantes via SSH) pour toute tâche système, devops ou édition de code. Pour l'automatisation multi-serveurs, utiliser `agent_ansible`. Pour déployer de nouveaux agents, utiliser `agent_deploy`.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
cd /opt/agent_hal
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
systemctl enable --now agent_hal
|
||||
```
|
||||
|
||||
## Skills disponibles
|
||||
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| `sysinfo` | CPU, RAM, disque, uptime |
|
||||
| `apt` | Gestion des paquets (install, remove, update, upgrade, search) |
|
||||
| `systemd` | Contrôle des services (start, stop, restart, status, enable) |
|
||||
| `cron` | Gestion des tâches cron (list, add, remove, clear) |
|
||||
| `process` | Liste, kill, surveillance des processus |
|
||||
| `network` | Interfaces, scan réseau, ping, traceroute, DNS, ports, firewall |
|
||||
| `user` | Gestion des utilisateurs et groupes |
|
||||
| `container` | Gestion Docker/LXC (ps, start, stop, logs, exec, stats) |
|
||||
| `journal` | Consultation des logs systemd (journalctl) |
|
||||
| `filesystem` | Lecture, écriture, édition, recherche de fichiers (`read`, `write`, `edit`, `multiedit`) |
|
||||
| `git` | Opérations git (status, log, diff, add, commit, push, pull, clone, branch) |
|
||||
| `ssh` | Exécution de commandes sur une machine distante + transfert de fichiers (`COPY`) |
|
||||
| `shell` | Commandes bash directes (fallback) |
|
||||
| `script` | Bibliothèque de scripts bash (save/list/show/edit/exec/run/delete) |
|
||||
| `web_fetch` | Récupérer le contenu d'une URL HTTP/HTTPS |
|
||||
| `todo` | Liste de tâches en mémoire (add, list, done, delete, clear) |
|
||||
| `agents_status` | Statut des agents du système |
|
||||
| `mqtt_send` | Publication sur un topic MQTT |
|
||||
| `mqtt_subscribe` | Souscription dynamique à un topic MQTT |
|
||||
| `muc_send` | Message dans le groupe XMPP |
|
||||
|
||||
## Scan réseau
|
||||
|
||||
```
|
||||
"Liste les machines connectées au réseau"
|
||||
→ SKILL:network ARGS:scan 192.168.7.0/24
|
||||
```
|
||||
|
||||
Utilise nmap (ping scan) en priorité, sinon arp-scan, sinon table ARP. La détection du subnet est automatique si non précisé.
|
||||
|
||||
## Bibliothèque de scripts
|
||||
|
||||
Les scripts bash sont stockés dans `/opt/agent_hal/scripts/`. Toujours créés via `SKILL:script ARGS:save`, jamais via `filesystem write`.
|
||||
|
||||
Variables disponibles dans les scripts : `$MQTT_BROKER`, `$MQTT_REPLY_TOPIC`, `$AGENT_ID`
|
||||
|
||||
```bash
|
||||
# Exemple d'envoi de résultat depuis un script
|
||||
mosquitto_pub -h "$MQTT_BROKER" -t "$MQTT_REPLY_TOPIC" -m "résultat"
|
||||
```
|
||||
|
||||
## Confirmations requises
|
||||
|
||||
Les actions suivantes demandent confirmation avant exécution (requêtes XMPP directes uniquement) :
|
||||
|
||||
- **cron** : `add`, `remove`, `clear`
|
||||
- **systemd** : `start`, `stop`, `restart`, `enable`, `disable`, `mask`, `unmask`, `daemon-reload`
|
||||
|
||||
## Surveillance proactive
|
||||
|
||||
Toutes les 5 minutes :
|
||||
- **Disque** : alerte si un volume dépasse 85%
|
||||
- **RAM** : alerte si la mémoire utilisée dépasse 90%
|
||||
|
||||
## Configuration
|
||||
|
||||
`config/config.json` :
|
||||
```json
|
||||
{
|
||||
"agent_id": "hal",
|
||||
"xmpp": {
|
||||
"jid": "hal@xmpp.ovh",
|
||||
"password": "...",
|
||||
"admin_jid": "sylvain@xmpp.ovh",
|
||||
"muc_room": "agents@muc.xmpp.ovh",
|
||||
"use_omemo": true
|
||||
},
|
||||
"mqtt": { "host": "localhost", "port": 1883 },
|
||||
"llm": {
|
||||
"base_url": "http://192.168.7.119:11434",
|
||||
"model": "qwen3:8b",
|
||||
"temperature": 0.3
|
||||
},
|
||||
"llm_profiles": {
|
||||
"local": "qwen3:8b",
|
||||
"code": "qwen2.5-coder:7b",
|
||||
"cloud": "gpt-oss:120b-cloud"
|
||||
},
|
||||
"use_llm_coordinator": true
|
||||
}
|
||||
```
|
||||
|
||||
## Commandes
|
||||
|
||||
```
|
||||
/report — Rapport système (uptime, RAM, disque, stats tâches)
|
||||
/update — Git pull + redémarrage du service
|
||||
/status — État de la queue de tâches
|
||||
/pause — Pause du traitement des tâches
|
||||
/resume — Reprise
|
||||
/script — Gestion de la bibliothèque de scripts bash
|
||||
```
|
||||
|
||||
## Fichiers
|
||||
|
||||
```
|
||||
agent_hal.py — Point d'entrée
|
||||
skills/ — 20 skills
|
||||
scripts/ — Scripts bash persistants
|
||||
config/ — Configuration et system prompt
|
||||
agent_hal.service — Unit systemd
|
||||
```
|
||||
Reference in New Issue
Block a user