आप भी इस तरह अगले-उच्चतम उपलब्ध कुछ पायथन में बंदरगाह कर रही पर सेवा कर सकते हैं:
import SimpleHTTPServer
import SocketServer
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
port = 8000
while True:
try:
httpd = SocketServer.TCPServer(('', port), Handler)
print 'Serving on port', port
httpd.serve_forever()
except SocketServer.socket.error as exc:
if exc.args[0] != 48:
raise
print 'Port', port, 'already in use'
port += 1
else:
break
आप अन्य उपयोगिताओं के लिए एक ही बात करने की ज़रूरत है, यह एक bash स्क्रिप्ट के रूप में और अधिक सुविधाजनक हो सकता है :
#!/usr/bin/env bash
MIN_PORT=${1:-1025}
MAX_PORT=${2:-65535}
(netstat -atn | awk '{printf "%s\n%s\n", $4, $4}' | grep -oE '[0-9]*$'; seq "$MIN_PORT" "$MAX_PORT") | sort -R | head -n 1
सेट है कि नाम get-free-port
के साथ एक निष्पादन योग्य के रूप में है और आप कुछ इस तरह कर सकते हैं:
someprogram --port=$(get-free-port)
यह देशी पायथन दृष्टिकोण के रूप में विश्वसनीय नहीं है क्योंकि बैश स्क्रिप्ट पोर्ट को कैप्चर नहीं करती है - आपकी प्रक्रिया से पहले एक और प्रक्रिया बंदरगाह पकड़ सकती है (दौड़ की स्थिति) - लेकिन उपयोगिता का उपयोग करते समय भी उपयोगी हो सकता है जिसमें अपने स्वयं के प्रयास-प्रयास-दृष्टिकोण नहीं हैं।
स्रोत
2015-09-21 14:31:06
मारने अन्य प्रक्रिया को मारने या एक अलग पोर्ट के साथ इस एक चलाएँ: 'अजगर -m SimpleHTTPServer 8081' – Blender