Some of the repetitive violations were suppressed.
2.71KiB; Python | 2018-01-28 18:59:31+01 | SLOC 67
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
import thread
37 1
import time
38 1
import socket
39
40
def ssh(user, ip, cmd):
41
    # print cmd;
42
    ssh_options = ""
43
    ssh_options += "-o StrictHostKeyChecking=no "
44
    ssh_options += "-o UserKnownHostsFile=/dev/null "
45
    ssh_options += "-o LogLevel=quiet "
46 1
    running = os.popen("ssh " + ssh_options + " " + user + "@" + ip + " \"" + cmd + "\"");
47 1
    ret = {};
48 1
    ret['out'] = running.read().strip();
49 1
    ret['ret'] = running.close();
50 1
    if (ret['ret'] == None):
51 1
        ret['ret'] = 0;
52
53 1
    return ret;
54
55
def ssh_check_quit(obj, user, ip, cmd):
56 1
    ret = ssh(user, ip, cmd);
57 1
    if (ret['ret'] != 0):
58 2
        obj._err = True;
59 2
        obj._err_str = ret['out'];
60 1
        exit(-1);
61
62
class remote_system:
63
    def __init__(self, user, ip):
64
        self._ip          = ip;
65
        self._user        = user;
66
    def run(self, cmd):
67
        return ssh(self._user, self._ip, cmd);
68
    def run_forked(self, cmd):
69
        thread.start_new_thread(ssh, (self._user, self._ip, cmd));
70
        return 0;
71
    def scp(self, src, dst):
72
        running = os.popen("scp " + self._user + "@" + self._ip + ":" + src + " " + dst);
73
        return running.close();