Ciao a tutti, ho uno script Python che apre la connessione, sotto Winzozz, ad una cartella remota. Vado a sfruttare il comando di sistema net use per verificare lo stato della connessione, eventualmente rimuoverla e aggiungerla. Il problema che vi espongo nasce nel momento in cui lo stato della connessione passa da OK a DISCONNECTED, prima di addentrarmi nel problema vi mostro la sequenza dei comandi che vengono lanciati:
#cmd = 'net use path_remoto password /USER: user /' #cmd = 'net use path_remoto password /DELETE' #cmd = 'net use' #Apre la popen def checkRemoteConnection(self,cmd): f = None try: f = os.popen(cmd) except Exception: print 'Problem in popen' self.writeLog('Problem in popen\n') return False else: self._file_popen = f return True #Interpreta il contenuto della popen, esaminando lo status def interpreter(self,fp,type='r'): l = fp.readlines() if(type == 'r'): for i in range(len(l)): if(len(l[i])>1): self.writeLog('interpreter: reading popen.. '+str(l[i])+'\n') if(str(l[i]).find(str(self.__remote_path))!=-1): if(str(l[i]).find('OK')!=-1): return True return False else: for i in range(len(l)): self.writeLog('interpreter: reading popen.. '+str(l[i])+'\n') return True #Controlla i due metodi soprastanti def isConnected(self, cmd, type = 'r'): if not self.checkRemoteConnection(cmd): return False if(self._file_popen!=None): self.writeLog('isConnected: Popen result is None\n') return False else: ret =self.interpreter(self._file_popen,type) if(self._file_popen!=None): try: self._file_popen.close() except Exception: print 'fp.close() : exception in close popen()' if(ret): return True else: return False Ho inoltre tre metodi (test(),submit(),delete()), che ometto, che non fanno altro che scrivere opportunamente la stringa cmd. if __name__ == '__main__': net = NetUse(user,pwd,remotepath) if(len(sys.argv)>1): if(len(sys.argv)==2): if(sys.argv[1]=='delete'): if(net.test()): if(net.delete()): print 'Connessione remota rimossa' else: print 'Impossibile rimuovere connessione remota' else: if(not net.test()): print 'Not connected' if(not net.submit()): print 'Error in connection' else: if(not net.test()): print 'Error in connection..try again' net.delete() time.sleep(2) net.submit() if(not net.test()): print 'Error in connection..' else: print 'Successfully Connected' else: print 'Successfully Connected' else: print 'Already Connected' Questo script, in caso di stato della connessione DISCONNECTED, mi restituusce un'eccezione su self._file_popen.close() (Metodo isConnected) Sapreste indicarmi se opero in modo sbagliato o se invece questa particolare situazione (STATUS DISCONNECTED) può essere gestita in modo differente ed indolore? Sottolineo che questo problema non lo riscontro su ogni macchina in cui viene eseguito, ma solo su alcune, senza apparente motivo. Vi ringrazio moltissimo Ciao e buona giornata FF _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python