Initial commit
[ta/monitoring.git] / src / keepalivedmonitor.py
1 #! /usr/bin/python
2
3 # Copyright 2019 Nokia
4
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 import socket
18 import select
19 import os
20 import errno
21 import sys
22
23 if __name__ == '__main__':
24     host = socket.gethostname()
25     ip = socket.gethostbyname(host)
26     port = int(sys.argv[1])
27
28     print("Starting listening to port %d" % port)
29
30     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
31     s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
32     s.setblocking(0)
33     s.bind((ip, port))
34     s.listen(1)
35     inputs = [s]
36     while True:
37         try:
38             readable, _, _ = select.select(inputs, [], [])
39             for f in readable:
40                 if f is s:
41                     client, address = s.accept()
42                     client.setblocking(0)
43                     inputs.append(client)
44                     #print("Accepted connection from %r, total inputs %d" % (address, len(inputs)))
45                 else:
46                     try:
47                         result = f.recv()
48                         if not result:
49                             inputs.remove(f)
50                     except Exception as exp:
51                         inputs.remove(f)
52         except (SystemExit, KeyboardInterrupt):
53             break
54         except select.error as ex:
55             if ex.args[0] == errno.EINTR:
56                 break
57
58     print("Stopping...")