commit of tools I use, but are not documented or guaranteed to work for anyone
[monitor.git] / fetch.py
1 #!/usr/bin/python
2
3 import csv
4 import sys
5 import os
6 import config
7 from glob import glob
8
9 import vxargs
10 from config import config
11 from optparse import OptionParser
12 from automate import *
13
14 parser = OptionParser()
15 parser.set_defaults(nodelist=None, 
16                                         node=None,
17                                     outdir=None,
18                                         querystr=None,
19                                         timeout=0,
20                                         simple=False,
21                                         run=False,
22                                         cmdfile=None,)
23
24 parser.add_option("", "--nodelist", dest="nodelist", metavar="filename",
25                                         help="Read list of nodes from specified file")
26 parser.add_option("", "--node", dest="node", metavar="hostname",
27                                         help="specify a single node name.")
28 parser.add_option("", "--timeout", dest="timeout", metavar="seconds",
29                                         help="Number of seconds to wait before timing out on host.")
30 parser.add_option("", "--outdir", dest="outdir", metavar="dirname",
31                                         help="Name of directory to place output")
32 parser.add_option("", "--cmd", dest="cmdfile", metavar="filename",
33                                         help="Name of file that contains a unix-to-csv command " + \
34                                              "to run on the hosts.")
35
36 config = config(parser)
37 config.parse_args()
38
39 def build_vx_args(shell_cmd):
40         ssh_options="-q -o UserKnownHostsFile=junkssh -o StrictHostKeyChecking=no"
41         cmd="""ssh %s root@{} """  % ssh_options
42         args = cmd.split()
43         args.append(shell_cmd)
44         return args
45
46 def vx_start(filelist,outdir,cmd):
47         args = build_vx_args(cmd)
48         #vxargs.start(None, 10, filelist, outdir, False, args, 120)
49         vxargs.start(None, 10, filelist, outdir, False, args, int(config.timeout))
50
51 if config.outdir == None: 
52         outdir="checkhosts"
53 else: 
54         outdir=config.outdir
55
56 if not os.path.exists(outdir):
57         os.system('mkdir -p %s' % outdir)
58
59 if config.nodelist == None and config.node == None:
60         filelist="nocomon.txt"
61         filelist = vxargs.getListFromFile(open(filelist,'r'))
62 elif os.path.exists(str(config.nodelist)) and os.path.isfile(config.nodelist):
63         filelist = vxargs.getListFromFile(open(config.nodelist,'r'))
64 elif os.path.exists(str(config.nodelist)) and os.path.isdir(config.nodelist):
65         filelist = get_hostlist_from_dir(config.nodelist)
66 elif config.node is not None:
67         filelist = [(config.node, '')]
68 else:
69         # probably no such file.
70         raise Exception("No such file %s" % config.nodelist)
71
72 if config.cmdfile == None:
73         f = open("command.txt",'r')
74         cmd = f.read()
75 else:
76         f = open(config.cmdfile,'r')
77         cmd = f.read()
78
79 vx_start(filelist, outdir, cmd)