test_tools
remote_data_collector.py
Go to the documentation of this file.
1 #!/usr/bin/python
2 
3 """Remote Data collector
4 
5 Usage:
6  remote_data_collector.py <name> <start_time> <end_time> <remotes>...
7  remote_data_collector.py (-h | --help)
8  remote_data_collector.py --version
9 
10 Examples:
11  remote_data_collector.py reo2016_challenge_navigation 15:30 15:40 amigo1 amigo2 amigo3
12  remote_data_collector.py rwc_2016_challenge_restaurant 15:30 now sergio1 sergio2 sergi3
13  remote_data_collector.py rwc_2016_challenge_speech_recognition 15:30 17:40 localhost
14 
15 Options:
16  -h --help Show this screen.
17 
18 """
19 
20 from __future__ import print_function
21 
22 import os
23 from datetime import datetime
24 from docopt import docopt
25 
26 from util import parse_start_end
27 
28 
29 def del_empty_dirs(s_dir):
30  b_empty = True
31 
32  for s_target in os.listdir(s_dir):
33  s_path = os.path.join(s_dir, s_target)
34  if os.path.isdir(s_path):
35  if not del_empty_dirs(s_path):
36  b_empty = False
37  else:
38  b_empty = False
39 
40  if b_empty:
41  print('del: %s' % s_dir)
42  os.rmdir(s_dir)
43 
44 if __name__ == '__main__':
45  now = datetime.now()
46  now_str = now.strftime("%Y-%m-%d_%H-%M-%S")
47 
48  arguments = docopt(__doc__, version='Data Collector 1.0')
49 
50  start, end = parse_start_end(arguments, now)
51  name = arguments["<name>"]
52  remotes = arguments["<remotes>"]
53 
54  print("I am going to collect data for '%s' on '%s'" % (name, remotes))
55  print("Datetime: [%s <--> %s]" % (start.strftime("%Y-%m-%d %H:%M"), end.strftime("%Y-%m-%d %H:%M")))
56 
57  # Create dir if exist
58  if not os.path.exists(name):
59  os.makedirs(name)
60 
61  for remote in remotes:
62  dir_name = name + "/" + remote
63 
64  # Create dir if exist
65  if not os.path.exists(dir_name):
66  os.makedirs(dir_name)
67 
68  remote_dir_name = "/tmp/%s" % now_str
69 
70  cmd = "rosrun test_tools data_collector.py %s %s %s --go" % (remote_dir_name, start.strftime("%H:%M"), end.strftime("%H:%M"))
71  print(">> %s" % cmd)
72 
73  os.system("ssh %s 'source ~/.tue/setup.bash && %s'" % (remote, cmd))
74 
75  cp_cmd = "scp -r %s:%s/* %s" % (remote, remote_dir_name, dir_name)
76  print(">> %s" % cp_cmd)
77 
78  os.system(cp_cmd)
79 
80  del_empty_dirs(name)
util.parse_start_end
def parse_start_end(args, current)
Definition: util.py:18
remote_data_collector.del_empty_dirs
def del_empty_dirs(s_dir)
Definition: remote_data_collector.py:29