The following instructions show how to automatically monitor your TURM server and restart it during the downtime.
1. Install pexpect lib in Python
sudo pip install pexpect --upgrade
2. Edit MonitorStun.py
- Telnet your TURN Serer
- If it is down, ssh to your server and restart it
#!/usr/bin/env python
import socket
import subprocess
import sys
from datetime import datetime
from pexpect import pxssh
# SSH TO TURN SERVER and restart it
def connect_turn_server():
s = pxssh.pxssh()
if not s.login ('TURN Server IP', 'SERVER PORT', 'ACCOUNT', 'PASSWORD'):
print "SSH session failed on login."
print str(s)
else:
print "SSH session login TURN successful"
s.sendline ('sudo turnserver -c /usr/local/etc/turnserver.conf --daemo')
s.prompt() # match the prompt
print s.before # print everything before the prompt.
s.logout()
# Telnet TURN Server to check it is alive or not on PORT 3478 or 3479
# Clear the screen
subprocess.call('clear', shell=True)
# Ask for input
remoteServer = 'SERVER IP'
remoteServerIP = socket.gethostbyname(remoteServer)
# Print a nice banner with information on which host we are about to scan
print "-" * 60
print "Please wait, scanning remote host", remoteServerIP
print "-" * 60
# Check what time the scan started
t1 = datetime.now()
# Using the range function to specify ports (here it will scans all ports between 1 and 1024)
# We also put in some error handling for catching errors
try:
for port in range(3478,3479):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((remoteServerIP, port))
if result == 0:
print "Port {}: Open".format(port)
else:
print "TURN Server is down"
connect_turn_server()
print "restart TURN Server OK"
sock.close()
except KeyboardInterrupt:
print "You pressed Ctrl+C"
sys.exit()
except socket.error:
print "Couldn't connect to server"
sys.exit()
*/1 * * * * /your_path/monitorStun.py
Of course, you can apply this technique to monitor any services such as SIP Proxy with port 5060, Apache with port 80, or Tomcat with port 8080.
Please let me know if you're looking for a writer for your weblog. You have some really good posts and I think I would be a good asset. If you ever want to take some of the load off, I'd really like to write some material for your blog in exchange for a link back to mine. Please shoot me an email if interested. Regards!
ReplyDelete