#!/usr/bin/env python
# Import some needed modules
import socket
import re
import sys
import csv
# Function that will take input of a customer name an ip address and a port number
# It will attempt to open a socket to that IP/port and report on success or failure
def test_connection(customer, address, port):
# Create a TCP socket
s = socket.socket()
# Set the socket timeout to 10 seconds
s.settimeout(15)
msg1 = "Attempting to connect to customer %s on IP %s and port %s" % (customer, address, port)
print msg1
try:
s.connect((address, port))
msg2 = "Connection to customer [ %s ] on IP [ %s ] and port [ %s ] was [ OK ]" % (customer, address, port)
pl = print_and_log_this(msg2)
# If we can connect return True
return True
except socket.error, e:
# If we can't connect and get an error return False
msg3 = "Connection to customer [ %s ] on IP [ %s ] and port [ %s ] has [ FAILED ] with error [ %s ]" % (customer, address, port, e)
pl = print_and_log_this(msg3)
return False
s.close()
# Function to print a message on screen and append it to a log file
def print_and_log_this (message):
print message
logfile = open("testipandportlog.txt", "a")
logentry = message + "\n"
logfile.write(logentry)
logfile.close()
# Main fucntion of the program (program starts here)
if __name__ == '__main__':
# Read in lines from the csv file, each line should have the following information
# Customer-name,IP-address,Port-number
# For each line in the CSV use the fuction created above to check connectivity
data = open("data.csv", "rb")
reader = csv.reader(data)
for line in reader:
c = line[0]
a = line[1]
p = eval(line[2]) # convert string to int
check = test_connection(c, a, p)
# Close our handle on the file
data.close()
#exit()
Wednesday, 10 July 2013
python script to test VPN connectivity opens socket to IP addresses and ports
Quick script I wrote to test VPN connections. It reads in a list (data.csv) of IP's and ports and attempts to open a socket to them, then reports the result.
Labels:
networking,
python,
scripting,
vpn
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment