#!/usr/bin/python
#Script to pull KPI values from MMEs.
import paramiko
import sys
import os
host = sys.argv[0]
user = sys.argv[1]
password = sys.argv[2]
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('host', username='user', password='password')
stdin, stdout, stderr = ssh.exec_command(pdc_kpi.pl | grep -A 4 sgsn_g | head -5 | tail -1 | awk '{print $3}' | sed 's/[%]//g')
a = stdout.readlines()
print a
I want to pass the argument for HOST, USERNAME, PASSWORD from the shell because I will be using this for several servers but it seems sys.argv is giving errors.
sh-3.2$ python pcn_test.py 192.168.12.66 GbeAdi gbenga123
Traceback (most recent call last):
File "pcn_test.py", line 17, in ?
ssh.connect(host, username='user', password='password')
File "/usr/lib/python2.4/site-packages/paramiko/client.py", line 278, in connect
for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM):
socket.gaierror: (-2, 'Name or service not known')
Also GREP is complaining:
File "pcn_test.py", line 20
stdin, stdout, stderr = ssh.exec_command(pdc_kpi.pl | grep --line-buffered -A 4 sgsn_g | head -5 | tail -1 | awk '{print $3}' | sed 's/[%]//g')
^
SyntaxError: invalid syntax
@infinitydon,
I believe your script failed at first cause the sys.argv[0] contains the actual script name itself, python utilizes 0,1,2,3 as arguments.
jaysunn-> cat pytest.py
import sys
import os
script = sys.argv[0]
user = sys.argv[1]
password = sys.argv[2]
print(script,user,password)
#!/usr/bin/python
#Script to pull KPI values from MMEs.
import paramiko
import sys
import os
host = sys.argv[1]
user = sys.argv[2]
password = sys.argv[3]
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=password)
stdin, stdout, stderr = ssh.exec_command("pdc_kpi.pl | grep -A 4 sgsn_g | head -5 | tail -1 | awk '{print $3}' | | sed 's/[%]//g'")
gsm_att = stdout.read().strip()
#Test for whether KPI are within acceptable limit, also this gives Nagios the Necessary EXIT codes
if gsm_att <= "0.5":
print "OK - GSM Attach KPI is " + str(gsm_att) + "and it is within target." % gsm_att
sys.exit(0)
elif gsm_att > "0.5" and gsm_att <= "0.99":
print "WARNING - GSM Attach KPI is " + str(gsm_att) + "and it is approaching target." % gsm_att
sys.exit(1)
elif gsm_att > "1.0":
print "CRITICAL - GSM Attach KPI is " + str(gsm_att) + " and it is degraded, kindly investigate." % gsm_att
sys.exit(2)
else:
print "UNKNOWN - Kindly check the settings or Node Connectivity." % gsm_att
sys.exit(3)
ssh.close()
But the script is giving the following error:
Traceback (most recent call last):
File "pcn_test2.py", line 26, in ?
print "OK - GSM Attach KPI is " + str(gsm_att) + "and it is within target." % gsm_att
TypeError: not all arguments converted during string formatting
N.B -- Am writing this so that I can use it in nagios/centreon.