[Python] Esecuzione dnscmd con python3
Salve a tutti, ho la necessita di eseguire un comando dnscmd da python, sto provando con subprocess ma senza risultato. Vi posto lo script di partenza: import subprocess output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() print(err) Grazie. Marco P. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
Il giorno 21 ottobre 2013 12:45, Marco Passanisi mpx...@gmail.com ha scritto: ma senza risultato. ossia? ti da errore? e se sì, quale? oppure si blocca? out, err = output.communicate() print(err) print(out) print(output.returncode) cosa dicono? Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
On 2013-10-21 11:45, Marco Passanisi wrote: Salve a tutti, ho la necessita di eseguire un comando dnscmd da python, sto provando con subprocess ma senza risultato. Vi posto lo script di partenza: import subprocess output = subprocess.Popen(C:Windows\System32\dnscmd.exe /EnumZones, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) A prima botta, se hai dei backslash nella stringa, o li raddoppi (C:\\Windows\\System32\\...) o usi una raw string (rC:\Windows\System32\...). Poi, quando chiedi aiuto perchè hai un errore, di solito fa comodo sapere che errore sia. -- Daniele ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
import subprocess output = subprocess.Popen('c:\Windows\system32\dnscmd.exe ns-01 /enumzones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() print(err) b'c:\\Windows\\system32\\dnscmd.exe non \x8a riconosciuto come comando interno o esterno,\r\n un programma eseguibile o un file batch.\r\n' Il giorno 21 ottobre 2013 12:59, Marco De Paoli depao...@gmail.com ha scritto: Il giorno 21 ottobre 2013 12:45, Marco Passanisi mpx...@gmail.com ha scritto: ma senza risultato. ossia? ti da errore? e se sì, quale? oppure si blocca? out, err = output.communicate() print(err) print(out) print(output.returncode) cosa dicono? Marco ___ 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
Re: [Python] Esecuzione dnscmd con python3
Il giorno 21 ottobre 2013 12:45, Marco Passanisi mpx...@gmail.com ha scritto: output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python Credo che il problema sia causato dai doppi apici che racchiudono il percorso del file da eseguire, perché essa è già dentro la stringa delimitata dagli apici singoli. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
2013/10/21 Marco Passanisi mpx...@gmail.com: import subprocess output = subprocess.Popen('c:\Windows\system32\dnscmd.exe ns-01 /enumzones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() http://docs.python.org/3.3/library/subprocess.html args should be a sequence of program arguments or else a single string. By default, the program to execute is the first item in args if args is a sequence. If args is a string, the interpretation is platform-dependent and described below. See the shell and executable arguments for additional differences from the default behavior. Unless otherwise stated, it is recommended to pass args as a sequence. ... On Windows, if args is a sequence, it will be converted to a string in a manner described in Converting an argument sequence to a string on Windows. This is because the underlying CreateProcess() operates on strings. ... On Windows with shell=True, the COMSPEC environment variable specifies the default shell. The only time you need to specify shell=True on Windows is when the command you wish to execute is built into the shell (e.g. dir or copy). You do not need shell=True to run a batch file or console-based executable. hai provato a passare i comandi come una lista di argomenti? output = subprocess.Popen([ c:\Windows\system32\dnscmd.exe, ns-01, /enumzones ], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print(err) b'c:\\Windows\\system32\\dnscmd.exe non \x8a riconosciuto come comando interno o esterno,\r\n un programma eseguibile o un file batch.\r\n' ed infatti cerca di eseguire c:\\Windows\\system32\\dnscmd.exe che è diverso da c:\\Windows\\system32\\dnscmd.exe -- | Raffaele Salmaso | http://salmaso.org | https://bitbucket.org/rsalmaso | http://gnammo.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
no, ho provato anche , Il giorno 21 ottobre 2013 15:00, Giuseppe Di Martino gius.d...@gmail.comha scritto: Il giorno 21 ottobre 2013 12:45, Marco Passanisi mpx...@gmail.com ha scritto: output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python Credo che il problema sia causato dai doppi apici che racchiudono il percorso del file da eseguire, perché essa è già dentro la stringa delimitata dagli apici singoli. ___ 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
Re: [Python] Esecuzione dnscmd con python3
2013/10/21 Marco Passanisi mpx...@gmail.com no, ho provato anche , Parse error + Triple top quote + Lack of Context! Per dire, a naso pare tu stia usando Python 3. Si intuisce che sei su windows, ma non su quale sistema. Non stai facendo vedere se il programma che cerchi di chiamare e' davvero dove pensi che sia, etc etc etc... -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
On 10/21/2013 12:45 PM, Marco Passanisi wrote: import subprocess output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() print(err) Ciao, innanzitutto, come ti hanno detto, dovresti usare delle stringhe raw. Pero' il problema non e' questo, perche' sei stato fortunato e nessuna delle sequenze di caratterei \x fa parte di una sequenza di escape ;) Inoltre, quando usi shell=True, la stringa viene eseguita dalla shell sottostante, quindi avresti potuto scrivere direttamente: subprocess.Popen(C:\Windows\System32\dnscmd.exe /EnumZones, shell=True,...) Quindi, anche se sembra banale, credo che il problema sia che nel tuo sistema non esiste il fileC:\Windows\System32\dnscmd.exe... Puoi verificare? Ad esempio, nel mio non c'e': $ ls Windows/System32/dnsc* Windows/System32/dnscacheugc.exe Windows/System32/dnscmmc.dll -- Marco Buttu INAF - Osservatorio Astronomico di Cagliari Via della Scienza, Loc. Cuccuru Angius 09047 Selargius (CA) Phone: 070 711 80 217 Email: mbu...@oa-cagliari.inaf.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
Che sia python3 c'è scritto nell'oggetto, per essere più precisi 3.32 ma ho provato anche con la 2.7 Sono su windows ovvio, sto provando su 2008r2 e win 8 ma non credo faccia differenza è il programma si trova su c:/Windows/System32/dnscmd.exe Il giorno 21 ottobre 2013 15:32, enrico franchi enrico.fran...@gmail.comha scritto: 2013/10/21 Marco Passanisi mpx...@gmail.com no, ho provato anche , Parse error + Triple top quote + Lack of Context! Per dire, a naso pare tu stia usando Python 3. Si intuisce che sei su windows, ma non su quale sistema. Non stai facendo vedere se il programma che cerchi di chiamare e' davvero dove pensi che sia, etc etc etc... -- . ..: -enrico- ___ 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
Re: [Python] Esecuzione dnscmd con python3
si ti confermo che si trova li. Windows 2008r2 e win8 Il giorno 21 ottobre 2013 15:36, Marco Buttu mbu...@oa-cagliari.inaf.itha scritto: On 10/21/2013 12:45 PM, Marco Passanisi wrote: import subprocess output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() print(err) Ciao, innanzitutto, come ti hanno detto, dovresti usare delle stringhe raw. Pero' il problema non e' questo, perche' sei stato fortunato e nessuna delle sequenze di caratterei \x fa parte di una sequenza di escape ;) Inoltre, quando usi shell=True, la stringa viene eseguita dalla shell sottostante, quindi avresti potuto scrivere direttamente: subprocess.Popen(C:\Windows\System32\dnscmd.exe /EnumZones, shell=True,...) Quindi, anche se sembra banale, credo che il problema sia che nel tuo sistema non esiste il file C:\Windows\System32\dnscmd.exe... Puoi verificare? Ad esempio, nel mio non c'e': $ ls Windows/System32/dnsc* Windows/System32/dnscacheugc.exe Windows/System32/dnscmmc.dll -- Marco Buttu INAF - Osservatorio Astronomico di Cagliari Via della Scienza, Loc. Cuccuru Angius 09047 Selargius (CA) Phone: 070 711 80 217 Email: mbu...@oa-cagliari.inaf.it ___ 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
Re: [Python] Esecuzione dnscmd con python3
Immagino che avrai già provato ad aprire il prompt dei comandi come amministratore, vero? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
On Mon, Oct 21, 2013 at 03:36:17PM +0200, Marco Buttu wrote: On 10/21/2013 12:45 PM, Marco Passanisi wrote: import subprocess output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() print(err) Ciao, innanzitutto, come ti hanno detto, dovresti usare delle stringhe raw. Pero' il problema non e' questo, perche' sei stato fortunato e nessuna delle sequenze di caratterei \x fa parte di una sequenza di escape ;) Inoltre, quando usi shell=True, la stringa viene eseguita dalla shell sottostante, quindi avresti potuto scrivere direttamente: subprocess.Popen(C:\Windows\System32\dnscmd.exe /EnumZones, shell=True,...) no, qui manca ancora la raw string! subprocess.Popen(rC:\Windows\System32\dnscmd.exe /EnumZones,shell=True,...) forse basta anche subprocess.Popen(C:/Windows/System32/dnscmd.exe /EnumZones, shell=True,...) che a me pare più leggibile. sandro *:-) -- Sandro Dentella *:-) http://www.reteisi.org Soluzioni libere per le scuole http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
On 10/21/2013 04:25 PM, Marco Passanisi wrote: si ti confermo che si trova li. Windows 2008r2 e win8 che architettura ha la tua macchina, 64 o 32? -- Marco Buttu INAF - Osservatorio Astronomico di Cagliari Via della Scienza, Loc. Cuccuru Angius 09047 Selargius (CA) Phone: 070 711 80 217 Email: mbu...@oa-cagliari.inaf.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
On 10/21/2013 04:37 PM, Alessandro Dentella wrote: subprocess.Popen(C:\Windows\System32\dnscmd.exe /EnumZones, shell=True,...) no, qui manca ancora la raw string! Che sia scritta male non ci piove, nel senso che in generale, ovviamente , deve usare un raw string. Ma quello che dici non e' vero, perche' non vi e' nessuna sequenza di escape in quel path: '\W', '\S', '\d' ('\\W', '\\S', '\\d') len('\W'), len('\S'), len('\d') (2, 2, 2) -- Marco Buttu INAF - Osservatorio Astronomico di Cagliari Via della Scienza, Loc. Cuccuru Angius 09047 Selargius (CA) Phone: 070 711 80 217 Email: mbu...@oa-cagliari.inaf.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
si, ho spostato anche l'eseguibile sul desktop Il giorno 21 ottobre 2013 16:35, Giuseppe Di Martino gius.d...@gmail.comha scritto: Immagino che avrai già provato ad aprire il prompt dei comandi come amministratore, vero? ___ 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
Re: [Python] Esecuzione dnscmd con python3
On 10/21/2013 04:25 PM, Marco Passanisi wrote: si ti confermo che si trova li. Windows 2008r2 e win8 Forse lo vedi la', ma non e' la'... Non uso Windows e non so dirti come funzioni il filesystem-redirection, ma credo che il tuo problema sia dovuto a questo. Prova a vedere qua: http://practicaladmin.wordpress.com/2010/07/16/powershell-x64-and-filesystem-redirection/ http://msdn.microsoft.com/en-us/library/aa384187%28VS.85%29.aspx Ciao, M. -- Marco Buttu INAF - Osservatorio Astronomico di Cagliari Via della Scienza, Loc. Cuccuru Angius 09047 Selargius (CA) Phone: 070 711 80 217 Email: mbu...@oa-cagliari.inaf.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Esecuzione dnscmd con python3
risolto spostando l'eseguibile e con la raw string. Grazie a tutti. Il giorno 21 ottobre 2013 16:37, Alessandro Dentella san...@e-den.it ha scritto: On Mon, Oct 21, 2013 at 03:36:17PM +0200, Marco Buttu wrote: On 10/21/2013 12:45 PM, Marco Passanisi wrote: import subprocess output = subprocess.Popen('C:\Windows\System32\dnscmd.exe /EnumZones', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = output.communicate() print(err) Ciao, innanzitutto, come ti hanno detto, dovresti usare delle stringhe raw. Pero' il problema non e' questo, perche' sei stato fortunato e nessuna delle sequenze di caratterei \x fa parte di una sequenza di escape ;) Inoltre, quando usi shell=True, la stringa viene eseguita dalla shell sottostante, quindi avresti potuto scrivere direttamente: subprocess.Popen(C:\Windows\System32\dnscmd.exe /EnumZones, shell=True,...) no, qui manca ancora la raw string! subprocess.Popen(rC:\Windows\System32\dnscmd.exe /EnumZones,shell=True,...) forse basta anche subprocess.Popen(C:/Windows/System32/dnscmd.exe /EnumZones, shell=True,...) che a me pare più leggibile. sandro *:-) -- Sandro Dentella *:-) http://www.reteisi.org Soluzioni libere per le scuole http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy ___ 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