<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2016-12-20 21:58 GMT+01:00 Marcello <span dir="ltr"><<a href="mailto:marcello@linuxvil.it" target="_blank">marcello@linuxvil.it</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Utilizzo paramiko per leggere una parte di configurazione di un router che memorizzo in una variabile.<div>Il valore della variabile è:</div><div><br><div><div># dec/20/2016 21:09:12 by RouterOS 6.37.3</div><div># software id = X26E-3BA9</div><div>#</div><div>/ppp secret</div><div>add local-address=10.172.33.1 name=nome1 password=passwd1 \</div><div>    profile=profile-sstp remote-address=10.172.33.2 service=sstp</div><div>add local-address=10.172.33.1 name=nome2 password=passwd2 profile=\</div><div>    profile-ovpn remote-address=10.172.33.2 service=ovpn</div><div>add local-address=10.172.34.37 name=nome3 password=passwd3 \</div><div>    profile=profile-sstp remote-address=10.172.34.38 service=sstp</div><div>add local-address=10.172.34.45 name=nome4 password=\</div><div>    passwd4 profile=profile-sstp remote-address=10.172.34.46 service=\</div><div>    sstp</div><div>add local-address=10.172.34.49 name=nome5 password=passwd5 \</div><div>    profile=profile-sstp remote-address=10.172.34.50 service=sstp</div><div>add local-address=10.172.34.53 name=nome6 password=passwd6 \</div><div>    profile=profile-sstp remote-address=10.172.34.54 service=sstp</div></div><div><br></div><div><br></div><div>Devo creare un dizionario che contenga:</div><div><br></div><div>name, remote-address, password</div><div><br></div><div>ho già consumato le unghie con string.find e non so più dove aggrapparmi.</div><div>Un idea potrebbe essere:</div><div>prendi quello che è compreso tra 'name=' e 'password'</div><div>prendi quello che è compreso tra 'password' e 'profile'</div><div>......</div><div><br></div><div>seconda idea potrebbe essere string.split ed andare a fare un if su ogni parola, se comincia con name=xxxxx taglia 5 caratteri iniziali.</div><div>Magari funziona, ma penso di sprecare troppe risorse di CPU.</div><div><br></div><div>Penso che il metodo migliore siano le espressioni regolari.... ma la mia testa ha poca RAM e il programma per caricale non gira.  :)</div><div>Qualche dritta su come poter procedere?</div><div>Grazie 1000 anche solo per aver letto fino a qui.</div></div></div></blockquote><div><br></div><div><div>Questa riga qui sotto, ammettendo di avere la variabile conf che contiene tutta la tua stringa con la configurazione fa, credo, quello che chiedi:</div><div><br></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">config = [dict([(param.split("=")) for param in host.split(" ") if "=" in param]) for host in conf.split("add ")[1:]]</font></div></div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Non è il massimo della leggibilità, ma di sicuro è veloce e usa solo split e list comprehension :-)</div><div><br></div><div>Il valore di config è un elenco di dizionari siffatto:</div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">[{'local-address': '10.172.33.1',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'name': 'nome1',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'password': 'passwd1',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'profile': 'profile-sstp',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'remote-address': '10.172.33.2',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'service': 'sstp\n'},</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace"> {'local-address': '10.172.33.1',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'name': 'nome2',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'password': 'passwd2',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'profile': '',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'remote-address': '10.172.33.2',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'service': 'ovpn\n'},</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace"> {'local-address': '10.172.34.37',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'name': 'nome3',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'password': 'passwd3',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'profile': 'profile-sstp',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'remote-address': '10.172.34.38',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'service': 'sstp\n'},</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace"> {'local-address': '10.172.34.45',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'name': 'nome4',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'password': '',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'profile': 'profile-sstp',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'remote-address': '10.172.34.46',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'service': ''},</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace"> {'local-address': '10.172.34.49',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'name': 'nome5',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'password': 'passwd5',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'profile': 'profile-sstp',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'remote-address': '10.172.34.50',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'service': 'sstp\n'},</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace"> {'local-address': '10.172.34.53',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'name': 'nome6',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'password': 'passwd6',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'profile': 'profile-sstp',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'remote-address': '10.172.34.54',</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">  'service': 'sstp'}]</font></div></div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Certo, ogni dizionario ha più roba di quello che ti serve, ma è un vero problema?</div><div><br></div><div>Se lo è, devi correggere <font face="monospace, monospace">if "=" in param</font> con<font face="monospace, monospace"> if param.split("=")[0] in ("name", "remote-address", "password")</font></div><div><br></div><div>Ciao.</div><div>Marco.</div><div><br></div></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div><a href="http://beri.it/" target="_blank">http://beri.it/</a> - Un blog</div><div><a href="http://beri.it/i-miei-libri/" target="_blank">http://beri.it/i-miei-libri/</a> - Qualche libro</div><div><span style="font-size:small"><a href="http://beri.it/articoli/" target="_blank">http://beri.it/articoli/</a> - Qualche articolo</span></div></div></div></div>
</div></div>