Exécuter un script Pyton sur un serveur distant.

Le
Salvatore
Bonsoir la communauté,

Lorsque j'ai voulu distribuer mes scripts 'hta' en Python,
j'ai été confronté au problème de l'installation de Python
sur les postes clients.
Je n'ai eu aucun mal à convaincre les collègues de mon Bureau.
Le problème s'est présenté pour les postes sur les sites distants
Mais comment faire pour faire exécuter un script sur un serveur distant ?
La solution je l'ai trouvé ici :
http://www.voidspace.org.uk/ironpython/the_cpython_server.shtml
(regarder en bas de page)
Il me reste à trouver comment poster une requete 'POST' en vbs
Michel si tu as l'info :-)

Voici le code côté client réadapter
pour répondre à mon besoin.

[code]
# -*- coding: cp1252 -*-
import httplib
import base64
import urllib

host = '127.0.0.1'
port = 9981

script = """
import wmi
c = wmi.WMI('%s')
for os in c.Win32_OperatingSystem():
caption = os.Caption
response = caption
filename = 'foo'
"""

def execScript(server):
encodedScript = base64.encodestring(script%server)
headers = { "Content-type": "application/x-www-form-urlencoded"}
bytes = ','.join([str(ord(c)) for c in encodedScript])
params = urllib.urlencode({u'data': bytes})
con = httplib.HTTPConnection(host, port)
con.request('POST','/',params,headers)
response = con.getresponse()
con.close
return response.read()


if __name__ == '__main__':
osname = execScript('Python')
print osname

[/code]


Cordialement


Salvatore


# La partie serveur est ici :
# http://www.voidspace.org.uk/ironpython/the_cpython_server.shtml

# J'ai modifié la partie get_response method comme suit:

# def get_response(self, path, query, data):
# """
# Get a response file object, filename, and length (if known).

# Exceptions raised here will result in a 501 being sent.
# """
# print 'Path:', path
# print 'Query:', query
# d = data[5:]
# lst64 = d.split('%2C')
# d64 = ''.join([chr(int(c)) for c in lst64 ])
# src = base64.decodestring(d64)
# s = src[1:-1]
# context = {}
# exec (s + '', context)
# print "Fin exe : %s"%context['response']
# if not 'response' in context:
# raise NoResponseError("The script did not return a response.")
# response = context['response']
# responseName = context.get('filename', '')
# return StringIO(response), responseName, len(response)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Méta-MCI \(MVP\)
Le #662350
Bonsoir !

Je dois avoir un truc dans un coin. Malheureusement, c'est trop tard
pour cette année (je pars réveillonner après quelques heures de
sommeil).
Si ça peut attendre l'année prochaine...

Bonne année !

MCI
Salvatore
Le #662095
Merci Michel

J'ai trouvé

<html>
<head>
<script language=jscript>
var script2=" n
import wmi n
c = wmi.WMI('Python') n
for os in c.Win32_OperatingSystem(): n
caption = os.Caption n
response = caption n
filename = 'foo'"


var url = "http://127.0.0.1:9981";
var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP");
xmlhttp.open("POST", url, 0);
xmlhttp.send(script2);
alert(xmlhttp.responseText )
var xmlhttp = null;
</script>
</head>
<body>
test
</body>
</html>

Bonne Fête

Salvatore

Bonsoir !

Je dois avoir un truc dans un coin. Malheureusement, c'est trop tard
pour cette année (je pars réveillonner après quelques heures de sommeil).
Si ça peut attendre l'année prochaine...

Bonne année !

MCI


Salvatore
Le #662091
A propos, rien n'empêche d'utiliser cette
technique avec XUL...;-)
Salvatore
Le #662090
A propos, rien n'empêche d'utiliser cette technique avec XUL :-)
Publicité
Poster une réponse
Anonyme