[Python] quesito python ssh
Manlio Perillo
manlio_perillo a libero.it
Sab 24 Feb 2007 15:21:05 CET
Iacopo Masi ha scritto:
> Salve a tutti,
> sono Iacopo, uno studente che vorrebbe usare python, combinando le librerie
> pySNMP e pySSh (oppure paramiko), per poter sviluppare un applicazione in
> grado di gestire un apparecchio generico che esponga un agent SNMPv3 e un
> server OpenSSh in azione. Ad esempio una qualsiasi macchina Gnu/linux con
> suddetti demoni.
Ciao Iacopo.
> Supponendo che la rete da gestire sia di dimensioni abbastanza grosse, si vuol
> creare questa applicazione grafica in maniera tale da non andare su ogni
> singolo host tramite ssh a modificare ad esempio il firewall con il tool
> iptables; questo ovviamente per ragioni di scalabilità della rete. Quindi
> Vogliamo che questa applicazioni ci semplifichi il lavoro, esponendo un
> accattivante interfaccia grafica (invece della linea di comando) che
> però "sotto il cofano" lavori nel solito modo in cui si lavora da terminale
> con ssh. Ecco perchè avevo optato di usare le librerie che interfacciano
> python e ssh.
>
> Esempio: Se si vuole attuare:
> ssh username a hostname
> pass:****
> $iptables -L
> $output di iptables.
>
> Si dovrebbe avere una popup che permetta di inserire username e password,
> e un eventuale menu con Firewall>>Lista Regola. Se l'utente clicca si
> formatta la stringa "iptables -L" mappata su quella funzione del menu e
> tramite le librerie ssh di python si invia la richiesta e si visualizza la
> risposta in un frame.
>
> Questo ovviamente è un esempio ma dovrebbe essere estendibile anche a tutti i
> comandi presenti su Linux che accettano argomenti.
>
> La domanda finale è quindi:
> E' sensato tramite pySSh o paramiko programmare un client python affinché
> esegua i comandi da ssh con i relativi argomenti ( vedi -L in quel caso) e
> poi faccia vedere il risultato da interfaccia grafica? e oltre essere
> sensato, è fattibile o è una soluzione non pratica?
>
Si a tutte le domande.
Ma non è la soluzione più furba.
La soluzione più furba è cercare di scrivere il meno software possibile.
Quindi prendi un programma (ad esempio un applicazione web) che fa
quello che vuoi -- ad esempio una interfaccia web ad iptables, phpadmin,
o altro -- ed implementa un proxy che riceve una richiesta da un client
e la forwarda agli N server.
Ci sono alcuni aspetti da gestire con un pò di attenzione (ad esempio
che fare se n su N dei server ritorna un errore), ma ti evita di dover
scrivere da zero una applicazione non banale.
Inoltre un proxy del genere dovrebbe essere facilmente riutilizzabile
per applicazioni web generiche.
> Per il resto le librerie pySnmp si dovrebbero interfacciare benissimo con
> Net-Snmp, l'agent di Linux. Non ci dovrebbero essere problemi.
>
Saluti Manlio Perillo
Maggiori informazioni sulla lista
Python