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
|
##
## NetApp Filer 'common' Module
##
## Copyright 2008, Red Hat, Inc
## John Eckersberg <jeckersb@redhat.com>
##
## This software may be freely redistributed under the terms of the GNU
## general public license.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
import re
import sub_process
SSH = '/usr/bin/ssh'
SSH_USER = 'root'
SSH_OPTS = '-o forwardagent=no'
class GenericSSHError(Exception): pass
class NetappCommandError(Exception): pass
def ssh(host, cmdargs, input=None, user=SSH_USER):
cmdline = [SSH, SSH_OPTS, "%s@%s" % (user, host)]
cmdline.extend(cmdargs)
cmd = sub_process.Popen(cmdline,
executable=SSH,
stdin=sub_process.PIPE,
stdout=sub_process.PIPE,
stderr=sub_process.PIPE,
shell=False)
(out, err) = cmd.communicate(input)
if cmd.wait() != 0:
raise GenericSSHError, err
else:
return out + err
def check_output(regex, output):
#strip newlines
output = output.replace('\n', ' ')
if re.search(regex, output):
return True
else:
raise NetappCommandError, output
|