port-for er et kommandolinjeverktøy og en Python bibliotek som hjelper med lokale TCP-porter managment.
Den kan finne en ubrukt TCP localhost port og husk foreningen.
Dette kan være nyttig når du installerer en stabel av programvare med flere deler som trenger portnumre.
Note
Hvis du leter etter en midlertidig port deretter socket.bind ((host, 0)) er det beste alternativet:
>>> Import socket
>>> S = socket.socket ()
>>> S.bind (("", 0))
>>> S.getsockname ()
('0.0.0.0', 54485)
port-for er nødvendig når du trenger vedvarende gratis lokale portnummer.
port-for er det motsatte av s.bind ((host, 0)) er fornuftig at det ikke skulle vende tilbake porter som s.bind ((host, 0)) kan returnere (fordi slike porter er sannsynlig å være midlertidig omplassert av OS).
Det er flere regler port-for prøver å følge for å finne og returnere en ny ubrukt port:
1. Port må være ubrukt: port-for sjekker dette ved å prøve å koble til port og å binde seg til det.
2. Port må være IANA tilordnet og ellers ikke kjent: dette er oppnådd ved å opprettholde tilordnet porter liste (analysert fra IANA og Wikipedia).
3. Port bør ikke være inne flyktige portområdet. Dette er viktig fordi porter fra flyktige portområdet kan tildeles midlertidig av OS (for eksempel ved maskinens IP stack) og dette kan hindre tjeneste restart i enkelte tilfeller. gimme_port returnerer ikke havner fra flyktige portområder som er konfigurert på nåværende maskin.
4. Andre heuristikk er også brukt: port-for prøver å returnere en port fra større portområder; det heller ikke returnere porter som er for nær velkjente porter.
Installasjon
System-wide:
sudo easy_install port-for
Script bruk
port-for
Dette verktøyet gjør faktisk ikke binde porten eller på annen måte hindrer porten fra å bli tatt av en annen programvare. Det er imidlertid prøver å velge en port som er mindre sannsynlighet for å bli brukt av en annen programvare (og det er ubrukt på tidspunktet for å ringe selvfølgelig). Utility gjør også at port-for bar ikke vil returnere samme port som port-for foo på samme maskin.
$ Sudo port-for foo
37987
$ Sudo port-for foo
37987
Du kan også være lurt å prefikset din app navn:
$ Sudo port-for instance1.apache
35456
Vær oppmerksom på at port-for manuset krever lese- og skrivetilgang til /etc/port-for.conf så sudo kan være nødvendig for å kunne kjøre den.
Bibliotek bruk
>>> Import port_for
>>> Port_for.select_random ()
37774
>>> Port_for.select_random ()
48324
>>> 80 i port_for.available_good_ports ()
False
. Grave i kildekoden for mer
Krav :
- Python
Kommentarer ikke funnet