Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/01/2020, à 14:51

moths-art

Partage script serveur local avec port HTTP aléatoire

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

Dernière modification par moths-art (Le 16/01/2020, à 22:55)

Hors ligne

#2 Le 11/01/2020, à 15:09

Watael

Re : Partage script serveur local avec port HTTP aléatoire

sauf que, ce n'est pas un alias; c'est une fonction.

un alias, ce serait :

alias http_localhost_server='$(which basic-http-server) -a 127.0.0.1:$($(which python) "$scriptsPath/http_locahost.py"'

pas testé (!), mais c'est l'idée.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 11/01/2020, à 15:23

moths-art

Re : Partage script serveur local avec port HTTP aléatoire

Je suis dac @Watavel, j'ai hésité à changer en alias. Après la finalité est la même.

Pour ma part, dans mon .zshrc je fais d'autre choses dans ma fonction donc je le l'ai volontairement allégé ici mais je ne peux pas utiliser un simple alias.

Hors ligne