I have this python script:
#!/usr/bin/python3
import socket
from daemonize import Daemonize
class ListenOnPort:
def __init__(self, port):
self.port = port
self.pid = f"./listen_on{port}.pid"
print(f"init port {port}")
def listen_on_port(self):
HOST = '' # Symbolic name meaning all available interfaces
PORT = int(self.port) # Arbitrary non-privileged port
print(f"listen_on_({PORT})")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
print(addr,conn)
def main(ports):
for port in ports:
print(f"doing port {port}")
l = ListenOnPort(port=port)
Daemonize(app=f"demon_{port}", pid=l.pid, action=l.listen_on_port).start()
print("main() exiting.")
if __name__ == '__main__':
main(ports=[50010,50020,50030])
I run it like this ...
$ python demon.py
... and I get output like this:
doing port 50010
init port 50010
And it is listening on port 50010 and creates the pid file.
$ ls -l listen_on*pid
-rw-r--r-- 1 redcricket staff 5 Mar 9 20:41 listen_on50010.pid
$ nc -zv 127.0.0.1 50010
localhost [127.0.0.1] 50010 open
But what happened to ports 50020 & 50030? Why does my script only do port 50010?