[Python] Esecuzione dnscmd con python3

2013-10-21 Per discussione Marco Passanisi
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

2013-10-21 Per discussione Marco De Paoli
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

2013-10-21 Per discussione Daniele Varrazzo

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

2013-10-21 Per discussione Marco Passanisi
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

2013-10-21 Per discussione Giuseppe Di Martino
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 Per discussione Raffaele Salmaso
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

2013-10-21 Per discussione Marco Passanisi
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 Per discussione enrico franchi
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

2013-10-21 Per discussione Marco Buttu

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

2013-10-21 Per discussione Marco Passanisi
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

2013-10-21 Per discussione Marco Passanisi
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

2013-10-21 Per discussione Giuseppe Di Martino
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

2013-10-21 Per discussione Alessandro Dentella
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

2013-10-21 Per discussione Marco Buttu

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

2013-10-21 Per discussione Marco Buttu

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

2013-10-21 Per discussione Marco Passanisi
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

2013-10-21 Per discussione Marco Buttu

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

2013-10-21 Per discussione Marco Passanisi
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