Non so di preciso cosa faccia net use ma se conosci il PID del processo che ti aspetti che apra la connessione puoi utilizzare psutil [1] per verificare che la connessione su un dato indirizzo:porta sia attiva e in stato "established". Esempio:
>>> import os, socket, psutil >>> thisproc = psutil.Process(os.getpid()) >>> thisproc.get_connections() [] >>> sock = socket.create_connection(('google.it', 80)) >>> thisproc.get_connections() [connection(fd=3, family=2, type=1, local_address=('10.0.0.1', 44467), remote_address=('74.125.39.104', 80), status='ESTABLISHED')] >>> [1] http://code.google.com/p/psutil/ Saluti, --- Giampaolo http://code.google.com/p/pyftpdlib/ http://code.google.com/p/psutil/ 2011/5/26 Filadelfo Fiamma <philosga...@gmail.com>: > 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 > _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python