-
Notifications
You must be signed in to change notification settings - Fork 12.3k
/
ping_servers.py
91 lines (79 loc) · 3.56 KB
/
ping_servers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from __future__ import print_function
import os # Load the Library Module
import subprocess # Load the Library Module
import sys # Load the Library Module
# Script Name : ping_servers.py
# Author : Craig Richards
# Created : 9th May 2012
# Last Modified : 14th May 2012
# Version : 1.1
# Modifications : 1.1 - 14th May 2012 - CR Changed it to use the config directory to store the server files
# Description : This script will, depending on the arguments supplied will ping the
# servers associated with that application group.
filename = sys.argv[0] # Sets a variable for the script name
if (
"-h" in sys.argv or "--h" in sys.argv or "-help" in sys.argv or "--help" in sys.argv
): # Help Menu if called
print(
"""
You need to supply the application group for the servers you want to ping, i.e.
dms
swaps
Followed by the site i.e.
155
bromley"""
)
sys.exit(0)
else:
if (
len(sys.argv) < 3
): # If no arguments are passed,display the help/instructions on how to run the script
sys.exit(
"\nYou need to supply the app group. Usage : "
+ filename
+ " followed by the application group i.e. \n \t dms or \n \t swaps \n "
"then the site i.e. \n \t 155 or \n \t bromley"
)
appgroup = sys.argv[1] # Set the variable appgroup as the first argument you supply
site = sys.argv[2] # Set the variable site as the second argument you supply
if os.name == "posix": # Check the os, if it's linux then
myping = "ping -c 2 " # This is the ping command
elif os.name in ("nt", "dos", "ce"): # Check the os, if it's windows then
myping = "ping -n 2 " # This is the ping command
if "dms" in sys.argv: # If the argument passed is dms then
appgroup = "dms" # Set the variable appgroup to dms
elif "swaps" in sys.argv: # Else if the argment passed is swaps then
appgroup = "swaps" # Set the variable appgroup to swaps
if "155" in sys.argv: # If the argument passed is 155 then
site = "155" # Set the variable site to 155
elif "bromley" in sys.argv: # Else if the argument passed is bromley
site = "bromley" # Set the variable site to bromley
logdir = os.getenv("logs") # Set the variable logdir by getting the OS environment logs
logfile = (
"ping_" + appgroup + "_" + site + ".log"
) # Set the variable logfile, using the arguments passed to create the logfile
logfilename = os.path.join(
logdir, logfile
) # Set the variable logfilename by joining logdir and logfile together
confdir = os.getenv(
"my_config"
) # Set the variable confdir from the OS environment variable - 1.2
conffile = appgroup + "_servers_" + site + ".txt" # Set the variable conffile - 1.2
conffilename = os.path.join(
confdir, conffile
) # Set the variable conffilename by joining confdir and conffile together - 1.2
f = open(logfilename, "w") # Open a logfile to write out the output
for server in open(conffilename): # Open the config file and read each line - 1.2
ret = subprocess.call(
myping + server, shell=True, stdout=f, stderr=subprocess.STDOUT
) # Run the ping command for each server in the list.
if ret == 0: # Depending on the response
f.write(
server.strip() + " is alive" + "\n"
) # Write out that you can receive a reponse
else:
f.write(
server.strip() + " did not respond" + "\n"
) # Write out you can't reach the box
print("\n\tYou can see the results in the logfile : " + logfilename)
# Show the location of the logfile