]>
Commit | Line | Data |
---|---|---|
3e67e5c9 | 1 | #!/usr/bin/env python3 |
d3b7fd54 ZJS |
2 | import sys |
3 | import argparse | |
4 | ||
5 | PARSER = argparse.ArgumentParser() | |
6 | PARSER.add_argument('n', type=int) | |
7 | PARSER.add_argument('--dots', action='store_true') | |
757ed4fd ZJS |
8 | PARSER.add_argument('-m', '--message-size', type=int, default=200) |
9 | PARSER.add_argument('-d', '--data-size', type=int, default=4000) | |
2c1a55cf | 10 | PARSER.add_argument('--data-type', choices={'random', 'simple'}) |
d3b7fd54 ZJS |
11 | OPTIONS = PARSER.parse_args() |
12 | ||
13 | template = """\ | |
14 | __CURSOR=s=6863c726210b4560b7048889d8ada5c5;i=3e931;b=f446871715504074bf7049ef0718fa93;m={m:x};t=4fd05c | |
15 | __REALTIME_TIMESTAMP={realtime_ts} | |
16 | __MONOTONIC_TIMESTAMP={monotonic_ts} | |
17 | _BOOT_ID=f446871715504074bf7049ef0718fa93 | |
18 | _TRANSPORT=syslog | |
19 | PRIORITY={priority} | |
20 | SYSLOG_FACILITY={facility} | |
21 | SYSLOG_IDENTIFIER=/USR/SBIN/CRON | |
22 | MESSAGE={message} | |
23 | _UID=0 | |
24 | _GID=0 | |
25 | _MACHINE_ID=69121ca41d12c1b69a7960174c27b618 | |
26 | _HOSTNAME=hostname | |
27 | SYSLOG_PID=25721 | |
28 | _PID=25721 | |
29 | _SOURCE_REALTIME_TIMESTAMP={source_realtime_ts} | |
30 | DATA={data} | |
31 | """ | |
32 | ||
00d5eaaf | 33 | m = 0x198603b12d7 |
d3b7fd54 ZJS |
34 | realtime_ts = 1404101101501873 |
35 | monotonic_ts = 1753961140951 | |
36 | source_realtime_ts = 1404101101483516 | |
37 | priority = 3 | |
38 | facility = 6 | |
39 | ||
40 | src = open('/dev/urandom', 'rb') | |
41 | ||
42 | bytes = 0 | |
2c1a55cf | 43 | counter = 0 |
d3b7fd54 ZJS |
44 | |
45 | for i in range(OPTIONS.n): | |
757ed4fd ZJS |
46 | message = src.read(OPTIONS.message_size) |
47 | message = repr(message)[2:-1] | |
48 | ||
2c1a55cf ZJS |
49 | if OPTIONS.data_type == 'random': |
50 | data = repr(src.read(OPTIONS.data_size)) | |
51 | else: | |
52 | # keep the pattern non-repeating so we get a different blob every time | |
53 | data = '{:0{}}'.format(counter, OPTIONS.data_size) | |
54 | counter += 1 | |
d3b7fd54 ZJS |
55 | |
56 | entry = template.format(m=m, | |
57 | realtime_ts=realtime_ts, | |
58 | monotonic_ts=monotonic_ts, | |
59 | source_realtime_ts=source_realtime_ts, | |
60 | priority=priority, | |
61 | facility=facility, | |
62 | message=message, | |
63 | data=data) | |
64 | m += 1 | |
65 | realtime_ts += 1 | |
66 | monotonic_ts += 1 | |
67 | source_realtime_ts += 1 | |
68 | ||
69 | bytes += len(entry) | |
70 | ||
71 | print(entry) | |
72 | ||
73 | if OPTIONS.dots: | |
74 | print('.', file=sys.stderr, end='', flush=True) | |
75 | ||
76 | if OPTIONS.dots: | |
00d5eaaf | 77 | print(file=sys.stderr) |
d3b7fd54 | 78 | print('Wrote {} bytes'.format(bytes), file=sys.stderr) |