Paramiko Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Paramiko Script
# 1  
Old 09-02-2014
Paramiko Script

Hi Geeks,

I have the following python script.

Code:
#!/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.

Code:
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:

Code:
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


Any help will be appreciated
# 2  
Old 09-02-2014
Are you sure, just passing pdc_kpi.pl will execute the perl script
# 3  
Old 09-02-2014
Yes...

But after a while...The code below seems to be working now:

Code:
#!/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 --line-buffered -A 4 sgsn_g | head -5 | tail -1 | awk '{print $3}' | sed 's/[%]//g'")

a = stdout.read().strip()

print a

# 4  
Old 09-02-2014
@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.

Code:
jaysunn-> cat pytest.py 
import sys
import os

script = sys.argv[0]

user = sys.argv[1]

password = sys.argv[2]

print(script,user,password)

Code:
jaysunn-> python pytest.py jaysunn password
('pytest.py', 'jaysunn', 'password')

Where as 1,2,3 contains the correct information.

Code:
jaysunn-> cat pytest.py 
import sys
import os

arg1 = sys.argv[1]

user = sys.argv[2]

password = sys.argv[3]

print(arg1,user,password)

Code:
jaysunn-> python pytest.py arg1 jaysunn password
('arg1', 'jaysunn', 'password')

# 5  
Old 09-03-2014
@Jaysun --- Spot On! You were right!

But now I have the following code:

Code:
#!/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.
# 6  
Old 09-03-2014
DISCLAIMER, I am learning PYTHON as well. Just a thought try the following for variable expansion.

Change red in all string expansions:
Code:
if gsm_att <= "0.5":
     print "OK - GSM Attach KPI is " + str(gsm_att) + "and it is within target." % gsm_att     
     sys.exit(0)

TO:
Code:
if gsm_att <= "0.5":
     print "OK - GSM Attach KPI is " + '%s' + "and it is within target." % gsm_att
     sys.exit(0)

# 7  
Old 09-03-2014
Thanks...

This next one seems challenging

Code:
stdin, stdout, stderr = ssh.exec_command("cat /gsn/pdp/ojota/pdp_fail/web/`date | awk '{ print $2"-"$3"-"$6 }'`pdp_failure.txt | tail -1 | awk '{print $19}'")

But this gives the following error:

Code:
Traceback (most recent call last):
  File "pdp_act_web.py", line 23, in ?
    stdin, stdout, stderr = ssh.exec_command("cat /gsn/pdp/ojota/pdp_fail/web/`date | awk '{ print $2"-"$3"-"$6 }'`pdp_failure.txt | tail -1 | awk '{print $19}'")
TypeError: unsupported operand type(s) for -: 'str' and 'str'

Any idea Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Programming

Python Paramiko multi threading to capture all output for command applied in loop

My issue : I am getting only last command output data in ouput file. Though comamnd "print(output)" displays data for all 3rd column values but the data saved in file is not what required it hs to be the same which is being printed by command"print(output)". Could you please help me to fix this,... (0 Replies)
Discussion started by: as7951
0 Replies

2. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

3. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

4. Shell Programming and Scripting

sed command inside paramiko python

Hi I am trying to execute a sed command inside paramiko which finds and deletes the particular string from a file But sed command doesnt work inside paramiko python machine=qwe dssh = paramiko.SSHClient() dssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ... (4 Replies)
Discussion started by: Priya Amaresh
4 Replies

5. Shell Programming and Scripting

[Python] Search a file with paramiko

I need to compare the output files in a directory for sftp, looking through a mask. Return the full file name. Eg. I have a file named locally: test.txt I must check through sftp, if a file with the following name: test_F060514_H173148.TXT My idea is for the filename to a... (0 Replies)
Discussion started by: Jomeaide
0 Replies

6. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

7. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

8. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question