Comandi e API

Controlli, backup e Storage Box da shell

29 Settembre 2026 emanuele 7 minuti di lettura

integrity-check.sh: i controlli

Gira da solo ogni notte alle 06:30 (completo) e ogni ora alle :20 (leggero). Esce con codice 2 se ci sono allarmi.

ComandoCosa fa
integrity-check.shTutti i siti più il server.
integrity-check.sh --site <dominio>Un sito solo.
integrity-check.sh --systemSolo il server.
… --baselineAccetta lo stato attuale come normale (amministratori, mu-plugin, impronta, riferimento del database e del server), dopo averlo verificato.
… --jsonRisultato in JSON.
integrity-check.sh --report [--site <dominio>]L’ultimo esito, senza rifare il controllo.
integrity-check.sh --lightIl controllo orario: amministratori, mu-plugin, database, file cambiati dall’ultima impronta, verifiche leggere del server.

site-scan.py: gli esami di un sito

Tutto in sola lettura, come root. Lo usano i controlli e la dashboard.

ComandoCosa fa
site-scan.py code <dominio>Confronta il codice con l’impronta approvata (sha256 di ogni file). Link e file speciali non si seguono né si aprono.
site-scan.py db <dominio>Il database: indirizzo del sito, registrazioni aperte, permessi da amministratore, application password nuove, hook del malware, script nei contenuti (anche nelle pagine di Elementor).
site-scan.py vuln <dominio>Vulnerabilità note di core, plugin e temi installati; plugin chiusi o fermi su wordpress.org; plugin disattivati.
site-scan.py attacchi <dominio>I tentativi delle ultime 24 ore dal log di nginx.
site-scan.py wporg-search <dominio> plugin|theme -- <testo>La ricerca su wordpress.org della dashboard, con le vulnerabilità dell’ultima versione.
site-scan.py versions <dominio>Le versioni del codice, dalla più recente: chi, cosa, quanti file e quali plugin o temi sono cambiati, con le versioni. Ogni approvazione dell’impronta ne crea una.
site-scan.py file-history <dominio> <percorso>Le versioni in cui un file o una cartella è cambiato.
site-scan.py show <dominio> [percorso]Il visore del codice: password e chiavi mascherate prima di uscire dal server.

server-scan.py: il server

Lo lancia integrity-check.sh. Confronta il server con il riferimento approvato: utenti, gruppi con privilegi, sudo, SSH, PAM, chiavi, porte, servizi, cron, container e, nel controllo completo, file SUID e pacchetti. Vedi I controlli del server.

ComandoCosa fa
server-scan.py checkIl confronto completo, senza report né notifica. Senza riferimento lo crea.
server-scan.py check --lightSolo le verifiche di ogni ora, senza file SUID, debsums e aggiornamenti.
server-scan.py check --saveAccetta lo stato attuale come riferimento. Dalla dashboard si fa con Accetta come nuovo riferimento.

site-metrics.py: lo spazio dei siti

Misura quanto occupa un sito e dove, in sola lettura: una passata sulla cartella del sito senza seguire i collegamenti, spazio su disco come du, più il database. Il controllo della notte salva una misura al giorno per ogni sito.

ComandoCosa fa
site-metrics.py spazio <dominio>L’ultima misura salvata: totale, upload, plugin, tema attivo, WordPress, log, database.
site-metrics.py spazio <dominio> --misuraLa rifà adesso e la salva come misura del giorno. Dalla dashboard: Misura adesso.
site-metrics.py raccogliMisura tutti i siti e conta per giorno tentativi, ban, allarmi e backup: lo fa il controllo delle 06:30. Rifarlo non crea doppioni.
site-metrics.py rispostaChiede la pagina iniziale di ogni sito e ne salva il tempo: lo fa il controllo di ogni ora.
site-metrics.py serie <dominio> / serie-serverLe serie dei grafici, del sito o del server; con --json per intero.

site-import.py: le importazioni

Apre l’archivio e il dump di un sito di produzione caricati dalla dashboard, senza eseguire nulla: l’archivio lo estrae un utente senza privilegi, il dump va in un database temporaneo. Prepara la relazione e ciò che serve a site.sh import.

ComandoCosa fa
site-import.py elencoLe importazioni aperte, con la fase (caricamento, analizzata…).
site-import.py stato <id> --jsonUna importazione: byte arrivati e relazione dell’analisi.
site-import.py analizza <id>L’analisi, a mano (dalla dashboard parte da sola a caricamento finito).
site-import.py annulla <id>Toglie file, cartelle e database temporanei. Quelle ferme da 48 ore le toglie da solo il timer delle scadenze.

