1 |
|
#!/bin/env python
|
2 |
|
|
3 |
|
##
|
4 |
|
# Copyright(c) 2010-2015 Intel Corporation.
|
5 |
|
# Copyright(c) 2016-2018 Viosoft Corporation.
|
6 |
|
# All rights reserved.
|
7 |
|
#
|
8 |
|
# Redistribution and use in source and binary forms, with or without
|
9 |
|
# modification, are permitted provided that the following conditions
|
10 |
|
# are met:
|
11 |
|
#
|
12 |
|
# * Redistributions of source code must retain the above copyright
|
13 |
|
# notice, this list of conditions and the following disclaimer.
|
14 |
|
# * Redistributions in binary form must reproduce the above copyright
|
15 |
|
# notice, this list of conditions and the following disclaimer in
|
16 |
|
# the documentation and/or other materials provided with the
|
17 |
|
# distribution.
|
18 |
|
# * Neither the name of Intel Corporation nor the names of its
|
19 |
|
# contributors may be used to endorse or promote products derived
|
20 |
|
# from this software without specific prior written permission.
|
21 |
|
#
|
22 |
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
23 |
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
24 |
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
25 |
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
26 |
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
27 |
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
28 |
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
29 |
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
30 |
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
31 |
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
32 |
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
33 |
|
##
|
34 |
|
|
35 |
|
import os
|
36 |
1
|
import time
|
37 |
1
|
import socket
|
38 |
|
|
39 |
|
def ssh(user, ip, cmd):
|
40 |
|
# print cmd;
|
41 |
|
ssh_options = ""
|
42 |
|
ssh_options += "-o StrictHostKeyChecking=no "
|
43 |
|
ssh_options += "-o UserKnownHostsFile=/dev/null "
|
44 |
|
ssh_options += "-o LogLevel=quiet "
|
45 |
1
|
running = os.popen("ssh " + ssh_options + " " + user + "@" + ip + " \"" + cmd + "\"");
|
46 |
1
|
ret = {};
|
47 |
1
|
ret['out'] = running.read().strip();
|
48 |
1
|
ret['ret'] = running.close();
|
49 |
1
|
if (ret['ret'] == None):
|
50 |
1
|
ret['ret'] = 0;
|
51 |
|
|
52 |
1
|
return ret;
|
53 |
|
|
54 |
|
def ssh_check_quit(obj, user, ip, cmd):
|
55 |
1
|
ret = ssh(user, ip, cmd);
|
56 |
1
|
if (ret['ret'] != 0):
|
57 |
2
|
obj._err = True;
|
58 |
2
|
obj._err_str = ret['out'];
|
|
59 |
1
|
exit(-1);
|
60 |
|
|
61 |
|
class remoteSystem:
|
62 |
|
def __init__(self, user, ip):
|
63 |
|
self._ip = ip;
|
64 |
|
self._user = user;
|
65 |
|
|
66 |
|
def run(self, cmd):
|
67 |
|
return ssh(self._user, self._ip, cmd);
|
68 |
|
|
69 |
|
def scp(self, src, dst):
|
70 |
|
running = os.popen("scp " + self._user + "@" + self._ip + ":" + src + " " + dst);
|
71 |
|
return running.close();
|
72 |
|
|
73 |
|
def getIP(self):
|
74 |
|
return self._ip
|