Bonjour,
J'utilise assez régulièrement un petit utilitaire qui permet de transformer son espace de travail en serveur web :
https://github.com/brson/basic-http-server
Avant, j'utilisais :
python3 -m http.server
C'est sympa et rapide mais quand on en utilise plusieurs en simultané, on a des soucis de conflit sur les ports HTTP.
Du coup, je me suis créé un petit script python qui va choisir aléatoirement un port, vérifier qu'il n'est pas dans la liste déjà utilisé et l'attribuer.
C'est simple, ça ne va pas révolutionner le monde mais je partage.
Le code python qui va renvoyer un port :
#!/usr/bin/python3
#coding=utf-8
import random
from subprocess import Popen, PIPE
def generator():
return random.randint(1000, 65535)
if __name__ == "__main__":
pattern = 'localhost:'
p1 = Popen(["netstat", "-a", "-o"], stdout=PIPE)
p2 = Popen(["grep", pattern], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close()
output = p2.communicate()[0]
list_ports = []
for line in output.split('\n'):
if not line.startswith('tcp'):
continue
start_match = line[line.find(pattern)::]
port = start_match[len(pattern):start_match.find(' ')]
try:
list_ports.append(int(port))
except:
pass
while True:
port = generator()
if port not in list_ports:
print(port)
exit()
Si on veut se créer un alias sur son bashrc ou zshrc :
http_localhost_server() {
basic-http-server -a 127.0.0.1:`python $SCRIPTS_PATH/http_localhost.py`;
}
Voilà, enjoy