[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