nightly-backup.sh: i backup

Il backup notturno parte alle 03:15: file dei siti e dump dei database, cifrati con restic, sulla Storage Box. La domenica verifica il repository e toglie le copie vecchie.

ComandoCosa fa
nightly-backup.sh --statusUltimo backup riuscito, numero di copie.
nightly-backup.sh --listTutte le copie.
nightly-backup.sh --startUn backup adesso, come quello notturno.
nightly-backup.sh --site <dominio>Copia del solo sito. Si tengono le ultime 10 per sito.
nightly-backup.sh --site-list <dominio>Le copie da cui il sito si può ripristinare.
nightly-backup.sh --checkVerifica completa del repository.
nightly-backup.sh --unlockToglie i lock rimasti da un backup interrotto.

storage-box.py: la Storage Box

ComandoCosa fa
storage-box.py infoSotto-account usati (migrazione e backup), collegamento, spazio; con il token di Hetzner anche snapshot e impostazioni.
storage-box.py checkCollegamento più verifica del repository dei backup.
storage-box.py ls migrazione|backupIl contenuto di una cartella.

Nessun comando della Storage Box cancella: snapshot e dati vecchi si tolgono solo dalla console di Hetzner.

site-export.py: l’esportazione per un altro hosting

ComandoCosa fa
site.sh export <sito> <dominio di produzione>I file del sito in uno zip e il database con il dominio di produzione al posto di quello di sviluppo, per un altro hosting. Il sito di sviluppo non cambia.
site-export.py elenco <sito>Le esportazioni ancora disponibili (24 ore, al massimo tre).
site-export.py elimina <sito> <esportazione>Cancella un’esportazione prima della scadenza.

site-vault.py e site-remote.py: la produzione

ComandoCosa fa
site-vault.py init --admin <utente> --chiave age1… --deposito age1…Crea la cassaforte, una volta sola, con le sole chiavi pubbliche; stampa l’impronta da salvare nel password manager.
site-vault.py statusModalità, impronta, amministratori, segreti con i soli metadati.
site-vault.py salva <nome> --tipo tokenSalva un segreto, chiesto senza mostrarlo o letto dallo stdin; anche a cassaforte chiusa. Se c’era già, quello di prima va in revocati/.
site-vault.py revoca <nome>Toglie un segreto dall’uso e lo sposta in revocati/.
site-vault.py rekeyIdentità nuova della cassaforte, segreti ricifrati; chiede la chiave personale senza mostrarla.
site-vault.py amministratore aggiungi <utente> --chiave age1… / togli <utente>Chi può aprirla; togliere cambia anche l’identità.
site-vault.py esercizio --confermaPassaggio all’esercizio: identità nuova, segreti di prova in revocati/, privilegi attesi.
site-vault.py attesi [--conferma]Le differenze dai privilegi attesi; con --conferma li riapprova (solo in esercizio).
site-vault.py deposito <file>Il deposito da custodire fuori dal server: solo file cifrati.
site-vault.py controllaScadenze, deposito, prova di recupero e interblocco: le righe del controllo notturno.
site-remote.py listI server di produzione gestiti da questo server di sviluppo e i siti pubblicati.
site-remote.py show <server>Un server: indirizzi, chiave host, strumenti, ultimo controllo.
site-remote.py controlla <server>Lo stato del server, letto con l’utente esercizio: senza cassaforte.
site-remote.py prepara <server> --fornitore … --cliente … --regione …Le chiavi di un server da aggiungere e la sua configurazione d’avvio, da incollare alla creazione (si vede una volta).
site-remote.py strumenti statoLa chiave di rilascio e le versioni degli strumenti per i server di produzione, firmate o no.
site-remote.py strumenti preparaUna versione nuova degli strumenti, se gli script di questo server sono cambiati.
site-remote.py strumenti manifesto <versione>Il manifesto da firmare sul PC con la chiave di rilascio.
site-remote.py strumenti firma <versione> < manifesto.txt.sigLa firma, verificata con la chiave pubblica di rilascio prima di salvarla.
site-remote.py indiceL’elenco delle vulnerabilità note ai server messi in sicurezza (ogni notte lo fa il controllo).

Nessun comando stampa un valore della cassaforte. Si apre solo dalla dashboard: vedi Produzione e cassaforte.

L’agente: la dashboard da shell

Ogni operazione della dashboard passa dall’agente site-agent, che conosce solo un elenco chiuso di operazioni. Si può interrogare anche da shell:

site-agent.py call site.list

Riavviare l’agente interrompe i lavori in corso: systemctl restart site-agent solo quando non ce ne sono.