[Python] esecuzione remota su windows

Marco De Paoli depaolim a gmail.com
Mar 3 Feb 2015 16:51:23 CET


Il giorno 2 febbraio 2015 22:37, Balan Victor <balan.victor0 a gmail.com> ha
scritto:

> 2008 o forse 2012
>>
> Allora direi powershell. Da quello che devi fare un po di configurazione
> sul server, poca roba.
> Anche ansible usa powershell
> http://docs.ansible.com/intro_windows.html#windows-support
>

ok, pare proprio la strada che mi serviva dato che io volevo limitare il
più possibile quello che c'è da installare sulla macchina windows
ed in effetti, con questa strada, su un Win 2008 si procede senza bisogno
di installare alcun sw aggiuntivo

Questa è la mia pipeline

sulla macchina linux, ho installato:
https://github.com/diyan/pywinrm

che è alla base di Ansible per windows
Si tratta di un componentino che si installa con pip. Ecco come si
definisce:
"pywinrm is a Python client for Windows Remote Management (WinRM). This
allows you to invoke commands on target Windows machines from any machine
that can run Python. WinRM allows you to call native objects in Windows.
These include, but are not limited to, running batch scripts, powershell
scripts and fetching WMI variables. For more information on WinRM, please
visit Microsoft's WinRM site."

Sulla macchina windows ho attivato WinRM
https://msdn.microsoft.com/en-us/library/aa384426.aspx

si basa su un protocollo SOAP di interoperabilità

ecco le istruzioni per attivare il listener HTTP di WinRM sul server windows
https://msdn.microsoft.com/en-us/library/aa384372.aspx

Io per fare un prova-mordi-e-fuggi ho rinunciato a tutti i livelli di
protezione
In pratica sono finito su un basic-auth su HTTP

Prima che inorridiate :-) posso dirvi che le macchine si trovano, in
effetti, su una sotto-rete protetta
per cui non è detto che non possa rimanere così

I comandi dati su windows con Cmd "Run As Administrator" sono stati:

winrm quickconfig

winrm set winrm/config/client/auth @{Basic="true"}
winrm set winrm/config/client @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}

e poi ho dovuto creare un utente locale alla macchina: <winrm_user> /
<winrm_pass>
(gli utenti di dominio non funzionano su basic-auth)

Il bello è che lato centos, al prompt python ho dato:

s = winrm.Session('NOME-SERVER-WIN', auth=('<winrm_user>', '<winrm_pass>'))
r = s.run_cmd('ipconfig', ['/all'])
r.status_code
r.std_out

E ha pure funzionato! :-)

Ora devo sentire i sistemisti per farmi approvare l'accroc, ehm, il giro
implementato

In realtà lo chiamo accrocchio perchè c'è in win di mezzo, ma non mi pare
per nulla male

Grazie a tutti,
Marco
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150203/1e52f72c/attachment.html>


Maggiori informazioni sulla lista Python