port-efter ett kommandoradsverktyg och en Python-bibliotek som hjälper till med lokala TCP-portar managment.
Det kan hitta en ledig TCP localhost port och minns föreningen.
Detta kan vara användbart när du installerar en bunt av programvara med flera delar som behöver portnummer.
Obs!
Om du letar efter en tillfällig port sedan socket.bind ((värd, 0)) är din bästa insats:
>>> Import socket
>>> S = socket.socket ()
>>> S.bind (("", 0))
>>> S.getsockname ()
('0.0.0.0', 54485)
port-för är nödvändig när du behöver ihållande gratis lokal portnummer.
port-för är raka motsatsen till s.bind ((värd, 0)) är meningen att det inte ska returnera portar som s.bind ((värd, 0)) kan återvända (eftersom sådana hamnar sannolikt är tillfällig omplacerad av OS).
Det finns flera regler port-för försöker att följa för att hitta och returnera ett nytt oanvänd port:
1. Port måste vara oanvänd: port-kontroller detta genom att försöka ansluta till porten och att binda till det.
2. Port måste vara IANA otilldelat och annars inte känd: detta är acheived genom att upprätthålla lediga portar lista (analyserad från IANA och Wikipedia).
3. Port borde inte vara inne efemära portintervall. Detta är viktigt eftersom hamnarna från efemära portintervall kan tilldelas tillfällig genom OS (t.ex. genom maskinens IP-stack) och detta kan hindra tjänste omstart under vissa omständigheter. gimme_port returnerar inte hamnar från efemära hamnområden konfigurerade vid den aktuella maskinen.
4. Övriga heuristik tillämpas också: port-för försök att returnera en port från större hamnområden; det också inte returnerar portar som är för nära välkända portar.
Installation
Systemtäckande:
sudo easy_install port-för
Script användning
port-för
Detta verktyg faktiskt inte binder hamnen eller på annat sätt hindrar porten från att tas av en annan programvara. Den försöker dock att välja en port som är mindre sannolikt kommer att användas av en annan programvara (och det är oanvänd vid tidpunkten för ringa förstås). Utility ser också till att port-för bar inte kommer att återvända samma port som port-för foo på samma maskin.
$ Sudo port-för foo
37987
$ Sudo port-för foo
37987
Du kanske också vill prefix din app namn:
$ Sudo port-för instance1.apache
35456
Vänligen observera att port-för manus kräver läs och skrivrättigheter till /etc/port-for.conf så sudo kan vara nödvändigt för att köra det.
Bibliotek användning
>>> Import port_for
>>> Port_for.select_random ()
37774
>>> Port_for.select_random ()
48324
>>> 80 i port_for.available_good_ports ()
Falsk
. Gräva i källkoden för mer
Krav :
- Python
Kommentarer hittades inte