Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécuter un script Pyton sur un serveur distant.

4 réponses
Avatar
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 + '\n', 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)

4 réponses

Avatar
Méta-MCI \(MVP\)
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
Avatar
Salvatore
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


Avatar
Salvatore
A propos, rien n'empêche d'utiliser cette
technique avec XUL...;-)
Avatar
Salvatore
A propos, rien n'empêche d'utiliser cette technique avec XUL :-)