1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2026-04-03 17:44:07 +02:00

Compare commits

...

144 Commits

Author SHA1 Message Date
Kelly Brazil
339238ab36 version bump and add route -6 tests 2020-07-27 20:37:33 -07:00
Kelly Brazil
032cda8b3d Merge pull request #74 from kellyjonbrazil/dev
Dev v1.13.0
2020-07-27 19:12:21 -07:00
Kelly Brazil
6badd3fb1e add parser count test 2020-07-27 19:02:23 -07:00
Kelly Brazil
724d825745 add tracepath parser 2020-07-27 19:02:11 -07:00
Kelly Brazil
ff1e32ad2e version bump 2020-07-27 16:49:34 -07:00
Kelly Brazil
a5f97febd3 update traceroute, tracepath, and uname tests 2020-07-27 16:47:41 -07:00
Kelly Brazil
5baa6cc865 add route parser update 2020-07-27 15:44:13 -07:00
Kelly Brazil
7a4f30b843 fix for iface issue 2020-07-27 15:37:44 -07:00
Kelly Brazil
b2c385dc4f change 'if' to 'iface' 2020-07-27 15:30:09 -07:00
Kelly Brazil
5d5da8d33f more fixes for ipv6 fix 2020-07-27 15:27:11 -07:00
Kelly Brazil
e604571578 fix next_hop fix 2020-07-27 15:20:51 -07:00
Kelly Brazil
f9dacc3f95 fixup for ipv6 2020-07-27 15:18:13 -07:00
Kelly Brazil
6086920332 update ParseError message 2020-07-27 15:13:32 -07:00
Kelly Brazil
f52f3163bc add tracepath example 2020-07-27 13:57:58 -07:00
Kelly Brazil
d18ff73e88 update author info 2020-07-27 13:51:51 -07:00
Kelly Brazil
1e5d602cae working tracepath parser 2020-07-27 13:48:46 -07:00
Kelly Brazil
12912521ec doc update 2020-07-27 11:04:27 -07:00
Kelly Brazil
842ea3a94b add tracepath parser skeleton 2020-07-27 11:02:13 -07:00
Kelly Brazil
a8560dbc15 add tracepath 2020-07-27 11:01:57 -07:00
Kelly Brazil
a65e27540a update docs 2020-07-27 11:01:45 -07:00
Kelly Brazil
c3c5ed11e6 change name from tr to trparse 2020-07-27 10:33:40 -07:00
Kelly Brazil
ce24149335 formatting 2020-07-27 10:33:25 -07:00
Kelly Brazil
0314ca8c48 add trparse acknowledgement 2020-07-27 10:33:15 -07:00
Kelly Brazil
ebd8ee49a9 add key/value info to ini example 2020-07-27 10:28:15 -07:00
Kelly Brazil
38d10c9781 add ping and traceroute examples 2020-07-27 09:29:30 -07:00
Kelly Brazil
360106c24d add tracepath 2020-07-27 09:23:01 -07:00
Kelly Brazil
ca470a5d02 add tracepath fixtures 2020-07-27 09:20:00 -07:00
Kelly Brazil
57f66e6b1d add exception with hint to use "uname -a" 2020-07-27 09:19:48 -07:00
Kelly Brazil
e774f67924 turn off interpolation and coerce None to '' 2020-07-24 16:53:17 -07:00
Kelly Brazil
ac10e576c1 spelling 2020-07-24 16:29:27 -07:00
Kelly Brazil
bcae0a99cd add key/value to ini description 2020-07-24 16:23:45 -07:00
Kelly Brazil
c73c2ff879 add ping, traceroute, and ini update 2020-07-24 16:23:30 -07:00
Kelly Brazil
c39b1a3356 add ping, traceroute and update ini description 2020-07-24 16:17:51 -07:00
Kelly Brazil
125dc2d9e0 add info about key/value files to doc 2020-07-24 16:17:16 -07:00
Kelly Brazil
b7d4ddc7ce add tests for key/value files 2020-07-24 16:16:54 -07:00
Kelly Brazil
f5e546c6fa add support for simple key/value pairs 2020-07-24 16:16:24 -07:00
Kelly Brazil
928e39cd10 add generic traceroute tests 2020-07-24 14:16:41 -07:00
Kelly Brazil
d0b7ea68a0 check for key in dictionary 2020-07-24 13:47:47 -07:00
Kelly Brazil
8444690133 add traceroute 2020-07-24 13:47:29 -07:00
Kelly Brazil
c03c42d767 add traceroute tests 2020-07-24 13:47:23 -07:00
Kelly Brazil
ab67688a00 add test skeleton 2020-07-23 16:45:09 -07:00
Kelly Brazil
5dcb7166da add traceroute doc 2020-07-23 16:44:57 -07:00
Kelly Brazil
14697b86d7 add MIT license 2020-07-23 15:48:08 -07:00
Kelly Brazil
4f4b6276d4 update docstring 2020-07-23 15:46:22 -07:00
Kelly Brazil
7bc497e129 updated process() function to set integers and floats 2020-07-23 15:42:33 -07:00
Kelly Brazil
68a37a6a5a remove unused function load() 2020-07-23 12:48:33 -07:00
Kelly Brazil
6f5cd1d7c5 change to use f-string 2020-07-23 12:03:21 -07:00
Kelly Brazil
126b1b121c add traceroute6 example 2020-07-23 11:31:56 -07:00
Kelly Brazil
2341e456a0 use ParseError instead of generic Exception 2020-07-23 11:31:35 -07:00
Kelly Brazil
72d80e95bb remove unused regex patterns 2020-07-23 10:52:40 -07:00
Kelly Brazil
f5ec82440c simplify regex patterns 2020-07-23 10:19:56 -07:00
Kelly Brazil
c8e526ead3 fixes for bsd-style ipv6 output 2020-07-22 17:23:24 -07:00
Kelly Brazil
066adfb764 handle warning lines in the traceroute output 2020-07-22 15:02:02 -07:00
Kelly Brazil
5b444d4717 add traceroute parser 2020-07-22 12:19:27 -07:00
Kelly Brazil
69c95adc8d add osx ipv6 ping dup test 2020-07-22 09:06:11 -07:00
Kelly Brazil
2b0e0d8f5c add ipv6 dup test 2020-07-21 17:34:30 -07:00
Kelly Brazil
778d1bacbf update docs to add "duplicates" fields 2020-07-21 15:16:39 -07:00
Kelly Brazil
7e1b041016 add duplicate replies tests 2020-07-21 15:12:43 -07:00
Kelly Brazil
313b9b329c update fixtures for added 'duplicate' fields 2020-07-21 15:05:54 -07:00
Kelly Brazil
6830062256 add support for duplicate replies 2020-07-21 14:47:25 -07:00
Kelly Brazil
323072c982 add source_ip to schema doc 2020-07-21 09:02:44 -07:00
Kelly Brazil
8719d96bdd change description 2020-07-20 16:54:43 -07:00
Kelly Brazil
dd5d318ab5 version bump and add ping command 2020-07-20 16:25:20 -07:00
Kelly Brazil
d6dc7f5e65 add osx ping tests 2020-07-20 16:11:18 -07:00
Kelly Brazil
c203664eb5 freebsd ping tests 2020-07-20 15:46:27 -07:00
Kelly Brazil
19ecf1fa19 add Fedora32 tests 2020-07-20 14:35:41 -07:00
Kelly Brazil
b8deb0426c add ubuntu ping tests 2020-07-20 13:51:39 -07:00
Kelly Brazil
3b8371f020 add centos ping tests 2020-07-20 12:49:05 -07:00
Kelly Brazil
20bb1cdf39 add TypeError to except for None values 2020-07-20 11:53:06 -07:00
Kelly Brazil
301daa48d0 update documentation 2020-07-19 15:30:54 -07:00
Kelly Brazil
8421ec8803 remove cygwin compatibility 2020-07-19 15:19:47 -07:00
Kelly Brazil
74211eb012 add examples 2020-07-19 15:16:04 -07:00
Kelly Brazil
60bd42f298 add process() logic 2020-07-19 15:13:52 -07:00
Kelly Brazil
14bdd74526 add ping test fixtures 2020-07-19 14:46:02 -07:00
Kelly Brazil
fb0f3eda04 add ping commands 2020-07-19 14:45:50 -07:00
Kelly Brazil
91ee6e6701 add osx ping test fixtures 2020-07-19 14:18:56 -07:00
Kelly Brazil
51f4e6927c add support for pattern in osx/bsd 2020-07-19 14:18:40 -07:00
Kelly Brazil
94988d8667 add fedora ping fixtures 2020-07-19 13:50:40 -07:00
Kelly Brazil
fe36f5a98c add fixtures for ping 2020-07-19 12:56:53 -07:00
Kelly Brazil
f9eb18b927 change 'request_timeout' field to 'type', fix compatibility, other formatting fixes 2020-07-19 12:56:34 -07:00
Kelly Brazil
cc60f36748 add ping parser 2020-07-18 12:35:46 -07:00
Kelly Brazil
604ade791f add ping parser 2020-07-17 15:57:07 -07:00
Kelly Brazil
690ac52a91 add man page 2020-07-13 07:18:48 -07:00
Kelly Brazil
34ed772775 version bump 2020-07-11 09:46:47 -07:00
Kelly Brazil
d5ab95571f fix tests when using older versions of pygments 2020-07-11 09:44:08 -07:00
Kelly Brazil
ffb3a0ee5f Merge pull request #73 from kellyjonbrazil/dev
Dev v1.12.0
2020-07-10 16:34:56 -07:00
Kelly Brazil
94b12b57aa spelling 2020-07-10 16:30:08 -07:00
Kelly Brazil
6d149e8457 version bump 2020-07-10 16:25:03 -07:00
Kelly Brazil
1ad89c90d8 add pacman 2020-07-10 15:58:02 -07:00
Kelly Brazil
fb71c7b020 function name spelling 2020-07-10 15:49:35 -07:00
Kelly Brazil
28ed17ad3b add parser_count test to test_cli_about_jc 2020-07-10 15:45:21 -07:00
Kelly Brazil
0c2a4e2bf7 add cli tests 2020-07-10 15:35:05 -07:00
Kelly Brazil
62bec30de2 add json_out tests 2020-07-10 14:44:50 -07:00
Kelly Brazil
3fced77e4e add set_env_colors tests 2020-07-10 12:23:48 -07:00
Kelly Brazil
a09d1d8b76 move environment variable assignment to main() to simplify tests 2020-07-10 12:23:25 -07:00
Kelly Brazil
8f4243fbd8 formatting 2020-07-10 10:54:34 -07:00
Kelly Brazil
47aaf20549 add sysctl command parser 2020-07-10 10:50:51 -07:00
Kelly Brazil
0c5289ea50 add sysctl tests 2020-07-10 10:47:23 -07:00
Kelly Brazil
3e53323514 don't filter out empty lines 2020-07-10 09:58:56 -07:00
Kelly Brazil
a5ee9861b9 update fixtures 2020-07-10 09:28:32 -07:00
Kelly Brazil
feb8ca7654 spelling 2020-07-10 09:28:20 -07:00
Kelly Brazil
a7abe4473b spelling 2020-07-10 09:03:04 -07:00
Kelly Brazil
780b9b61de specify IndexError exception in try/except block 2020-07-10 08:30:31 -07:00
Kelly Brazil
19ace36ffa add fixtures 2020-07-10 08:21:30 -07:00
Kelly Brazil
5fff8afc9f add fixes for freebsd where values can be on separate lines under the key 2020-07-10 08:21:15 -07:00
Kelly Brazil
4ad230c927 doc update and add test fixtures 2020-07-09 16:35:36 -07:00
Kelly Brazil
dd98eb1ec8 append duplicate key values to original key instead of adding unique keys 2020-07-09 16:25:41 -07:00
Kelly Brazil
c6baf42e72 doc updates 2020-07-09 16:18:33 -07:00
Kelly Brazil
e2bac97d56 fix for multiple identical keys in sysctl output 2020-07-09 14:51:15 -07:00
Kelly Brazil
d112ee94d0 use try/except and add support for floats in process() 2020-07-09 14:26:35 -07:00
Kelly Brazil
27b21b2faf formatting and docstring updates 2020-07-09 11:11:29 -07:00
Kelly Brazil
8c96d5cd20 reduce pygments version requirement 2020-07-09 10:59:36 -07:00
Kelly Brazil
c29ed3fd69 formatting of quotation marks and docstrings 2020-07-09 10:54:49 -07:00
Kelly Brazil
cedf603f12 minor formatting 2020-07-09 09:59:00 -07:00
Kelly Brazil
279161c36f Merge pull request #72 from duelafn/pygments-2.3
Support older pygments
2020-07-09 09:48:58 -07:00
Dean Serenevy
ce0b43d919 Remove dependency on 3rd party packaging library 2020-07-09 12:44:41 -04:00
Dean Serenevy
ddafa5bf06 Support older pygments 2020-07-09 11:39:34 -04:00
Kelly Brazil
bc7116c31b fix JC_COLORS env bug and simplify set_env_colors() 2020-07-09 08:30:10 -07:00
Kelly Brazil
53b7092721 remove side-effects from functions and print in main() 2020-07-08 16:40:28 -07:00
Kelly Brazil
beb9174b1b add sysctl parser 2020-07-08 15:42:06 -07:00
Kelly Brazil
aea41ed341 move verbose_debug enable earlier in code to catch more issues. add sysctl and version bump 2020-07-08 15:41:46 -07:00
Kelly Brazil
d789494cb1 change type check to use isinstance 2020-07-08 05:59:19 -07:00
Kelly Brazil
608e7b4cff add license info 2020-07-06 10:52:12 -07:00
Kelly Brazil
4ee199c02a use tracebackplus instead of cgitb since cgitb is depricated 2020-07-06 10:41:01 -07:00
Kelly Brazil
fbf47d4085 add arch linux 2020-07-01 13:28:58 -07:00
Kelly Brazil
5a238e4b42 remove updates-testing from fedora command 2020-07-01 09:11:32 -07:00
Kelly Brazil
f852b8246a wrap warning message 2020-06-30 11:50:37 -07:00
Kelly Brazil
88140d929a wrap error message in code 2020-06-30 11:37:33 -07:00
Kelly Brazil
45f7268240 add -dd to error message 2020-06-30 11:34:08 -07:00
Kelly Brazil
3a3c8e4d4a move verbose_debug under debug check 2020-06-30 11:31:08 -07:00
Kelly Brazil
c1ac183a04 simplify debug option 2020-06-30 11:26:09 -07:00
Kelly Brazil
18bb779ee5 formatting: double quotes to single quotes 2020-06-30 09:39:05 -07:00
Kelly Brazil
8b6612fe79 move JC_COLORS parsing error message 2020-06-30 07:56:34 -07:00
Kelly Brazil
fde0bc8534 improve package install info 2020-06-27 18:53:19 -07:00
Kelly Brazil
e661a78939 Merge pull request #71 from wigust/guix
add guix package info
2020-06-27 18:43:02 -07:00
Oleg Pykhalov
847e346602 add guix package info 2020-06-27 13:01:56 +03:00
Kelly Brazil
b969751688 add other references 2020-06-26 09:53:57 -07:00
Kelly Brazil
ad6f2ba03a formatting 2020-06-25 21:16:52 -07:00
Kelly Brazil
63c6a5edc0 formatting 2020-06-25 21:12:30 -07:00
Kelly Brazil
9f4cf9dd5e formatting 2020-06-25 21:11:21 -07:00
Kelly Brazil
51331b6dc0 formatting 2020-06-25 13:01:10 -07:00
Kelly Brazil
efb6761033 formatting 2020-06-25 12:59:56 -07:00
Kelly Brazil
6a4f737a0f update json syntax highlighting 2020-06-25 12:56:06 -07:00
Kelly Brazil
be6864b778 add syntax highlighting tags 2020-06-25 12:28:23 -07:00
200 changed files with 12796 additions and 267 deletions

669
README.md

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,26 @@
jc changelog
20200727 v1.13.1
- Add route -6 tests
20200727 v1.13.0
- Add ping and ping6 command parser tested on linux, macos, and freebsd
- Add traceroute and traceroute6 command parser tested on linux, macos, and freebsd
- Add tracepath command parser tested on linux
- Update ini parser to support files only containing key/value pairs
- Update uname parser exception with a hint to use "uname -a"
- Update route parser to support IPv6 tables
20200711 v1.12.1
- Fix tests when using older version of pygments library
20200710 v1.12.0
- Add sysctl command parser tested on linux, macOS, and freebsd
- Update the cli code to allow older versions of the pygments library (2.3.0) for debian packaging
- Code cleanup on the cli
- Add tests for the cli
- Vendorize cgitb as tracebackplus for verbose debug messages
20200625 v1.11.8
- Add verbose debug option using -dd argument

View File

@@ -37,6 +37,7 @@ pydocmd simple jc.parsers.mount+ > ../docs/parsers/mount.md
pydocmd simple jc.parsers.netstat+ > ../docs/parsers/netstat.md
pydocmd simple jc.parsers.ntpq+ > ../docs/parsers/ntpq.md
pydocmd simple jc.parsers.passwd+ > ../docs/parsers/passwd.md
pydocmd simple jc.parsers.ping+ > ../docs/parsers/ping.md
pydocmd simple jc.parsers.pip_list+ > ../docs/parsers/pip_list.md
pydocmd simple jc.parsers.pip_show+ > ../docs/parsers/pip_show.md
pydocmd simple jc.parsers.ps+ > ../docs/parsers/ps.md
@@ -44,11 +45,14 @@ pydocmd simple jc.parsers.route+ > ../docs/parsers/route.md
pydocmd simple jc.parsers.shadow+ > ../docs/parsers/shadow.md
pydocmd simple jc.parsers.ss+ > ../docs/parsers/ss.md
pydocmd simple jc.parsers.stat+ > ../docs/parsers/stat.md
pydocmd simple jc.parsers.sysctl+ > ../docs/parsers/sysctl.md
pydocmd simple jc.parsers.systemctl+ > ../docs/parsers/systemctl.md
pydocmd simple jc.parsers.systemctl_lj+ > ../docs/parsers/systemctl_lj.md
pydocmd simple jc.parsers.systemctl_ls+ > ../docs/parsers/systemctl_ls.md
pydocmd simple jc.parsers.systemctl_luf+ > ../docs/parsers/systemctl_luf.md
pydocmd simple jc.parsers.timedatectl+ > ../docs/parsers/timedatectl.md
pydocmd simple jc.parsers.tracepath+ > ../docs/parsers/tracepath.md
pydocmd simple jc.parsers.traceroute+ > ../docs/parsers/traceroute.md
pydocmd simple jc.parsers.uname+ > ../docs/parsers/uname.md
pydocmd simple jc.parsers.uptime+ > ../docs/parsers/uptime.md
pydocmd simple jc.parsers.w+ > ../docs/parsers/w.md

View File

@@ -3,7 +3,9 @@ jc - JSON CLI output utility INI Parser
Usage:
specify --ini as the first argument if the piped input is coming from an INI file
Specify --ini as the first argument if the piped input is coming from an INI file or any
simple key/value pair file. Delimiter can be '=' or ':'. Missing values are supported.
Comment prefix can be '#' or ';'. Comments must be on their own line.
Compatibility:
@@ -61,11 +63,14 @@ Parameters:
Returns:
Dictionary representing an ini document:
Dictionary representing an ini or simple key/value pair document:
{
ini document converted to a dictionary
see configparser standard library documentation for more details
ini or key/value document converted to a dictionary - see configparser standard
library documentation for more details.
Note: Values starting and ending with quotation marks will have the marks removed.
If you would like to keep the quotation marks, use the -r or raw=True argument.
}
## parse

171
docs/parsers/ping.md Normal file
View File

@@ -0,0 +1,171 @@
# jc.parsers.ping
jc - JSON CLI output utility ping Parser
Usage:
specify --ping as the first argument if the piped input is coming from ping
Note: Use the ping -c (count) option, otherwise data will not be piped to jc.
Compatibility:
'linux', 'darwin', 'freebsd'
Examples:
$ ping -c 3 -p ff cnn.com | jc --ping -p
{
"destination_ip": "151.101.1.67",
"data_bytes": 56,
"pattern": "0xff",
"destination": "cnn.com",
"packets_transmitted": 3,
"packets_received": 3,
"packet_loss_percent": 0.0,
"duplicates": 0,
"round_trip_ms_min": 28.015,
"round_trip_ms_avg": 32.848,
"round_trip_ms_max": 39.376,
"round_trip_ms_stddev": 4.79,
"responses": [
{
"type": "reply",
"bytes": 64,
"response_ip": "151.101.1.67",
"icmp_seq": 0,
"ttl": 59,
"time_ms": 28.015,
"duplicate": false
},
{
"type": "reply",
"bytes": 64,
"response_ip": "151.101.1.67",
"icmp_seq": 1,
"ttl": 59,
"time_ms": 39.376,
"duplicate": false
},
{
"type": "reply",
"bytes": 64,
"response_ip": "151.101.1.67",
"icmp_seq": 2,
"ttl": 59,
"time_ms": 31.153,
"duplicate": false
}
]
}
$ ping -c 3 -p ff cnn.com | jc --ping -p -r
{
"destination_ip": "151.101.129.67",
"data_bytes": "56",
"pattern": "0xff",
"destination": "cnn.com",
"packets_transmitted": "3",
"packets_received": "3",
"packet_loss_percent": "0.0",
"duplicates": "0",
"round_trip_ms_min": "25.078",
"round_trip_ms_avg": "29.543",
"round_trip_ms_max": "32.553",
"round_trip_ms_stddev": "3.221",
"responses": [
{
"type": "reply",
"bytes": "64",
"response_ip": "151.101.129.67",
"icmp_seq": "0",
"ttl": "59",
"time_ms": "25.078",
"duplicate": false
},
{
"type": "reply",
"bytes": "64",
"response_ip": "151.101.129.67",
"icmp_seq": "1",
"ttl": "59",
"time_ms": "30.999",
"duplicate": false
},
{
"type": "reply",
"bytes": "64",
"response_ip": "151.101.129.67",
"icmp_seq": "2",
"ttl": "59",
"time_ms": "32.553",
"duplicate": false
}
]
}
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"source_ip": string,
"destination_ip": string,
"data_bytes": integer,
"pattern": string, (null if not set)
"destination": string,
"packets_transmitted": integer,
"packets_received": integer,
"packet_loss_percent": float,
"duplicates": integer,
"round_trip_ms_min": float,
"round_trip_ms_avg": float,
"round_trip_ms_max": float,
"round_trip_ms_stddev": float,
"responses": [
{
"type": string, ('reply' or 'timeout')
"timestamp": float,
"bytes": integer,
"response_ip": string,
"icmp_seq": integer,
"ttl": integer,
"time_ms": float,
"duplicate": boolean
}
]
}
## parse
```python
parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.

84
docs/parsers/sysctl.md Normal file
View File

@@ -0,0 +1,84 @@
# jc.parsers.sysctl
jc - JSON CLI output utility sysctl -a Parser
Usage:
specify --sysctl as the first argument if the piped input is coming from sysctl -a
Note: since sysctl output is not easily parsable only a very simple key/value object
will be output. An attempt is made to convert obvious integers and floats. If no
conversion is desired, use the -r (raw) option.
Compatibility:
'linux', 'darwin', 'freebsd'
Examples:
$ sysctl | jc --sysctl -p
{
"user.cs_path": "/usr/bin:/bin:/usr/sbin:/sbin",
"user.bc_base_max": 99,
"user.bc_dim_max": 2048,
"user.bc_scale_max": 99,
"user.bc_string_max": 1000,
"user.coll_weights_max": 2,
"user.expr_nest_max": 32
...
}
$ sysctl | jc --sysctl -p -r
{
"user.cs_path": "/usr/bin:/bin:/usr/sbin:/sbin",
"user.bc_base_max": "99",
"user.bc_dim_max": "2048",
"user.bc_scale_max": "99",
"user.bc_string_max": "1000",
"user.coll_weights_max": "2",
"user.expr_nest_max": "32",
...
}
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"foo": string/integer/float, # best guess based on value
"bar": string/integer/float,
"baz": string/integer/float
}
## parse
```python
parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.

158
docs/parsers/tracepath.md Normal file
View File

@@ -0,0 +1,158 @@
# jc.parsers.tracepath
jc - JSON CLI output utility tracepath Parser
Usage:
specify --tracepath as the first argument if the piped input is coming from tracepath
Compatibility:
'linux'
Examples:
$ tracepath6 3ffe:2400:0:109::2 | jc --tracepath -p
{
"pmtu": 1480,
"forward_hops": 2,
"return_hops": 2,
"hops": [
{
"ttl": 1,
"guess": true,
"host": "[LOCALHOST]",
"reply_ms": null,
"pmtu": 1500,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": 1,
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": 0.411,
"pmtu": null,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": 2,
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": 0.39,
"pmtu": 1480,
"asymmetric_difference": 1,
"reached": false
},
{
"ttl": 2,
"guess": false,
"host": "3ffe:2400:0:109::2",
"reply_ms": 463.514,
"pmtu": null,
"asymmetric_difference": null,
"reached": true
}
]
}
$ tracepath6 3ffe:2400:0:109::2 | jc --tracepath -p -r
{
"pmtu": "1480",
"forward_hops": "2",
"return_hops": "2",
"hops": [
{
"ttl": "1",
"guess": true,
"host": "[LOCALHOST]",
"reply_ms": null,
"pmtu": "1500",
"asymmetric_difference": null,
"reached": false
},
{
"ttl": "1",
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": "0.411",
"pmtu": null,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": "2",
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": "0.390",
"pmtu": "1480",
"asymmetric_difference": "1",
"reached": false
},
{
"ttl": "2",
"guess": false,
"host": "3ffe:2400:0:109::2",
"reply_ms": "463.514",
"pmtu": null,
"asymmetric_difference": null,
"reached": true
}
]
}
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"pmtu": integer,
"forward_hops": integer,
"return_hops": integer,
"hops": [
{
"ttl": integer,
"guess": boolean,
"host": string,
"reply_ms": float,
"pmtu": integer,
"asymmetric_difference": integer,
"reached": boolean
}
]
}
## parse
```python
parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.

147
docs/parsers/traceroute.md Normal file
View File

@@ -0,0 +1,147 @@
# jc.parsers.traceroute
jc - JSON CLI output utility traceroute Parser
Usage:
specify --traceroute as the first argument if the piped input is coming from traceroute
Note: on OSX and FreeBSD be sure to redirect STDERR to STDOUT since the header line is sent to STDERR
e.g. $ traceroute 8.8.8.8 2>&1 | jc --traceroute
Compatibility:
'linux', 'darwin', 'freebsd'
Examples:
$ traceroute google.com | jc --traceroute -p
{
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"hops": [
{
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.574
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": null
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.65
}
]
},
...
]
}
$ traceroute google.com | jc --traceroute -p -r
{
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"hops": [
{
"hop": "1",
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": "198.574"
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": null
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": "198.650"
}
]
},
...
]
}
## info
```python
info(self, /, *args, **kwargs)
```
## Hop
```python
Hop(self, idx)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"destination_ip": string,
"destination_name": string,
"hops": [
{
"hop": integer,
"probes": [
{
"annotation": string,
"asn": integer,
"ip": string,
"name": string,
"rtt": float
}
]
}
]
}
## parse
```python
parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.

178
jc/cli.py
View File

@@ -11,18 +11,18 @@ import importlib
import textwrap
import signal
import json
import pygments
from pygments import highlight
from pygments.style import Style
from pygments.token import (Name, Number, String, Keyword)
from pygments.lexers import JsonLexer
from pygments.formatters import Terminal256Formatter
import jc.utils
import jc.appdirs as appdirs
class info():
version = '1.11.8'
description = 'jc cli output JSON conversion tool'
version = '1.13.1'
description = 'JSON CLI output utility'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
@@ -63,6 +63,7 @@ parsers = [
'netstat',
'ntpq',
'passwd',
'ping',
'pip-list',
'pip-show',
'ps',
@@ -70,11 +71,14 @@ parsers = [
'shadow',
'ss',
'stat',
'sysctl',
'systemctl',
'systemctl-lj',
'systemctl-ls',
'systemctl-luf',
'timedatectl',
'tracepath',
'traceroute',
'uname',
'uptime',
'w',
@@ -86,8 +90,8 @@ parsers = [
# List of custom or override parsers.
# Allow any <user_data_dir>/jc/jcparsers/*.py
local_parsers = []
data_dir = appdirs.user_data_dir("jc", "jc")
local_parsers_dir = os.path.join(data_dir, "jcparsers")
data_dir = appdirs.user_data_dir('jc', 'jc')
local_parsers_dir = os.path.join(data_dir, 'jcparsers')
if os.path.isdir(local_parsers_dir):
sys.path.append(data_dir)
for name in os.listdir(local_parsers_dir):
@@ -98,8 +102,52 @@ if os.path.isdir(local_parsers_dir):
parsers.append(plugin_name)
def set_env_colors():
# We only support 2.3.0+, pygments changed color names in 2.4.0.
# startswith is sufficient and avoids potential exceptions from split and int.
if pygments.__version__.startswith('2.3.'):
PYGMENT_COLOR = {
'black': '#ansiblack',
'red': '#ansidarkred',
'green': '#ansidarkgreen',
'yellow': '#ansibrown',
'blue': '#ansidarkblue',
'magenta': '#ansipurple',
'cyan': '#ansiteal',
'gray': '#ansilightgray',
'brightblack': '#ansidarkgray',
'brightred': '#ansired',
'brightgreen': '#ansigreen',
'brightyellow': '#ansiyellow',
'brightblue': '#ansiblue',
'brightmagenta': '#ansifuchsia',
'brightcyan': '#ansiturquoise',
'white': '#ansiwhite',
}
else:
PYGMENT_COLOR = {
'black': 'ansiblack',
'red': 'ansired',
'green': 'ansigreen',
'yellow': 'ansiyellow',
'blue': 'ansiblue',
'magenta': 'ansimagenta',
'cyan': 'ansicyan',
'gray': 'ansigray',
'brightblack': 'ansibrightblack',
'brightred': 'ansibrightred',
'brightgreen': 'ansibrightgreen',
'brightyellow': 'ansibrightyellow',
'brightblue': 'ansibrightblue',
'brightmagenta': 'ansibrightmagenta',
'brightcyan': 'ansibrightcyan',
'white': 'ansiwhite',
}
def set_env_colors(env_colors=None):
"""
Return a dictionary to be used in Pygments custom style class.
Grab custom colors from JC_COLORS environment variable. JC_COLORS env variable takes 4 comma
separated string values and should be in the format of:
@@ -115,40 +163,36 @@ def set_env_colors():
JC_COLORS=default,default,default,default
"""
env_colors = os.getenv('JC_COLORS')
input_error = False
if env_colors:
color_list = env_colors.split(',')
else:
color_list = ['default', 'default', 'default', 'default']
if len(color_list) != 4:
input_error = True
if env_colors and len(color_list) != 4:
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
input_error = True
if env_colors:
for color in color_list:
if color not in ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'gray', 'brightblack', 'brightred',
'brightgreen', 'brightyellow', 'brightblue', 'brightmagenta', 'brightcyan', 'white', 'default']:
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
input_error = True
for color in color_list:
if color != 'default' and color not in PYGMENT_COLOR:
input_error = True
# if there is an issue with the env variable, just set all colors to default and move on
if input_error:
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
color_list = ['default', 'default', 'default', 'default']
# Try the color set in the JC_COLORS env variable first. If it is set to default, then fall back to default colors
return {
Name.Tag: f'bold ansi{color_list[0]}' if not color_list[0] == 'default' else 'bold ansiblue', # key names
Keyword: f'ansi{color_list[1]}' if not color_list[1] == 'default' else 'ansibrightblack', # true, false, null
Number: f'ansi{color_list[2]}' if not color_list[2] == 'default' else 'ansimagenta', # numbers
String: f'ansi{color_list[3]}' if not color_list[3] == 'default' else 'ansigreen' # strings
Name.Tag: f'bold {PYGMENT_COLOR[color_list[0]]}' if not color_list[0] == 'default' else f"bold {PYGMENT_COLOR['blue']}", # key names
Keyword: PYGMENT_COLOR[color_list[1]] if not color_list[1] == 'default' else PYGMENT_COLOR['brightblack'], # true, false, null
Number: PYGMENT_COLOR[color_list[2]] if not color_list[2] == 'default' else PYGMENT_COLOR['magenta'], # numbers
String: PYGMENT_COLOR[color_list[3]] if not color_list[3] == 'default' else PYGMENT_COLOR['green'] # strings
}
def piped_output():
"""returns False if stdout is a TTY. True if output is being piped to another program"""
"""Return False if stdout is a TTY. True if output is being piped to another program"""
if sys.stdout.isatty():
return False
else:
@@ -156,34 +200,34 @@ def piped_output():
def ctrlc(signum, frame):
"""exit with error on SIGINT"""
"""Exit with error on SIGINT"""
sys.exit(1)
def parser_shortname(parser_argument):
"""short name of the parser with dashes and no -- prefix"""
"""Return short name of the parser with dashes and no -- prefix"""
return parser_argument[2:]
def parser_argument(parser):
"""short name of the parser with dashes and with -- prefix"""
"""Return short name of the parser with dashes and with -- prefix"""
return f'--{parser}'
def parser_mod_shortname(parser):
"""short name of the parser's module name (no -- prefix and dashes converted to underscores)"""
"""Return short name of the parser's module name (no -- prefix and dashes converted to underscores)"""
return parser.replace('--', '').replace('-', '_')
def parser_module(parser):
"""import the module just in time and return the module object"""
"""Import the module just in time and return the module object"""
shortname = parser_mod_shortname(parser)
path = ('jcparsers.' if shortname in local_parsers else 'jc.parsers.')
return importlib.import_module(path + shortname)
def parsers_text(indent=0, pad=0):
"""return the argument and description information from each parser"""
"""Return the argument and description information from each parser"""
ptext = ''
for parser in parsers:
parser_arg = parser_argument(parser)
@@ -201,7 +245,7 @@ def parsers_text(indent=0, pad=0):
def about_jc():
"""return jc info and the contents of each parser.info as a dictionary"""
"""Return jc info and the contents of each parser.info as a dictionary"""
parser_list = []
for parser in parsers:
@@ -231,7 +275,7 @@ def about_jc():
def helptext(message):
"""return the help text with the list of parsers"""
"""Return the help text with the list of parsers"""
parsers_string = parsers_text(indent=12, pad=17)
helptext_string = f'''
@@ -260,30 +304,30 @@ def helptext(message):
jc -p ls -al
'''
print(textwrap.dedent(helptext_string), file=sys.stderr)
return textwrap.dedent(helptext_string)
def json_out(data, pretty=False, mono=False, piped_out=False):
def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False):
"""Return a JSON formatted string. String may include color codes or be pretty printed."""
if not mono and not piped_out:
# set colors
class JcStyle(Style):
styles = set_env_colors()
styles = set_env_colors(env_colors)
if pretty:
print(highlight(json.dumps(data, indent=2), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
return str(highlight(json.dumps(data, indent=2), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
else:
print(highlight(json.dumps(data), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
return str(highlight(json.dumps(data), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
else:
if pretty:
print(json.dumps(data, indent=2))
return json.dumps(data, indent=2)
else:
print(json.dumps(data))
return json.dumps(data)
def generate_magic_command(args):
"""
Returns a tuple with a boolean and a command, where the boolean signifies that
Return a tuple with a boolean and a command, where the boolean signifies that
the command is valid, and the command is either a command string or None.
"""
@@ -316,7 +360,7 @@ def generate_magic_command(args):
magic_dict = {}
parser_info = about_jc()['parsers']
# Create a dictionary of magic_commands to their respective parsers.
# create a dictionary of magic_commands to their respective parsers.
for entry in parser_info:
# Update the dict with all of the magic commands for this parser, if they exist.
magic_dict.update({mc: entry['argument'] for mc in entry.get('magic_commands', [])})
@@ -325,7 +369,7 @@ def generate_magic_command(args):
one_word_command = args_given[0]
two_word_command = ' '.join(args_given[0:2])
# Try to get a parser for two_word_command, otherwise get one for one_word_command
# try to get a parser for two_word_command, otherwise get one for one_word_command
found_parser = magic_dict.get(two_word_command, magic_dict.get(one_word_command))
# construct a new command line using the standard syntax: COMMAND | jc --PARSER -OPTIONS
@@ -338,6 +382,7 @@ def generate_magic_command(args):
def magic():
"""Runs the command generated by generate_magic_command() to support magic syntax"""
valid_command, run_command = generate_magic_command(sys.argv)
if valid_command:
os.system(run_command)
@@ -345,7 +390,7 @@ def magic():
elif run_command is None:
return
else:
helptext(f'parser not found for "{run_command}"')
print(helptext(f'parser not found for "{run_command}"'), file=sys.stderr)
sys.exit(1)
@@ -359,6 +404,8 @@ def main():
except AttributeError:
pass
jc_colors = os.getenv('JC_COLORS')
# try magic syntax first: e.g. jc -p ls -al
magic()
@@ -376,53 +423,48 @@ def main():
quiet = 'q' in options
raw = 'r' in options
if verbose_debug:
import jc.tracebackplus
jc.tracebackplus.enable(context=11)
if 'a' in options:
json_out(about_jc(), pretty=pretty, mono=mono, piped_out=piped_output())
print(json_out(about_jc(), pretty=pretty, env_colors=jc_colors, mono=mono, piped_out=piped_output()))
sys.exit(0)
if sys.stdin.isatty():
helptext('missing piped data')
print(helptext('missing piped data'), file=sys.stderr)
sys.exit(1)
data = sys.stdin.read()
found = False
if debug:
if verbose_debug:
import cgitb
cgitb.enable(display=1, logdir=None, context=5, format="text")
for arg in sys.argv:
parser_name = parser_shortname(arg)
for arg in sys.argv:
parser_name = parser_shortname(arg)
if parser_name in parsers:
# load parser module just in time so we don't need to load all modules
parser = parser_module(arg)
if parser_name in parsers:
# load parser module just in time so we don't need to load all modules
parser = parser_module(arg)
try:
result = parser.parse(data, raw=raw, quiet=quiet)
found = True
break
else:
for arg in sys.argv:
parser_name = parser_shortname(arg)
if parser_name in parsers:
# load parser module just in time so we don't need to load all modules
parser = parser_module(arg)
try:
result = parser.parse(data, raw=raw, quiet=quiet)
found = True
break
except Exception:
except Exception:
if debug:
raise
else:
import jc.utils
jc.utils.error_message(
f'{parser_name} parser could not parse the input data. Did you use the correct parser?\n For details use the -d option.')
f'{parser_name} parser could not parse the input data. Did you use the correct parser?\n'
' For details use the -d or -dd option.')
sys.exit(1)
if not found:
helptext('missing or incorrect arguments')
print(helptext('missing or incorrect arguments'), file=sys.stderr)
sys.exit(1)
json_out(result, pretty=pretty, mono=mono, piped_out=piped_output())
print(json_out(result, pretty=pretty, env_colors=jc_colors, mono=mono, piped_out=piped_output()))
if __name__ == '__main__':

View File

@@ -2,7 +2,9 @@
Usage:
specify --ini as the first argument if the piped input is coming from an INI file
Specify --ini as the first argument if the piped input is coming from an INI file or any
simple key/value pair file. Delimiter can be '=' or ':'. Missing values are supported.
Comment prefix can be '#' or ';'. Comments must be on their own line.
Compatibility:
@@ -47,8 +49,8 @@ import configparser
class info():
version = '1.1'
description = 'INI file parser'
version = '1.2'
description = 'INI file parser. Also parses files/output containing simple key/value pairs'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
details = 'Using configparser from the standard library'
@@ -70,15 +72,33 @@ def process(proc_data):
Returns:
Dictionary representing an ini document:
Dictionary representing an ini or simple key/value pair document:
{
ini document converted to a dictionary
see configparser standard library documentation for more details
ini or key/value document converted to a dictionary - see configparser standard
library documentation for more details.
Note: Values starting and ending with quotation marks will have the marks removed.
If you would like to keep the quotation marks, use the -r or raw=True argument.
}
"""
# remove quotation marks from beginning and end of values
for heading in proc_data:
# standard ini files with headers
if isinstance(proc_data[heading], dict):
for key, value in proc_data[heading].items():
if value is not None and value.startswith('"') and value.endswith('"'):
proc_data[heading][key] = value.lstrip('"').rstrip('"')
elif value is None:
proc_data[heading][key] = ''
# simple key/value files with no headers
else:
if proc_data[heading] is not None and proc_data[heading].startswith('"') and proc_data[heading].endswith('"'):
proc_data[heading] = proc_data[heading].lstrip('"').rstrip('"')
elif proc_data[heading] is None:
proc_data[heading] = ''
# No further processing
return proc_data
@@ -103,9 +123,17 @@ def parse(data, raw=False, quiet=False):
if jc.utils.has_data(data):
ini = configparser.ConfigParser()
ini.read_string(data)
raw_output = {s: dict(ini.items(s)) for s in ini.sections()}
ini = configparser.ConfigParser(allow_no_value=True, interpolation=None)
try:
ini.read_string(data)
raw_output = {s: dict(ini.items(s)) for s in ini.sections()}
except configparser.MissingSectionHeaderError:
data = '[data]\n' + data
ini.read_string(data)
output_dict = {s: dict(ini.items(s)) for s in ini.sections()}
for key, value in output_dict['data'].items():
raw_output[key] = value
if raw:
return raw_output

507
jc/parsers/ping.py Normal file
View File

@@ -0,0 +1,507 @@
"""jc - JSON CLI output utility ping Parser
Usage:
specify --ping as the first argument if the piped input is coming from ping
Note: Use the ping -c (count) option, otherwise data will not be piped to jc.
Compatibility:
'linux', 'darwin', 'freebsd'
Examples:
$ ping -c 3 -p ff cnn.com | jc --ping -p
{
"destination_ip": "151.101.1.67",
"data_bytes": 56,
"pattern": "0xff",
"destination": "cnn.com",
"packets_transmitted": 3,
"packets_received": 3,
"packet_loss_percent": 0.0,
"duplicates": 0,
"round_trip_ms_min": 28.015,
"round_trip_ms_avg": 32.848,
"round_trip_ms_max": 39.376,
"round_trip_ms_stddev": 4.79,
"responses": [
{
"type": "reply",
"bytes": 64,
"response_ip": "151.101.1.67",
"icmp_seq": 0,
"ttl": 59,
"time_ms": 28.015,
"duplicate": false
},
{
"type": "reply",
"bytes": 64,
"response_ip": "151.101.1.67",
"icmp_seq": 1,
"ttl": 59,
"time_ms": 39.376,
"duplicate": false
},
{
"type": "reply",
"bytes": 64,
"response_ip": "151.101.1.67",
"icmp_seq": 2,
"ttl": 59,
"time_ms": 31.153,
"duplicate": false
}
]
}
$ ping -c 3 -p ff cnn.com | jc --ping -p -r
{
"destination_ip": "151.101.129.67",
"data_bytes": "56",
"pattern": "0xff",
"destination": "cnn.com",
"packets_transmitted": "3",
"packets_received": "3",
"packet_loss_percent": "0.0",
"duplicates": "0",
"round_trip_ms_min": "25.078",
"round_trip_ms_avg": "29.543",
"round_trip_ms_max": "32.553",
"round_trip_ms_stddev": "3.221",
"responses": [
{
"type": "reply",
"bytes": "64",
"response_ip": "151.101.129.67",
"icmp_seq": "0",
"ttl": "59",
"time_ms": "25.078",
"duplicate": false
},
{
"type": "reply",
"bytes": "64",
"response_ip": "151.101.129.67",
"icmp_seq": "1",
"ttl": "59",
"time_ms": "30.999",
"duplicate": false
},
{
"type": "reply",
"bytes": "64",
"response_ip": "151.101.129.67",
"icmp_seq": "2",
"ttl": "59",
"time_ms": "32.553",
"duplicate": false
}
]
}
"""
import string
import jc.utils
class info():
version = '1.0'
description = 'ping command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
compatible = ['linux', 'darwin', 'freebsd']
magic_commands = ['ping', 'ping6']
__version__ = info.version
def process(proc_data):
"""
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"source_ip": string,
"destination_ip": string,
"data_bytes": integer,
"pattern": string, (null if not set)
"destination": string,
"packets_transmitted": integer,
"packets_received": integer,
"packet_loss_percent": float,
"duplicates": integer,
"round_trip_ms_min": float,
"round_trip_ms_avg": float,
"round_trip_ms_max": float,
"round_trip_ms_stddev": float,
"responses": [
{
"type": string, ('reply' or 'timeout')
"timestamp": float,
"bytes": integer,
"response_ip": string,
"icmp_seq": integer,
"ttl": integer,
"time_ms": float,
"duplicate": boolean
}
]
}
"""
int_list = ['data_bytes', 'packets_transmitted', 'packets_received', 'bytes', 'icmp_seq', 'ttl', 'duplicates']
float_list = ['packet_loss_percent', 'round_trip_ms_min', 'round_trip_ms_avg', 'round_trip_ms_max',
'round_trip_ms_stddev', 'timestamp', 'time_ms']
for key in proc_data.keys():
for item in int_list:
if item == key:
try:
proc_data[key] = int(proc_data[key])
except (ValueError, TypeError):
proc_data[key] = None
for item in float_list:
if item == key:
try:
proc_data[key] = float(proc_data[key])
except (ValueError, TypeError):
proc_data[key] = None
if key == 'responses':
for entry in proc_data['responses']:
for k in entry.keys():
if k in int_list:
try:
entry[k] = int(entry[k])
except (ValueError, TypeError):
entry[k] = None
if k in float_list:
try:
entry[k] = float(entry[k])
except (ValueError, TypeError):
entry[k] = None
return proc_data
def linux_parse(data):
raw_output = {}
ping_responses = []
pattern = None
footer = False
linedata = data.splitlines()
# check for PATTERN
if linedata[0].startswith('PATTERN: '):
pattern = linedata.pop(0).split(': ')[1]
while not linedata[0].startswith('PING '):
linedata.pop(0)
ipv4 = True if 'bytes of data' in linedata[0] else False
if ipv4 and linedata[0][5] not in string.digits:
hostname = True
elif ipv4 and linedata[0][5] in string.digits:
hostname = False
elif not ipv4 and ' (' in linedata[0]:
hostname = True
else:
hostname = False
for line in filter(None, linedata):
if line.startswith('PING '):
if ipv4 and not hostname:
dst_ip, dta_byts = (2, 3)
elif ipv4 and hostname:
dst_ip, dta_byts = (2, 3)
elif not ipv4 and not hostname:
dst_ip, dta_byts = (2, 3)
else:
dst_ip, dta_byts = (3, 4)
line = line.replace('(', ' ').replace(')', ' ')
raw_output.update(
{
'destination_ip': line.split()[dst_ip].lstrip('(').rstrip(')'),
'data_bytes': line.split()[dta_byts],
'pattern': pattern
}
)
continue
if line.startswith('---'):
footer = True
raw_output['destination'] = line.split()[1]
continue
if footer:
if 'packets transmitted' in line:
if ' duplicates,' in line:
raw_output.update(
{
'packets_transmitted': line.split()[0],
'packets_received': line.split()[3],
'packet_loss_percent': line.split()[7].rstrip('%'),
'duplicates': line.split()[5].lstrip('+'),
'time_ms': line.split()[11].replace('ms', '')
}
)
continue
else:
raw_output.update(
{
'packets_transmitted': line.split()[0],
'packets_received': line.split()[3],
'packet_loss_percent': line.split()[5].rstrip('%'),
'duplicates': '0',
'time_ms': line.split()[9].replace('ms', '')
}
)
continue
else:
split_line = line.split(' = ')[1]
split_line = split_line.split('/')
raw_output.update(
{
'round_trip_ms_min': split_line[0],
'round_trip_ms_avg': split_line[1],
'round_trip_ms_max': split_line[2],
'round_trip_ms_stddev': split_line[3].split()[0]
}
)
# ping response lines
else:
# request timeout
if 'no answer yet for icmp_seq=' in line:
timestamp = False
isequence = 5
# if timestamp option is specified, then shift icmp sequence field right by one
if line[0] == '[':
timestamp = True
isequence = 6
response = {
'type': 'timeout',
'timestamp': line.split()[0].lstrip('[').rstrip(']') if timestamp else None,
'icmp_seq': line.replace('=', ' ').split()[isequence]
}
ping_responses.append(response)
continue
# normal responses
else:
line = line.replace('(', ' ').replace(')', ' ').replace('=', ' ')
# positions of items depend on whether ipv4/ipv6 and/or ip/hostname is used
if ipv4 and not hostname:
bts, rip, iseq, t2l, tms = (0, 3, 5, 7, 9)
elif ipv4 and hostname:
bts, rip, iseq, t2l, tms = (0, 4, 7, 9, 11)
elif not ipv4 and not hostname:
bts, rip, iseq, t2l, tms = (0, 3, 5, 7, 9)
elif not ipv4 and hostname:
bts, rip, iseq, t2l, tms = (0, 4, 7, 9, 11)
# if timestamp option is specified, then shift everything right by one
timestamp = False
if line[0] == '[':
timestamp = True
bts, rip, iseq, t2l, tms = (bts + 1, rip + 1, iseq + 1, t2l + 1, tms + 1)
response = {
'type': 'reply',
'timestamp': line.split()[0].lstrip('[').rstrip(']') if timestamp else None,
'bytes': line.split()[bts],
'response_ip': line.split()[rip].rstrip(':'),
'icmp_seq': line.split()[iseq],
'ttl': line.split()[t2l],
'time_ms': line.split()[tms],
'duplicate': True if 'DUP!' in line else False
}
ping_responses.append(response)
continue
raw_output['responses'] = ping_responses
return raw_output
def bsd_parse(data):
raw_output = {}
ping_responses = []
pattern = None
footer = False
linedata = data.splitlines()
# check for PATTERN
if linedata[0].startswith('PATTERN: '):
pattern = linedata.pop(0).split(': ')[1]
for line in filter(None, linedata):
if line.startswith('PING '):
raw_output.update(
{
'destination_ip': line.split()[2].lstrip('(').rstrip(':').rstrip(')'),
'data_bytes': line.split()[3],
'pattern': pattern
}
)
continue
if line.startswith('PING6('):
line = line.replace('(', ' ').replace(')', ' ').replace('=', ' ')
raw_output.update(
{
'source_ip': line.split()[4],
'destination_ip': line.split()[6],
'data_bytes': line.split()[1],
'pattern': pattern
}
)
continue
if line.startswith('---'):
footer = True
raw_output['destination'] = line.split()[1]
continue
if footer:
if 'packets transmitted' in line:
if ' duplicates,' in line:
raw_output.update(
{
'packets_transmitted': line.split()[0],
'packets_received': line.split()[3],
'packet_loss_percent': line.split()[8].rstrip('%'),
'duplicates': line.split()[6].lstrip('+'),
}
)
continue
else:
raw_output.update(
{
'packets_transmitted': line.split()[0],
'packets_received': line.split()[3],
'packet_loss_percent': line.split()[6].rstrip('%'),
'duplicates': '0',
}
)
continue
else:
split_line = line.split(' = ')[1]
split_line = split_line.split('/')
raw_output.update(
{
'round_trip_ms_min': split_line[0],
'round_trip_ms_avg': split_line[1],
'round_trip_ms_max': split_line[2],
'round_trip_ms_stddev': split_line[3].replace(' ms', '')
}
)
# ping response lines
else:
# ipv4 lines
if ',' not in line:
# request timeout
if line.startswith('Request timeout for '):
response = {
'type': 'timeout',
'icmp_seq': line.split()[4]
}
ping_responses.append(response)
continue
# normal response
else:
line = line.replace(':', ' ').replace('=', ' ')
response = {
'type': 'reply',
'bytes': line.split()[0],
'response_ip': line.split()[3],
'icmp_seq': line.split()[5],
'ttl': line.split()[7],
'time_ms': line.split()[9]
}
ping_responses.append(response)
continue
# ipv6 lines
else:
line = line.replace(',', ' ').replace('=', ' ')
response = {
'type': 'reply',
'bytes': line.split()[0],
'response_ip': line.split()[3],
'icmp_seq': line.split()[5],
'ttl': line.split()[7],
'time_ms': line.split()[9]
}
ping_responses.append(response)
continue
# identify duplicates in responses
if ping_responses:
seq_list = []
for reply in ping_responses:
seq_list.append(reply['icmp_seq'])
reply['duplicate'] = True if seq_list.count(reply['icmp_seq']) > 1 else False
raw_output['responses'] = ping_responses
return raw_output
def parse(data, raw=False, quiet=False):
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
"""
if not quiet:
jc.utils.compatibility(__name__, info.compatible)
raw_output = {}
if jc.utils.has_data(data):
if 'time' in data.splitlines()[-2]:
raw_output = linux_parse(data)
else:
raw_output = bsd_parse(data)
if raw:
return raw_output
else:
return process(raw_output)

View File

@@ -84,7 +84,7 @@ import jc.parsers.universal
class info():
version = '1.3'
version = '1.4'
description = 'route command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
@@ -182,10 +182,16 @@ def parse(data, raw=False, quiet=False):
jc.utils.compatibility(__name__, info.compatible)
cleandata = data.splitlines()[1:]
raw_output = []
if jc.utils.has_data(data):
# fixup header row for ipv6
if ' Next Hop ' in cleandata[0]:
cleandata[0] = cleandata[0].replace(' If', ' Iface')
cleandata[0] = cleandata[0].replace(' Next Hop ', ' Next_Hop ').replace(' Flag ', ' Flags ').replace(' Met ', ' Metric ')
cleandata[0] = cleandata[0].lower()
raw_output = jc.parsers.universal.simple_table_parse(cleandata)

154
jc/parsers/sysctl.py Normal file
View File

@@ -0,0 +1,154 @@
"""jc - JSON CLI output utility sysctl -a Parser
Usage:
specify --sysctl as the first argument if the piped input is coming from sysctl -a
Note: since sysctl output is not easily parsable only a very simple key/value object
will be output. An attempt is made to convert obvious integers and floats. If no
conversion is desired, use the -r (raw) option.
Compatibility:
'linux', 'darwin', 'freebsd'
Examples:
$ sysctl | jc --sysctl -p
{
"user.cs_path": "/usr/bin:/bin:/usr/sbin:/sbin",
"user.bc_base_max": 99,
"user.bc_dim_max": 2048,
"user.bc_scale_max": 99,
"user.bc_string_max": 1000,
"user.coll_weights_max": 2,
"user.expr_nest_max": 32
...
}
$ sysctl | jc --sysctl -p -r
{
"user.cs_path": "/usr/bin:/bin:/usr/sbin:/sbin",
"user.bc_base_max": "99",
"user.bc_dim_max": "2048",
"user.bc_scale_max": "99",
"user.bc_string_max": "1000",
"user.coll_weights_max": "2",
"user.expr_nest_max": "32",
...
}
"""
import jc.utils
class info():
version = '1.0'
description = 'sysctl command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
# details = 'enter any other details here'
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
compatible = ['linux', 'darwin', 'freebsd']
magic_commands = ['sysctl']
__version__ = info.version
def process(proc_data):
"""
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"foo": string/integer/float, # best guess based on value
"bar": string/integer/float,
"baz": string/integer/float
}
"""
for key in proc_data:
try:
proc_data[key] = int(proc_data[key])
except (ValueError):
try:
proc_data[key] = float(proc_data[key])
except (ValueError):
pass
return proc_data
def parse(data, raw=False, quiet=False):
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
"""
if not quiet:
jc.utils.compatibility(__name__, info.compatible)
raw_output = {}
if jc.utils.has_data(data):
data = data.splitlines()
# linux uses = and bsd uses :
if ' = ' in data[0]:
delim = ' = '
else:
delim = ': '
for line in data:
linedata = line.split(delim, maxsplit=1)
# bsd adds values to newlines, which need to be fixed up with this try/except block
try:
key = linedata[0]
value = linedata[1]
# syctl -a repeats some keys on linux. Append values from repeating keys
# to the previous key value
if key in raw_output:
existing_value = raw_output[key]
raw_output[key] = existing_value + '\n' + value
continue
# fix for weird multiline output in bsd
# if the key looks strange (has spaces or no dots) then it's probably a value field
# on a separate line. in this case, just append it to the previous key in the dictionary.
if '.' not in key or ' ' in key:
previous_key = [*raw_output.keys()][-1]
raw_output[previous_key] = raw_output[previous_key] + '\n' + line
continue
# if the key looks normal then just add to the dictionary as normal
else:
raw_output[key] = value
continue
# if there is an IndexError exception, then there was no delimiter in the line.
# In this case just append the data line as a value to the previous key.
except IndexError:
prior_key = [*raw_output.keys()][-1]
raw_output[prior_key] = raw_output[prior_key] + '\n' + line
continue
if raw:
return raw_output
else:
return process(raw_output)

251
jc/parsers/tracepath.py Normal file
View File

@@ -0,0 +1,251 @@
"""jc - JSON CLI output utility tracepath Parser
Usage:
specify --tracepath as the first argument if the piped input is coming from tracepath
Compatibility:
'linux'
Examples:
$ tracepath6 3ffe:2400:0:109::2 | jc --tracepath -p
{
"pmtu": 1480,
"forward_hops": 2,
"return_hops": 2,
"hops": [
{
"ttl": 1,
"guess": true,
"host": "[LOCALHOST]",
"reply_ms": null,
"pmtu": 1500,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": 1,
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": 0.411,
"pmtu": null,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": 2,
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": 0.39,
"pmtu": 1480,
"asymmetric_difference": 1,
"reached": false
},
{
"ttl": 2,
"guess": false,
"host": "3ffe:2400:0:109::2",
"reply_ms": 463.514,
"pmtu": null,
"asymmetric_difference": null,
"reached": true
}
]
}
$ tracepath6 3ffe:2400:0:109::2 | jc --tracepath -p -r
{
"pmtu": "1480",
"forward_hops": "2",
"return_hops": "2",
"hops": [
{
"ttl": "1",
"guess": true,
"host": "[LOCALHOST]",
"reply_ms": null,
"pmtu": "1500",
"asymmetric_difference": null,
"reached": false
},
{
"ttl": "1",
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": "0.411",
"pmtu": null,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": "2",
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": "0.390",
"pmtu": "1480",
"asymmetric_difference": "1",
"reached": false
},
{
"ttl": "2",
"guess": false,
"host": "3ffe:2400:0:109::2",
"reply_ms": "463.514",
"pmtu": null,
"asymmetric_difference": null,
"reached": true
}
]
}
"""
import re
import jc.utils
class info():
version = '1.0'
description = 'tracepath command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
compatible = ['linux']
magic_commands = ['tracepath', 'tracepath6']
__version__ = info.version
def process(proc_data):
"""
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"pmtu": integer,
"forward_hops": integer,
"return_hops": integer,
"hops": [
{
"ttl": integer,
"guess": boolean,
"host": string,
"reply_ms": float,
"pmtu": integer,
"asymmetric_difference": integer,
"reached": boolean
}
]
}
"""
int_list = ['pmtu', 'forward_hops', 'return_hops', 'ttl', 'asymmetric_difference']
float_list = ['reply_ms']
for key, value in proc_data.items():
for item in int_list:
if key in int_list:
try:
proc_data[key] = int(proc_data[key])
except (ValueError, TypeError):
proc_data[key] = None
for item in int_list:
if key in float_list:
try:
proc_data[key] = float(proc_data[key])
except (ValueError, TypeError):
proc_data[key] = None
if 'hops' in proc_data:
for entry in proc_data['hops']:
for key in int_list:
if key in entry:
try:
entry[key] = int(entry[key])
except (ValueError, TypeError):
entry[key] = None
for key in float_list:
if key in entry:
try:
entry[key] = float(entry[key])
except (ValueError, TypeError):
entry[key] = None
return proc_data
def parse(data, raw=False, quiet=False):
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
"""
if not quiet:
jc.utils.compatibility(__name__, info.compatible)
RE_TTL_HOST = re.compile(r'^\s?(?P<ttl>\d+)(?P<ttl_guess>\??):\s+(?P<host>(?:no reply|\S+))') # groups: ttl, ttl_guess, host
RE_PMTU = re.compile(r'\spmtu\s(?P<pmtu>[\d]+)') # group: pmtu
RE_REPLY_MS = re.compile(r'\s(?P<reply_ms>\d*\.\d*)ms') # group: reply_ms
RE_ASYMM = re.compile(r'\sasymm\s+(?P<asymm>[\d]+)') # group: asymm
RE_REACHED = re.compile(r'\sreached')
RE_SUMMARY = re.compile(r'\s+Resume:\s+pmtu\s+(?P<pmtu>\d+)(?:\s+hops\s+(?P<hops>\d+))?(?:\s+back\s+(?P<back>\d+))?') # groups: pmtu, hops, back
raw_output = {}
if jc.utils.has_data(data):
hops = []
for line in filter(None, data.splitlines()):
# grab hop information
ttl_host = re.search(RE_TTL_HOST, line)
pmtu = re.search(RE_PMTU, line)
reply_ms = re.search(RE_REPLY_MS, line)
asymm = re.search(RE_ASYMM, line)
reached = re.search(RE_REACHED, line)
summary = re.search(RE_SUMMARY, line)
if ttl_host:
hop = {
'ttl': ttl_host.group('ttl'),
'guess': bool(ttl_host.group('ttl_guess')),
'host': ttl_host.group('host') if ttl_host.group('host') != 'no reply' else None,
'reply_ms': reply_ms.group('reply_ms') if reply_ms else None,
'pmtu': pmtu.group('pmtu') if pmtu else None,
'asymmetric_difference': asymm.group('asymm') if asymm else None,
'reached': bool(reached)
}
hops.append(hop)
continue
elif summary:
raw_output = {
'pmtu': summary.group('pmtu') if summary.group('pmtu') else None,
'forward_hops': summary.group('hops') if summary.group('hops') else None,
'return_hops': summary.group('back') if summary.group('back') else None,
'hops': hops
}
if raw:
return raw_output
else:
return process(raw_output)

422
jc/parsers/traceroute.py Normal file
View File

@@ -0,0 +1,422 @@
"""jc - JSON CLI output utility traceroute Parser
Usage:
specify --traceroute as the first argument if the piped input is coming from traceroute
Note: on OSX and FreeBSD be sure to redirect STDERR to STDOUT since the header line is sent to STDERR
e.g. $ traceroute 8.8.8.8 2>&1 | jc --traceroute
Compatibility:
'linux', 'darwin', 'freebsd'
Examples:
$ traceroute google.com | jc --traceroute -p
{
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"hops": [
{
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.574
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": null
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.65
}
]
},
...
]
}
$ traceroute google.com | jc --traceroute -p -r
{
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"hops": [
{
"hop": "1",
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": "198.574"
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": null
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": "198.650"
}
]
},
...
]
}
"""
import re
from decimal import Decimal
import jc.utils
class info():
version = '1.0'
description = 'traceroute command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
details = 'Using the trparse library by Luis Benitez at https://github.com/lbenitez000/trparse'
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
compatible = ['linux', 'darwin', 'freebsd']
magic_commands = ['traceroute', 'traceroute6']
__version__ = info.version
'''
Copyright (C) 2015 Luis Benitez
Parses the output of a traceroute execution into an AST (Abstract Syntax Tree).
The MIT License (MIT)
Copyright (c) 2014 Luis Benitez
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
'''
RE_HEADER = re.compile(r'(\S+)\s+\((\d+\.\d+\.\d+\.\d+|[0-9a-fA-F:]+)\)')
RE_PROBE_NAME_IP = re.compile(r'(\S+)\s+\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[0-9a-fA-F:]+)\)+')
RE_PROBE_BSD_IPV6 = re.compile(r'\b(?:[A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}\b')
RE_HOP = re.compile(r'^\s*(\d+)?\s+(.+)$')
RE_PROBE_ASN = re.compile(r'\[AS(\d+)\]')
RE_PROBE_RTT_ANNOTATION = re.compile(r'(\d+\.?\d+)?\s+ms|(\s+\*\s+)\s*(!\S*)?')
class Traceroute(object):
def __init__(self, dest_name, dest_ip):
self.dest_name = dest_name
self.dest_ip = dest_ip
self.hops = []
def add_hop(self, hop):
self.hops.append(hop)
def __str__(self):
text = "Traceroute for %s (%s)\n\n" % (self.dest_name, self.dest_ip)
for hop in self.hops:
text += str(hop)
return text
class Hop(object):
def __init__(self, idx):
self.idx = idx # Hop count, starting at 1 (usually)
self.probes = [] # Series of Probe instances
def add_probe(self, probe):
"""Adds a Probe instance to this hop's results."""
if self.probes:
probe_last = self.probes[-1]
if not probe.ip:
probe.ip = probe_last.ip
probe.name = probe_last.name
self.probes.append(probe)
def __str__(self):
text = "{:>3d} ".format(self.idx)
text_len = len(text)
for n, probe in enumerate(self.probes):
text_probe = str(probe)
if n:
text += (text_len * " ") + text_probe
else:
text += text_probe
text += "\n"
return text
class Probe(object):
def __init__(self, name=None, ip=None, asn=None, rtt=None, annotation=None):
self.name = name
self.ip = ip
self.asn = asn # Autonomous System number
self.rtt = rtt # RTT in ms
self.annotation = annotation # Annotation, such as !H, !N, !X, etc
def __str__(self):
text = ""
if self.asn is not None:
text += "[AS{:d}] ".format(self.asn)
if self.rtt:
text += "{:s} ({:s}) {:1.3f} ms".format(self.name, self.ip, self.rtt)
else:
text = "*"
if self.annotation:
text += " {:s}".format(self.annotation)
text += "\n"
return text
def loads(data):
lines = data.splitlines()
# Get headers
match_dest = RE_HEADER.search(lines[0])
dest_name = match_dest.group(1)
dest_ip = match_dest.group(2)
# The Traceroute node is the root of the tree
traceroute = Traceroute(dest_name, dest_ip)
# Parse the remaining lines, they should be only hops/probes
for line in lines[1:]:
# Skip empty lines
if not line:
continue
hop_match = RE_HOP.match(line)
if hop_match.group(1):
hop_index = int(hop_match.group(1))
else:
hop_index = None
if hop_index is not None:
hop = Hop(hop_index)
traceroute.add_hop(hop)
hop_string = hop_match.group(2)
probe_asn_match = RE_PROBE_ASN.search(hop_string)
if probe_asn_match:
probe_asn = int(probe_asn_match.group(1))
else:
probe_asn = None
probe_name_ip_match = RE_PROBE_NAME_IP.search(hop_string)
probe_bsd_ipv6_match = RE_PROBE_BSD_IPV6.search(hop_string)
if probe_name_ip_match:
probe_name = probe_name_ip_match.group(1)
probe_ip = probe_name_ip_match.group(2)
elif probe_bsd_ipv6_match:
probe_name = None
probe_ip = probe_bsd_ipv6_match.group(0)
else:
probe_name = None
probe_ip = None
probe_rtt_annotations = RE_PROBE_RTT_ANNOTATION.findall(hop_string)
for probe_rtt_annotation in probe_rtt_annotations:
if probe_rtt_annotation[0]:
probe_rtt = Decimal(probe_rtt_annotation[0])
elif probe_rtt_annotation[1]:
probe_rtt = None
else:
message = f"Expected probe RTT or *. Got: '{probe_rtt_annotation[0]}'"
raise ParseError(message)
probe_annotation = probe_rtt_annotation[2] or None
probe = Probe(
name=probe_name,
ip=probe_ip,
asn=probe_asn,
rtt=probe_rtt,
annotation=probe_annotation
)
hop.add_probe(probe)
return traceroute
class ParseError(Exception):
pass
########################################################################################
def process(proc_data):
"""
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"destination_ip": string,
"destination_name": string,
"hops": [
{
"hop": integer,
"probes": [
{
"annotation": string,
"asn": integer,
"ip": string,
"name": string,
"rtt": float
}
]
}
]
}
"""
int_list = ['hop', 'asn']
float_list = ['rtt']
if 'hops' in proc_data:
for entry in proc_data['hops']:
for key in int_list:
if key in entry:
try:
entry[key] = int(entry[key])
except (ValueError, TypeError):
entry[key] = None
for key in float_list:
if key in entry:
try:
entry[key] = float(entry[key])
except (ValueError, TypeError):
entry[key] = None
if 'probes' in entry:
for item in entry['probes']:
for key in int_list:
if key in item:
try:
item[key] = int(item[key])
except (ValueError, TypeError):
item[key] = None
for key in float_list:
if key in item:
try:
item[key] = float(item[key])
except (ValueError, TypeError):
item[key] = None
return proc_data
def parse(data, raw=False, quiet=False):
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
"""
if not quiet:
jc.utils.compatibility(__name__, info.compatible)
raw_output = {}
if jc.utils.has_data(data):
# remove any warning lines
new_data = []
for data_line in data.splitlines():
if 'traceroute: Warning: ' not in data_line and 'traceroute6: Warning: ' not in data_line:
new_data.append(data_line)
else:
continue
data = '\n'.join(new_data)
# check if header row exists, otherwise raise exception
if not data.splitlines()[0].startswith('traceroute to ') and not data.splitlines()[0].startswith('traceroute6 to '):
raise ParseError('Traceroute header line not found. Be sure to redirect STDERR to STDOUT on some operating systems.')
tr = loads(data)
hops = tr.hops
hops_list = []
if hops:
for hop in hops:
hop_obj = {}
hop_obj['hop'] = str(hop.idx)
probe_list = []
if hop.probes:
for probe in hop.probes:
probe_obj = {
'annotation': probe.annotation,
'asn': None if probe.asn is None else str(probe.asn),
'ip': probe.ip,
'name': probe.name,
'rtt': None if probe.rtt is None else str(probe.rtt)
}
probe_list.append(probe_obj)
hop_obj['probes'] = probe_list
hops_list.append(hop_obj)
raw_output = {
'destination_ip': tr.dest_ip,
'destination_name': tr.dest_name,
'hops': hops_list
}
if raw:
return raw_output
else:
return process(raw_output)

View File

@@ -30,7 +30,7 @@ import jc.utils
class info():
version = '1.3'
version = '1.4'
description = 'uname -a command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
@@ -43,6 +43,10 @@ class info():
__version__ = info.version
class ParseError(Exception):
pass
def process(proc_data):
"""
Final processing to conform to the schema.
@@ -94,6 +98,10 @@ def parse(data, raw=False, quiet=False):
# check for OSX output
if data.startswith('Darwin'):
parsed_line = data.split()
if len(parsed_line) < 5:
raise ParseError('Could not parse uname output. Make sure to use "uname -a".')
raw_output['machine'] = parsed_line.pop(-1)
raw_output['kernel_name'] = parsed_line.pop(0)
raw_output['node_name'] = parsed_line.pop(0)
@@ -103,6 +111,10 @@ def parse(data, raw=False, quiet=False):
# otherwise use linux parser
else:
parsed_line = data.split(maxsplit=3)
if len(parsed_line) < 3:
raise ParseError('Could not parse uname output. Make sure to use "uname -a".')
raw_output['kernel_name'] = parsed_line.pop(0)
raw_output['node_name'] = parsed_line.pop(0)
raw_output['kernel_release'] = parsed_line.pop(0)

247
jc/tracebackplus.py Normal file
View File

@@ -0,0 +1,247 @@
"""More comprehensive traceback formatting for Python scripts.
To enable this module, do:
import tracebackplus; tracebackplus.enable()
at the top of your script. The optional arguments to enable() are:
logdir - if set, tracebacks are written to files in this directory
context - number of lines of source code to show for each stack frame
By default, tracebacks are displayed but not saved and the context is 5 lines.
Alternatively, if you have caught an exception and want tracebackplus to display it
for you, call tracebackplus.handler(). The optional argument to handler() is a
3-item tuple (etype, evalue, etb) just like the value of sys.exc_info().
"""
'''
tracebackplus was derived from the cgitb standard library module. As cgitb is being
deprecated, this simplified version of cgitb was created.
https://github.com/python/cpython/blob/3.8/Lib/cgitb.py
"Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation;
All Rights Reserved"
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation;
All Rights Reserved" are retained in Python alone or in any derivative version
prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
'''
import inspect
import keyword
import linecache
import os
import pydoc
import sys
import tempfile
import time
import tokenize
import traceback
__UNDEF__ = [] # a special sentinel object
def lookup(name, frame, locals):
"""Find the value for a given name in the given environment."""
if name in locals:
return 'local', locals[name]
if name in frame.f_globals:
return 'global', frame.f_globals[name]
if '__builtins__' in frame.f_globals:
builtins = frame.f_globals['__builtins__']
if isinstance(builtins, dict):
if name in builtins:
return 'builtin', builtins[name]
else:
if hasattr(builtins, name):
return 'builtin', getattr(builtins, name)
return None, __UNDEF__
def scanvars(reader, frame, locals):
"""Scan one logical line of Python and look up values of variables used."""
vars, lasttoken, parent, prefix, value = [], None, None, '', __UNDEF__
for ttype, token, start, end, line in tokenize.generate_tokens(reader):
if ttype == tokenize.NEWLINE:
break
if ttype == tokenize.NAME and token not in keyword.kwlist:
if lasttoken == '.':
if parent is not __UNDEF__:
value = getattr(parent, token, __UNDEF__)
vars.append((prefix + token, prefix, value))
else:
where, value = lookup(token, frame, locals)
vars.append((token, where, value))
elif token == '.':
prefix += lasttoken + '.'
parent = value
else:
parent, prefix = None, ''
lasttoken = token
return vars
def text(einfo, context=5):
"""Return a plain text document describing a given traceback."""
etype, evalue, etb = einfo
if isinstance(etype, type):
etype = etype.__name__
pyver = 'Python ' + sys.version.split()[0] + ': ' + sys.executable
date = time.ctime(time.time())
head = '%s\n%s\n%s\n' % (str(etype), pyver, date) + '''
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
'''
frames = []
records = inspect.getinnerframes(etb, context)
for frame, file, lnum, func, lines, index in records:
file = file and os.path.abspath(file) or '?'
args, varargs, varkw, locals = inspect.getargvalues(frame)
call = ''
if func != '?':
call = 'in ' + func + \
inspect.formatargvalues(args, varargs, varkw, locals,
formatvalue=lambda value: '=' + pydoc.text.repr(value))
highlight = {}
def reader(lnum=[lnum]):
highlight[lnum[0]] = 1
try:
return linecache.getline(file, lnum[0])
finally:
lnum[0] += 1
vars = scanvars(reader, frame, locals)
rows = [' %s %s' % (file, call)]
if index is not None:
i = lnum - index
for line in lines:
num = '%5d ' % i
rows.append(num + line.rstrip())
i += 1
done, dump = {}, []
for name, where, value in vars:
if name in done:
continue
done[name] = 1
if value is not __UNDEF__:
if where == 'global':
name = 'global ' + name
elif where != 'local':
name = where + name.split('.')[-1]
dump.append('%s = %s' % (name, pydoc.text.repr(value)))
else:
dump.append(name + ' undefined')
rows.append('\n'.join(dump))
frames.append('\n%s\n' % '\n'.join(rows))
exception = ['%s: %s' % (str(etype), str(evalue))]
for name in dir(evalue):
value = pydoc.text.repr(getattr(evalue, name))
exception.append('\n%s%s = %s' % (' ' * 4, name, value))
return head + ''.join(frames) + ''.join(exception) + '''
The above is a description of an error in a Python program. Here is
the original traceback:
%s
''' % ''.join(traceback.format_exception(etype, evalue, etb))
class Hook:
"""A hook to replace sys.excepthook"""
def __init__(self, logdir=None, context=5, file=None):
self.logdir = logdir # log tracebacks to files if not None
self.context = context # number of source code lines per frame
self.file = file or sys.stdout # place to send the output
def __call__(self, etype, evalue, etb):
self.handle((etype, evalue, etb))
def handle(self, info=None):
info = info or sys.exc_info()
formatter = text
try:
doc = formatter(info, self.context)
except: # just in case something goes wrong
doc = ''.join(traceback.format_exception(*info))
self.file.write(doc + '\n')
if self.logdir is not None:
suffix = '.txt'
(fd, path) = tempfile.mkstemp(suffix=suffix, dir=self.logdir)
try:
with os.fdopen(fd, 'w') as file:
file.write(doc)
msg = '%s contains the description of this error.' % path
except:
msg = 'Tried to save traceback to %s, but failed.' % path
self.file.write(msg + '\n')
try:
self.file.flush()
except:
pass
handler = Hook().handle
def enable(logdir=None, context=5):
"""Install an exception handler that sends verbose tracebacks to STDOUT."""
sys.excepthook = Hook(logdir=logdir, context=context)

View File

@@ -66,7 +66,8 @@ def compatibility(mod_name, compatible):
if not platform_found:
mod = mod_name.split('.')[-1]
compat_list = ', '.join(compatible)
warning_message(f'{mod} parser not compatible with your OS ({sys.platform}).\n Compatible platforms: {compat_list}')
warning_message(f'{mod} parser not compatible with your OS ({sys.platform}).\n'
f' Compatible platforms: {compat_list}')
def has_data(data):

273
man/jc.1 Normal file
View File

@@ -0,0 +1,273 @@
.TH jc 1 2020-07-12 1.13.0 "JSON CLI output utility"
.SH NAME
jc \- JSONifies the output of many CLI tools and file-types
.SH SYNOPSIS
COMMAND | jc PARSER [OPTIONS]
or magic syntax:
jc [OPTIONS] COMMAND
.SH DESCRIPTION
jc JSONifies the output of many CLI tools and file-types for easier parsing in scripts. jc accepts piped input from STDIN and outputs a JSON representation of the previous command's output to STDOUT. Alternatively, the "magic" syntax can be used by prepending jc to the command to be converted. Options can be passed to jc immediately before the command is given. (Note: command aliases are not supported).
.SH OPTIONS
.B
Parsers:
.RS
.TP
.B
\fB--airport\fP
airport \fB-I\fP command parser
.TP
.B
\fB--airport-s\fP
airport \fB-s\fP command parser
.TP
.B
\fB--arp\fP
arp command parser
.TP
.B
\fB--blkid\fP
blkid command parser
.TP
.B
\fB--crontab\fP
crontab command and file parser
.TP
.B
\fB--crontab-u\fP
crontab file parser with user support
.TP
.B
\fB--csv\fP
CSV file parser
.TP
.B
\fB--df\fP
df command parser
.TP
.B
\fB--dig\fP
dig command parser
.TP
.B
\fB--dmidecode\fP
dmidecode command parser
.TP
.B
\fB--du\fP
du command parser
.TP
.B
\fB--env\fP
env command parser
.TP
.B
\fB--file\fP
file command parser
.TP
.B
\fB--free\fP
free command parser
.TP
.B
\fB--fstab\fP
fstab file parser
.TP
.B
\fB--group\fP
/etc/group file parser
.TP
.B
\fB--gshadow\fP
/etc/gshadow file parser
.TP
.B
\fB--history\fP
history command parser
.TP
.B
\fB--hosts\fP
/etc/hosts file parser
.TP
.B
\fB--id\fP
id command parser
.TP
.B
\fB--ifconfig\fP
ifconfig command parser
.TP
.B
\fB--ini\fP
INI file parser. Also parses files/output containing simple key/value pairs
.TP
.B
\fB--iptables\fP
iptables command parser
.TP
.B
\fB--jobs\fP
jobs command parser
.TP
.B
\fB--last\fP
last and lastb command parser
.TP
.B
\fB--ls\fP
ls command parser
.TP
.B
\fB--lsblk\fP
lsblk command parser
.TP
.B
\fB--lsmod\fP
lsmod command parser
.TP
.B
\fB--lsof\fP
lsof command parser
.TP
.B
\fB--mount\fP
mount command parser
.TP
.B
\fB--netstat\fP
netstat command parser
.TP
.B
\fB--ntpq\fP
ntpq \fB-p\fP command parser
.TP
.B
\fB--passwd\fP
/etc/passwd file parser
.TP
.B
\fB--ping\fP
ping command parser
.TP
.B
\fB--pip-list\fP
pip list command parser
.TP
.B
\fB--pip-show\fP
pip show command parser
.TP
.B
\fB--ps\fP
ps command parser
.TP
.B
\fB--route\fP
route command parser
.TP
.B
\fB--shadow\fP
/etc/shadow file parser
.TP
.B
\fB--ss\fP
ss command parser
.TP
.B
\fB--stat\fP
stat command parser
.TP
.B
\fB--sysctl\fP
sysctl command parser
.TP
.B
\fB--systemctl\fP
systemctl command parser
.TP
.B
\fB--systemctl-lj\fP
systemctl list-jobs command parser
.TP
.B
\fB--systemctl-ls\fP
systemctl list-sockets command parser
.TP
.B
\fB--systemctl-luf\fP
systemctl list-unit-files command parser
.TP
.B
\fB--timedatectl\fP
timedatectl status command parser
.TP
.B
\fB--tracepath\fP
tracepath command parser
.TP
.B
\fB--traceroute\fP
traceroute command parser
.TP
.B
\fB--uname\fP
uname \fB-a\fP command parser
.TP
.B
\fB--uptime\fP
uptime command parser
.TP
.B
\fB--w\fP
w command parser
.TP
.B
\fB--who\fP
who command parser
.TP
.B
\fB--xml\fP
XML file parser
.TP
.B
\fB--yaml\fP
YAML file parser
.RE
.PP
Options:
.RS
.TP
.B
\fB-a\fP
about jc
.TP
.B
\fB-d\fP
debug - show traceback (\fB-dd\fP for verbose traceback)
.TP
.B
\fB-m\fP
monochrome output
.TP
.B
\fB-p\fP
pretty print output
.TP
.B
\fB-q\fP
quiet - suppress warnings
.TP
.B
\fB-r\fP
raw JSON output
.RE
.PP
Example:
ls \fB-al\fP | jc \fB--ls\fP \fB-p\fP
.RS
.PP
or using the magic syntax:
.PP
jc \fB-p\fP ls \fB-al\fP

View File

@@ -1,3 +1,3 @@
ruamel.yaml>=0.15.0
xmltodict>=0.12.0
Pygments>=2.4.2
Pygments>=2.3.0

View File

@@ -5,14 +5,14 @@ with open('README.md', 'r') as f:
setuptools.setup(
name='jc',
version='1.11.8',
version='1.13.1',
author='Kelly Brazil',
author_email='kellyjonbrazil@gmail.com',
description='Converts the output of popular command-line tools and file-types to JSON.',
install_requires=[
'ruamel.yaml>=0.15.0',
'xmltodict>=0.12.0',
'Pygments>=2.4.2'
'Pygments>=2.3.0'
],
license='MIT',
long_description=long_description,

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.189.67", "data_bytes": 1400, "pattern": "0xabcd", "destination": "turner-tls.map.fastly.net", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19146.0, "round_trip_ms_min": 28.96, "round_trip_ms_avg": 34.468, "round_trip_ms_max": 38.892, "round_trip_ms_stddev": 3.497, "responses": [{"type": "reply", "timestamp": 1594978465.914536, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 1, "ttl": 59, "time_ms": 31.4, "duplicate": false}, {"type": "reply", "timestamp": 1594978465.993009, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 2, "ttl": 59, "time_ms": 30.3, "duplicate": false}, {"type": "reply", "timestamp": 1594978467.010196, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 3, "ttl": 59, "time_ms": 32.0, "duplicate": false}, {"type": "reply", "timestamp": 1594978468.033743, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 4, "ttl": 59, "time_ms": 38.8, "duplicate": false}, {"type": "reply", "timestamp": 1594978469.051227, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 5, "ttl": 59, "time_ms": 38.0, "duplicate": false}, {"type": "reply", "timestamp": 1594978470.048764, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 6, "ttl": 59, "time_ms": 29.9, "duplicate": false}, {"type": "reply", "timestamp": 1594978471.051945, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 7, "ttl": 59, "time_ms": 28.9, "duplicate": false}, {"type": "reply", "timestamp": 1594978472.064206, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 8, "ttl": 59, "time_ms": 37.4, "duplicate": false}, {"type": "reply", "timestamp": 1594978473.062587, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 9, "ttl": 59, "time_ms": 31.5, "duplicate": false}, {"type": "reply", "timestamp": 1594978474.074343, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 10, "ttl": 59, "time_ms": 38.3, "duplicate": false}, {"type": "reply", "timestamp": 1594978475.079703, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 11, "ttl": 59, "time_ms": 38.8, "duplicate": false}, {"type": "reply", "timestamp": 1594978476.076383, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 12, "ttl": 59, "time_ms": 30.7, "duplicate": false}, {"type": "reply", "timestamp": 1594978477.084119, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 13, "ttl": 59, "time_ms": 30.7, "duplicate": false}, {"type": "reply", "timestamp": 1594978478.092207, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 14, "ttl": 59, "time_ms": 31.6, "duplicate": false}, {"type": "reply", "timestamp": 1594978479.104358, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 15, "ttl": 59, "time_ms": 37.7, "duplicate": false}, {"type": "reply", "timestamp": 1594978480.106907, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 16, "ttl": 59, "time_ms": 37.5, "duplicate": false}, {"type": "reply", "timestamp": 1594978481.11558, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 17, "ttl": 59, "time_ms": 37.3, "duplicate": false}, {"type": "reply", "timestamp": 1594978482.119872, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 18, "ttl": 59, "time_ms": 33.8, "duplicate": false}, {"type": "reply", "timestamp": 1594978483.131901, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 19, "ttl": 59, "time_ms": 37.0, "duplicate": false}, {"type": "reply", "timestamp": 1594978484.141117, "bytes": 1408, "response_ip": "151.101.189.67", "icmp_seq": 20, "ttl": 59, "time_ms": 36.9, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING turner-tls.map.fastly.net (151.101.189.67) 1400(1428) bytes of data.
[1594978465.914536] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=1 ttl=59 time=31.4 ms
[1594978465.993009] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=2 ttl=59 time=30.3 ms
[1594978467.010196] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=3 ttl=59 time=32.0 ms
[1594978468.033743] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=4 ttl=59 time=38.8 ms
[1594978469.051227] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=5 ttl=59 time=38.0 ms
[1594978470.048764] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=6 ttl=59 time=29.9 ms
[1594978471.051945] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=7 ttl=59 time=28.9 ms
[1594978472.064206] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=8 ttl=59 time=37.4 ms
[1594978473.062587] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=9 ttl=59 time=31.5 ms
[1594978474.074343] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=10 ttl=59 time=38.3 ms
[1594978475.079703] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=11 ttl=59 time=38.8 ms
[1594978476.076383] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=12 ttl=59 time=30.7 ms
[1594978477.084119] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=13 ttl=59 time=30.7 ms
[1594978478.092207] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=14 ttl=59 time=31.6 ms
[1594978479.104358] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=15 ttl=59 time=37.7 ms
[1594978480.106907] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=16 ttl=59 time=37.5 ms
[1594978481.115580] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=17 ttl=59 time=37.3 ms
[1594978482.119872] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=18 ttl=59 time=33.8 ms
[1594978483.131901] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=19 ttl=59 time=37.0 ms
[1594978484.141117] 1408 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=20 ttl=59 time=36.9 ms
--- turner-tls.map.fastly.net ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19146ms
rtt min/avg/max/mdev = 28.960/34.468/38.892/3.497 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.129.67", "data_bytes": 56, "pattern": "0xabcd", "destination": "turner-tls.map.fastly.net", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19233.0, "round_trip_ms_min": 23.359, "round_trip_ms_avg": 28.495, "round_trip_ms_max": 33.979, "round_trip_ms_stddev": 4.081, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 1, "ttl": 59, "time_ms": 24.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 2, "ttl": 59, "time_ms": 23.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 3, "ttl": 59, "time_ms": 32.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 4, "ttl": 59, "time_ms": 32.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 5, "ttl": 59, "time_ms": 26.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 6, "ttl": 59, "time_ms": 24.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 7, "ttl": 59, "time_ms": 24.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 8, "ttl": 59, "time_ms": 33.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 9, "ttl": 59, "time_ms": 32.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 10, "ttl": 59, "time_ms": 31.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 11, "ttl": 59, "time_ms": 25.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 12, "ttl": 59, "time_ms": 33.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 13, "ttl": 59, "time_ms": 23.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 14, "ttl": 59, "time_ms": 23.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 15, "ttl": 59, "time_ms": 33.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 16, "ttl": 59, "time_ms": 24.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 17, "ttl": 59, "time_ms": 30.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 18, "ttl": 59, "time_ms": 24.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 19, "ttl": 59, "time_ms": 32.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 20, "ttl": 59, "time_ms": 31.0, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING turner-tls.map.fastly.net (151.101.129.67) 56(84) bytes of data.
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=1 ttl=59 time=24.4 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=2 ttl=59 time=23.3 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=3 ttl=59 time=32.6 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=4 ttl=59 time=32.6 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=5 ttl=59 time=26.9 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=6 ttl=59 time=24.1 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=7 ttl=59 time=24.6 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=8 ttl=59 time=33.9 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=9 ttl=59 time=32.7 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=10 ttl=59 time=31.2 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=11 ttl=59 time=25.7 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=12 ttl=59 time=33.8 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=13 ttl=59 time=23.7 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=14 ttl=59 time=23.9 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=15 ttl=59 time=33.6 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=16 ttl=59 time=24.5 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=17 ttl=59 time=30.1 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=18 ttl=59 time=24.1 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=19 ttl=59 time=32.2 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=20 ttl=59 time=31.0 ms
--- turner-tls.map.fastly.net ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19233ms
rtt min/avg/max/mdev = 23.359/28.495/33.979/4.081 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.189.67", "data_bytes": 56, "pattern": null, "destination": "turner-tls.map.fastly.net", "packets_transmitted": 20, "packets_received": 19, "packet_loss_percent": 5.0, "duplicates": 0, "time_ms": 19125.0, "round_trip_ms_min": 27.656, "round_trip_ms_avg": 33.717, "round_trip_ms_max": 36.758, "round_trip_ms_stddev": 2.814, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 1, "ttl": 59, "time_ms": 29.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 2, "ttl": 59, "time_ms": 30.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 3, "ttl": 59, "time_ms": 35.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 4, "ttl": 59, "time_ms": 35.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 5, "ttl": 59, "time_ms": 34.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 6, "ttl": 59, "time_ms": 29.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 7, "ttl": 59, "time_ms": 27.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 8, "ttl": 59, "time_ms": 28.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 9, "ttl": 59, "time_ms": 35.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 10, "ttl": 59, "time_ms": 34.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 11, "ttl": 59, "time_ms": 35.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 12, "ttl": 59, "time_ms": 35.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 13, "ttl": 59, "time_ms": 34.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 14, "ttl": 59, "time_ms": 35.5, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 15}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 16, "ttl": 59, "time_ms": 36.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 17, "ttl": 59, "time_ms": 34.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 18, "ttl": 59, "time_ms": 34.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 19, "ttl": 59, "time_ms": 36.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.189.67", "icmp_seq": 20, "ttl": 59, "time_ms": 34.3, "duplicate": false}]}

View File

@@ -0,0 +1,25 @@
PING turner-tls.map.fastly.net (151.101.189.67) 56(84) bytes of data.
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=1 ttl=59 time=29.6 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=2 ttl=59 time=30.1 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=3 ttl=59 time=35.5 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=4 ttl=59 time=35.5 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=5 ttl=59 time=34.9 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=6 ttl=59 time=29.9 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=7 ttl=59 time=27.6 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=8 ttl=59 time=28.6 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=9 ttl=59 time=35.2 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=10 ttl=59 time=34.4 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=11 ttl=59 time=35.9 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=12 ttl=59 time=35.8 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=13 ttl=59 time=34.4 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=14 ttl=59 time=35.5 ms
no answer yet for icmp_seq=15
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=16 ttl=59 time=36.6 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=17 ttl=59 time=34.6 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=18 ttl=59 time=34.6 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=19 ttl=59 time=36.7 ms
64 bytes from 151.101.189.67 (151.101.189.67): icmp_seq=20 ttl=59 time=34.3 ms
--- turner-tls.map.fastly.net ping statistics ---
20 packets transmitted, 19 received, 5% packet loss, time 19125ms
rtt min/avg/max/mdev = 27.656/33.717/36.758/2.814 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 56, "pattern": null, "destination": "127.0.0.1", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19081.0, "round_trip_ms_min": 0.041, "round_trip_ms_avg": 0.048, "round_trip_ms_max": 0.081, "round_trip_ms_stddev": 0.009, "responses": [{"type": "reply", "timestamp": 1595037214.261953, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.041, "duplicate": false}, {"type": "reply", "timestamp": 1595037215.264798, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.048, "duplicate": false}, {"type": "reply", "timestamp": 1595037216.272296, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 3, "ttl": 64, "time_ms": 0.047, "duplicate": false}, {"type": "reply", "timestamp": 1595037217.275851, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 4, "ttl": 64, "time_ms": 0.062, "duplicate": false}, {"type": "reply", "timestamp": 1595037218.284242, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 5, "ttl": 64, "time_ms": 0.045, "duplicate": false}, {"type": "reply", "timestamp": 1595037219.283712, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 6, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": 1595037220.290949, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 7, "ttl": 64, "time_ms": 0.046, "duplicate": false}, {"type": "reply", "timestamp": 1595037221.295962, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 8, "ttl": 64, "time_ms": 0.044, "duplicate": false}, {"type": "reply", "timestamp": 1595037222.30702, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 9, "ttl": 64, "time_ms": 0.048, "duplicate": false}, {"type": "reply", "timestamp": 1595037223.313919, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 10, "ttl": 64, "time_ms": 0.081, "duplicate": false}, {"type": "reply", "timestamp": 1595037224.313679, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 11, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": 1595037225.320748, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 12, "ttl": 64, "time_ms": 0.044, "duplicate": false}, {"type": "reply", "timestamp": 1595037226.324322, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 13, "ttl": 64, "time_ms": 0.045, "duplicate": false}, {"type": "reply", "timestamp": 1595037227.325835, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 14, "ttl": 64, "time_ms": 0.046, "duplicate": false}, {"type": "reply", "timestamp": 1595037228.327028, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 15, "ttl": 64, "time_ms": 0.046, "duplicate": false}, {"type": "reply", "timestamp": 1595037229.329891, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 16, "ttl": 64, "time_ms": 0.052, "duplicate": false}, {"type": "reply", "timestamp": 1595037230.333891, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 17, "ttl": 64, "time_ms": 0.044, "duplicate": false}, {"type": "reply", "timestamp": 1595037231.338137, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 18, "ttl": 64, "time_ms": 0.046, "duplicate": false}, {"type": "reply", "timestamp": 1595037232.340475, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 19, "ttl": 64, "time_ms": 0.048, "duplicate": false}, {"type": "reply", "timestamp": 1595037233.343058, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 20, "ttl": 64, "time_ms": 0.045, "duplicate": false}]}

View File

@@ -0,0 +1,25 @@
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
[1595037214.261953] 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.041 ms
[1595037215.264798] 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.048 ms
[1595037216.272296] 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.047 ms
[1595037217.275851] 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.062 ms
[1595037218.284242] 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.045 ms
[1595037219.283712] 64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.043 ms
[1595037220.290949] 64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.046 ms
[1595037221.295962] 64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.044 ms
[1595037222.307020] 64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.048 ms
[1595037223.313919] 64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.081 ms
[1595037224.313679] 64 bytes from 127.0.0.1: icmp_seq=11 ttl=64 time=0.043 ms
[1595037225.320748] 64 bytes from 127.0.0.1: icmp_seq=12 ttl=64 time=0.044 ms
[1595037226.324322] 64 bytes from 127.0.0.1: icmp_seq=13 ttl=64 time=0.045 ms
[1595037227.325835] 64 bytes from 127.0.0.1: icmp_seq=14 ttl=64 time=0.046 ms
[1595037228.327028] 64 bytes from 127.0.0.1: icmp_seq=15 ttl=64 time=0.046 ms
[1595037229.329891] 64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.052 ms
[1595037230.333891] 64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.044 ms
[1595037231.338137] 64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.046 ms
[1595037232.340475] 64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.048 ms
[1595037233.343058] 64 bytes from 127.0.0.1: icmp_seq=20 ttl=64 time=0.045 ms
--- 127.0.0.1 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19081ms
rtt min/avg/max/mdev = 0.041/0.048/0.081/0.009 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 56, "pattern": null, "destination": "127.0.0.1", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19070.0, "round_trip_ms_min": 0.038, "round_trip_ms_avg": 0.047, "round_trip_ms_max": 0.08, "round_trip_ms_stddev": 0.011, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.038, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 3, "ttl": 64, "time_ms": 0.044, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 4, "ttl": 64, "time_ms": 0.052, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 5, "ttl": 64, "time_ms": 0.08, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 6, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 7, "ttl": 64, "time_ms": 0.047, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 8, "ttl": 64, "time_ms": 0.04, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 9, "ttl": 64, "time_ms": 0.052, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 10, "ttl": 64, "time_ms": 0.044, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 11, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 12, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 13, "ttl": 64, "time_ms": 0.05, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 14, "ttl": 64, "time_ms": 0.045, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 15, "ttl": 64, "time_ms": 0.062, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 16, "ttl": 64, "time_ms": 0.046, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 17, "ttl": 64, "time_ms": 0.046, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 18, "ttl": 64, "time_ms": 0.045, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 19, "ttl": 64, "time_ms": 0.044, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 20, "ttl": 64, "time_ms": 0.044, "duplicate": false}]}

25
tests/fixtures/centos-7.7/ping-ip-O.out vendored Normal file
View File

@@ -0,0 +1,25 @@
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.052 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.080 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.047 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.052 ms
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=11 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=12 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=13 ttl=64 time=0.050 ms
64 bytes from 127.0.0.1: icmp_seq=14 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=15 ttl=64 time=0.062 ms
64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.046 ms
64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.046 ms
64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=20 ttl=64 time=0.044 ms
--- 127.0.0.1 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19070ms
rtt min/avg/max/mdev = 0.038/0.047/0.080/0.011 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "192.168.1.255", "data_bytes": 56, "pattern": null, "destination": "192.168.1.255", "packets_transmitted": 2, "packets_received": 2, "packet_loss_percent": 0.0, "duplicates": 19, "time_ms": 1013.0, "round_trip_ms_min": 0.586, "round_trip_ms_avg": 504.26, "round_trip_ms_max": 1276.448, "round_trip_ms_stddev": 417.208, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.221", "icmp_seq": 1, "ttl": 64, "time_ms": 0.586, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.88", "icmp_seq": 1, "ttl": 64, "time_ms": 382.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.78", "icmp_seq": 1, "ttl": 128, "time_ms": 382.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.217", "icmp_seq": 1, "ttl": 255, "time_ms": 387.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.186", "icmp_seq": 1, "ttl": 64, "time_ms": 389.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.89", "icmp_seq": 1, "ttl": 64, "time_ms": 389.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.75", "icmp_seq": 1, "ttl": 64, "time_ms": 584.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.221", "icmp_seq": 2, "ttl": 64, "time_ms": 0.861, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.78", "icmp_seq": 2, "ttl": 128, "time_ms": 4.17, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.88", "icmp_seq": 2, "ttl": 64, "time_ms": 4.19, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.89", "icmp_seq": 2, "ttl": 64, "time_ms": 12.7, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.81", "icmp_seq": 1, "ttl": 64, "time_ms": 1029.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.72", "icmp_seq": 1, "ttl": 64, "time_ms": 1276.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.251", "icmp_seq": 1, "ttl": 64, "time_ms": 1276.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.251", "icmp_seq": 2, "ttl": 64, "time_ms": 262.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.72", "icmp_seq": 2, "ttl": 64, "time_ms": 263.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.246", "icmp_seq": 2, "ttl": 255, "time_ms": 263.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.217", "icmp_seq": 2, "ttl": 255, "time_ms": 919.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.186", "icmp_seq": 2, "ttl": 64, "time_ms": 919.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.75", "icmp_seq": 2, "ttl": 64, "time_ms": 919.0, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "192.168.1.81", "icmp_seq": 2, "ttl": 64, "time_ms": 919.0, "duplicate": true}]}

View File

@@ -0,0 +1,27 @@
WARNING: pinging broadcast address
PING 192.168.1.255 (192.168.1.255) 56(84) bytes of data.
64 bytes from 192.168.1.221: icmp_seq=1 ttl=64 time=0.586 ms
64 bytes from 192.168.1.88: icmp_seq=1 ttl=64 time=382 ms (DUP!)
64 bytes from 192.168.1.78: icmp_seq=1 ttl=128 time=382 ms (DUP!)
64 bytes from 192.168.1.217: icmp_seq=1 ttl=255 time=387 ms (DUP!)
64 bytes from 192.168.1.186: icmp_seq=1 ttl=64 time=389 ms (DUP!)
64 bytes from 192.168.1.89: icmp_seq=1 ttl=64 time=389 ms (DUP!)
64 bytes from 192.168.1.75: icmp_seq=1 ttl=64 time=584 ms (DUP!)
64 bytes from 192.168.1.221: icmp_seq=2 ttl=64 time=0.861 ms
64 bytes from 192.168.1.78: icmp_seq=2 ttl=128 time=4.17 ms (DUP!)
64 bytes from 192.168.1.88: icmp_seq=2 ttl=64 time=4.19 ms (DUP!)
64 bytes from 192.168.1.89: icmp_seq=2 ttl=64 time=12.7 ms (DUP!)
64 bytes from 192.168.1.81: icmp_seq=1 ttl=64 time=1029 ms (DUP!)
64 bytes from 192.168.1.72: icmp_seq=1 ttl=64 time=1276 ms (DUP!)
64 bytes from 192.168.1.251: icmp_seq=1 ttl=64 time=1276 ms (DUP!)
64 bytes from 192.168.1.251: icmp_seq=2 ttl=64 time=262 ms (DUP!)
64 bytes from 192.168.1.72: icmp_seq=2 ttl=64 time=263 ms (DUP!)
64 bytes from 192.168.1.246: icmp_seq=2 ttl=255 time=263 ms (DUP!)
64 bytes from 192.168.1.217: icmp_seq=2 ttl=255 time=919 ms (DUP!)
64 bytes from 192.168.1.186: icmp_seq=2 ttl=64 time=919 ms (DUP!)
64 bytes from 192.168.1.75: icmp_seq=2 ttl=64 time=919 ms (DUP!)
64 bytes from 192.168.1.81: icmp_seq=2 ttl=64 time=919 ms (DUP!)
--- 192.168.1.255 ping statistics ---
2 packets transmitted, 2 received, +19 duplicates, 0% packet loss, time 1013ms
rtt min/avg/max/mdev = 0.586/504.260/1276.448/417.208 ms, pipe 2

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:2d::323", "data_bytes": 1400, "pattern": "0xabcd", "destination": "www.cnn.com", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19077.0, "round_trip_ms_min": 31.845, "round_trip_ms_avg": 39.274, "round_trip_ms_max": 43.243, "round_trip_ms_stddev": 3.522, "responses": [{"type": "reply", "timestamp": 1594978345.609669, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 1, "ttl": 59, "time_ms": 32.4, "duplicate": false}, {"type": "reply", "timestamp": 1594978346.58542, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 2, "ttl": 59, "time_ms": 39.9, "duplicate": false}, {"type": "reply", "timestamp": 1594978347.594128, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 3, "ttl": 59, "time_ms": 42.3, "duplicate": false}, {"type": "reply", "timestamp": 1594978348.595221, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 4, "ttl": 59, "time_ms": 40.2, "duplicate": false}, {"type": "reply", "timestamp": 1594978349.600372, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 5, "ttl": 59, "time_ms": 43.2, "duplicate": false}, {"type": "reply", "timestamp": 1594978350.590676, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 6, "ttl": 59, "time_ms": 31.8, "duplicate": false}, {"type": "reply", "timestamp": 1594978351.601527, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 7, "ttl": 59, "time_ms": 41.8, "duplicate": false}, {"type": "reply", "timestamp": 1594978352.604195, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 8, "ttl": 59, "time_ms": 41.7, "duplicate": false}, {"type": "reply", "timestamp": 1594978353.607212, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 9, "ttl": 59, "time_ms": 42.0, "duplicate": false}, {"type": "reply", "timestamp": 1594978354.610771, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 10, "ttl": 59, "time_ms": 40.7, "duplicate": false}, {"type": "reply", "timestamp": 1594978355.613729, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 11, "ttl": 59, "time_ms": 40.4, "duplicate": false}, {"type": "reply", "timestamp": 1594978356.611887, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 12, "ttl": 59, "time_ms": 32.6, "duplicate": false}, {"type": "reply", "timestamp": 1594978357.62481, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 13, "ttl": 59, "time_ms": 40.1, "duplicate": false}, {"type": "reply", "timestamp": 1594978358.629185, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 14, "ttl": 59, "time_ms": 42.0, "duplicate": false}, {"type": "reply", "timestamp": 1594978359.634854, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 15, "ttl": 59, "time_ms": 41.2, "duplicate": false}, {"type": "reply", "timestamp": 1594978360.638344, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 16, "ttl": 59, "time_ms": 40.6, "duplicate": false}, {"type": "reply", "timestamp": 1594978361.640968, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 17, "ttl": 59, "time_ms": 40.7, "duplicate": false}, {"type": "reply", "timestamp": 1594978362.645739, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 18, "ttl": 59, "time_ms": 39.9, "duplicate": false}, {"type": "reply", "timestamp": 1594978363.6467, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 19, "ttl": 59, "time_ms": 37.5, "duplicate": false}, {"type": "reply", "timestamp": 1594978364.650853, "bytes": 1408, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 20, "ttl": 59, "time_ms": 33.6, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING www.cnn.com(2a04:4e42:2d::323 (2a04:4e42:2d::323)) 1400 data bytes
[1594978345.609669] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=1 ttl=59 time=32.4 ms
[1594978346.585420] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=2 ttl=59 time=39.9 ms
[1594978347.594128] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=3 ttl=59 time=42.3 ms
[1594978348.595221] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=4 ttl=59 time=40.2 ms
[1594978349.600372] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=5 ttl=59 time=43.2 ms
[1594978350.590676] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=6 ttl=59 time=31.8 ms
[1594978351.601527] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=7 ttl=59 time=41.8 ms
[1594978352.604195] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=8 ttl=59 time=41.7 ms
[1594978353.607212] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=9 ttl=59 time=42.0 ms
[1594978354.610771] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=10 ttl=59 time=40.7 ms
[1594978355.613729] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=11 ttl=59 time=40.4 ms
[1594978356.611887] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=12 ttl=59 time=32.6 ms
[1594978357.624810] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=13 ttl=59 time=40.1 ms
[1594978358.629185] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=14 ttl=59 time=42.0 ms
[1594978359.634854] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=15 ttl=59 time=41.2 ms
[1594978360.638344] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=16 ttl=59 time=40.6 ms
[1594978361.640968] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=17 ttl=59 time=40.7 ms
[1594978362.645739] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=18 ttl=59 time=39.9 ms
[1594978363.646700] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=19 ttl=59 time=37.5 ms
[1594978364.650853] 1408 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=20 ttl=59 time=33.6 ms
--- www.cnn.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19077ms
rtt min/avg/max/mdev = 31.845/39.274/43.243/3.522 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:2d::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "www.cnn.com", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19164.0, "round_trip_ms_min": 30.757, "round_trip_ms_avg": 37.455, "round_trip_ms_max": 42.652, "round_trip_ms_stddev": 3.338, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 1, "ttl": 59, "time_ms": 30.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 2, "ttl": 59, "time_ms": 39.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 3, "ttl": 59, "time_ms": 32.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 4, "ttl": 59, "time_ms": 38.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 5, "ttl": 59, "time_ms": 38.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 6, "ttl": 59, "time_ms": 42.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 7, "ttl": 59, "time_ms": 30.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 8, "ttl": 59, "time_ms": 39.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 9, "ttl": 59, "time_ms": 39.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 10, "ttl": 59, "time_ms": 38.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 11, "ttl": 59, "time_ms": 38.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 12, "ttl": 59, "time_ms": 38.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 13, "ttl": 59, "time_ms": 39.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 14, "ttl": 59, "time_ms": 37.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 15, "ttl": 59, "time_ms": 33.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 16, "ttl": 59, "time_ms": 39.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 17, "ttl": 59, "time_ms": 38.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 18, "ttl": 59, "time_ms": 41.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 19, "ttl": 59, "time_ms": 32.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:2d::323", "icmp_seq": 20, "ttl": 59, "time_ms": 38.4, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING www.cnn.com(2a04:4e42:2d::323 (2a04:4e42:2d::323)) 56 data bytes
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=1 ttl=59 time=30.9 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=2 ttl=59 time=39.0 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=3 ttl=59 time=32.6 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=4 ttl=59 time=38.4 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=5 ttl=59 time=38.8 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=6 ttl=59 time=42.6 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=7 ttl=59 time=30.7 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=8 ttl=59 time=39.4 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=9 ttl=59 time=39.3 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=10 ttl=59 time=38.9 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=11 ttl=59 time=38.6 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=12 ttl=59 time=38.2 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=13 ttl=59 time=39.6 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=14 ttl=59 time=37.4 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=15 ttl=59 time=33.7 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=16 ttl=59 time=39.4 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=17 ttl=59 time=38.9 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=18 ttl=59 time=41.3 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=19 ttl=59 time=32.2 ms
64 bytes from 2a04:4e42:2d::323 (2a04:4e42:2d::323): icmp_seq=20 ttl=59 time=38.4 ms
--- www.cnn.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19164ms
rtt min/avg/max/mdev = 30.757/37.455/42.652/3.338 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:600::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "2a04:4e42:600::323", "packets_transmitted": 20, "packets_received": 19, "packet_loss_percent": 5.0, "duplicates": 0, "time_ms": 19074.0, "round_trip_ms_min": 28.15, "round_trip_ms_avg": 33.534, "round_trip_ms_max": 39.843, "round_trip_ms_stddev": 3.489, "responses": [{"type": "reply", "timestamp": 1594976827.240914, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 1, "ttl": 59, "time_ms": 28.7, "duplicate": false}, {"type": "reply", "timestamp": 1594976828.25493, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 2, "ttl": 59, "time_ms": 37.2, "duplicate": false}, {"type": "reply", "timestamp": 1594976829.252877, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 3, "ttl": 59, "time_ms": 29.7, "duplicate": false}, {"type": "reply", "timestamp": 1594976830.262654, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 4, "ttl": 59, "time_ms": 37.7, "duplicate": false}, {"type": "reply", "timestamp": 1594976831.265626, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 5, "ttl": 59, "time_ms": 34.8, "duplicate": false}, {"type": "reply", "timestamp": 1594976832.269834, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 6, "ttl": 59, "time_ms": 35.6, "duplicate": false}, {"type": "reply", "timestamp": 1594976833.268059, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 7, "ttl": 59, "time_ms": 28.4, "duplicate": false}, {"type": "reply", "timestamp": 1594976834.274292, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 8, "ttl": 59, "time_ms": 28.1, "duplicate": false}, {"type": "reply", "timestamp": 1594976835.287123, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 9, "ttl": 59, "time_ms": 34.9, "duplicate": false}, {"type": "reply", "timestamp": 1594976836.287707, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 10, "ttl": 59, "time_ms": 34.4, "duplicate": false}, {"type": "reply", "timestamp": 1594976837.290589, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 11, "ttl": 59, "time_ms": 35.2, "duplicate": false}, {"type": "reply", "timestamp": 1594976838.293514, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 12, "ttl": 59, "time_ms": 35.4, "duplicate": false}, {"type": "reply", "timestamp": 1594976839.290914, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 13, "ttl": 59, "time_ms": 29.8, "duplicate": false}, {"type": "reply", "timestamp": 1594976840.292897, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 14, "ttl": 59, "time_ms": 28.5, "duplicate": false}, {"type": "timeout", "timestamp": 1594976842.269238, "icmp_seq": 15}, {"type": "reply", "timestamp": 1594976842.30145, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 16, "ttl": 59, "time_ms": 31.8, "duplicate": false}, {"type": "reply", "timestamp": 1594976843.312998, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 17, "ttl": 59, "time_ms": 39.8, "duplicate": false}, {"type": "reply", "timestamp": 1594976844.314228, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 18, "ttl": 59, "time_ms": 35.7, "duplicate": false}, {"type": "reply", "timestamp": 1594976845.315518, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 19, "ttl": 59, "time_ms": 35.1, "duplicate": false}, {"type": "reply", "timestamp": 1594976846.321706, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 20, "ttl": 59, "time_ms": 35.4, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING 2a04:4e42:600::323(2a04:4e42:600::323) 56 data bytes
[1594976827.240914] 64 bytes from 2a04:4e42:600::323: icmp_seq=1 ttl=59 time=28.7 ms
[1594976828.254930] 64 bytes from 2a04:4e42:600::323: icmp_seq=2 ttl=59 time=37.2 ms
[1594976829.252877] 64 bytes from 2a04:4e42:600::323: icmp_seq=3 ttl=59 time=29.7 ms
[1594976830.262654] 64 bytes from 2a04:4e42:600::323: icmp_seq=4 ttl=59 time=37.7 ms
[1594976831.265626] 64 bytes from 2a04:4e42:600::323: icmp_seq=5 ttl=59 time=34.8 ms
[1594976832.269834] 64 bytes from 2a04:4e42:600::323: icmp_seq=6 ttl=59 time=35.6 ms
[1594976833.268059] 64 bytes from 2a04:4e42:600::323: icmp_seq=7 ttl=59 time=28.4 ms
[1594976834.274292] 64 bytes from 2a04:4e42:600::323: icmp_seq=8 ttl=59 time=28.1 ms
[1594976835.287123] 64 bytes from 2a04:4e42:600::323: icmp_seq=9 ttl=59 time=34.9 ms
[1594976836.287707] 64 bytes from 2a04:4e42:600::323: icmp_seq=10 ttl=59 time=34.4 ms
[1594976837.290589] 64 bytes from 2a04:4e42:600::323: icmp_seq=11 ttl=59 time=35.2 ms
[1594976838.293514] 64 bytes from 2a04:4e42:600::323: icmp_seq=12 ttl=59 time=35.4 ms
[1594976839.290914] 64 bytes from 2a04:4e42:600::323: icmp_seq=13 ttl=59 time=29.8 ms
[1594976840.292897] 64 bytes from 2a04:4e42:600::323: icmp_seq=14 ttl=59 time=28.5 ms
[1594976842.269238] no answer yet for icmp_seq=15
[1594976842.301450] 64 bytes from 2a04:4e42:600::323: icmp_seq=16 ttl=59 time=31.8 ms
[1594976843.312998] 64 bytes from 2a04:4e42:600::323: icmp_seq=17 ttl=59 time=39.8 ms
[1594976844.314228] 64 bytes from 2a04:4e42:600::323: icmp_seq=18 ttl=59 time=35.7 ms
[1594976845.315518] 64 bytes from 2a04:4e42:600::323: icmp_seq=19 ttl=59 time=35.1 ms
[1594976846.321706] 64 bytes from 2a04:4e42:600::323: icmp_seq=20 ttl=59 time=35.4 ms
--- 2a04:4e42:600::323 ping statistics ---
20 packets transmitted, 19 received, 5% packet loss, time 19074ms
rtt min/avg/max/mdev = 28.150/33.534/39.843/3.489 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:600::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "2a04:4e42:600::323", "packets_transmitted": 20, "packets_received": 19, "packet_loss_percent": 5.0, "duplicates": 0, "time_ms": 19067.0, "round_trip_ms_min": 27.064, "round_trip_ms_avg": 33.626, "round_trip_ms_max": 38.146, "round_trip_ms_stddev": 3.803, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 1, "ttl": 59, "time_ms": 27.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 2, "ttl": 59, "time_ms": 28.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 3, "ttl": 59, "time_ms": 36.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 4, "ttl": 59, "time_ms": 28.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 5, "ttl": 59, "time_ms": 35.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 6, "ttl": 59, "time_ms": 34.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 7, "ttl": 59, "time_ms": 30.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 8, "ttl": 59, "time_ms": 28.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 9, "ttl": 59, "time_ms": 36.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 10, "ttl": 59, "time_ms": 36.3, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 11}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 12, "ttl": 59, "time_ms": 37.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 13, "ttl": 59, "time_ms": 30.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 14, "ttl": 59, "time_ms": 36.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 15, "ttl": 59, "time_ms": 35.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 16, "ttl": 59, "time_ms": 36.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 17, "ttl": 59, "time_ms": 37.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 18, "ttl": 59, "time_ms": 36.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 19, "ttl": 59, "time_ms": 27.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 20, "ttl": 59, "time_ms": 38.1, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING 2a04:4e42:600::323(2a04:4e42:600::323) 56 data bytes
64 bytes from 2a04:4e42:600::323: icmp_seq=1 ttl=59 time=27.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=2 ttl=59 time=28.4 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=3 ttl=59 time=36.0 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=4 ttl=59 time=28.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=5 ttl=59 time=35.8 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=6 ttl=59 time=34.4 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=7 ttl=59 time=30.7 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=8 ttl=59 time=28.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=9 ttl=59 time=36.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=10 ttl=59 time=36.3 ms
no answer yet for icmp_seq=11
64 bytes from 2a04:4e42:600::323: icmp_seq=12 ttl=59 time=37.4 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=13 ttl=59 time=30.7 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=14 ttl=59 time=36.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=15 ttl=59 time=35.4 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=16 ttl=59 time=36.3 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=17 ttl=59 time=37.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=18 ttl=59 time=36.2 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=19 ttl=59 time=27.0 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=20 ttl=59 time=38.1 ms
--- 2a04:4e42:600::323 ping statistics ---
20 packets transmitted, 19 received, 5% packet loss, time 19067ms
rtt min/avg/max/mdev = 27.064/33.626/38.146/3.803 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "ff02::1%ens33", "data_bytes": 56, "pattern": null, "destination": "ff02::1%ens33", "packets_transmitted": 5, "packets_received": 5, "packet_loss_percent": 0.0, "duplicates": 4, "time_ms": 4017.0, "round_trip_ms_min": 0.245, "round_trip_ms_avg": 4.726, "round_trip_ms_max": 12.568, "round_trip_ms_stddev": 5.395, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::c48:5896:526d:81ba%ens33", "icmp_seq": 1, "ttl": 64, "time_ms": 0.245, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::feae:34ff:fea1:3a80%ens33", "icmp_seq": 1, "ttl": 64, "time_ms": 3.65, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::c48:5896:526d:81ba%ens33", "icmp_seq": 2, "ttl": 64, "time_ms": 0.329, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::feae:34ff:fea1:3a80%ens33", "icmp_seq": 2, "ttl": 64, "time_ms": 11.7, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::c48:5896:526d:81ba%ens33", "icmp_seq": 3, "ttl": 64, "time_ms": 0.592, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::feae:34ff:fea1:3a80%ens33", "icmp_seq": 3, "ttl": 64, "time_ms": 12.3, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::c48:5896:526d:81ba%ens33", "icmp_seq": 4, "ttl": 64, "time_ms": 0.51, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::feae:34ff:fea1:3a80%ens33", "icmp_seq": 4, "ttl": 64, "time_ms": 12.5, "duplicate": true}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "fe80::c48:5896:526d:81ba%ens33", "icmp_seq": 5, "ttl": 64, "time_ms": 0.538, "duplicate": false}]}

View File

@@ -0,0 +1,14 @@
PING ff02::1%ens33(ff02::1%ens33) 56 data bytes
64 bytes from fe80::c48:5896:526d:81ba%ens33: icmp_seq=1 ttl=64 time=0.245 ms
64 bytes from fe80::feae:34ff:fea1:3a80%ens33: icmp_seq=1 ttl=64 time=3.65 ms (DUP!)
64 bytes from fe80::c48:5896:526d:81ba%ens33: icmp_seq=2 ttl=64 time=0.329 ms
64 bytes from fe80::feae:34ff:fea1:3a80%ens33: icmp_seq=2 ttl=64 time=11.7 ms (DUP!)
64 bytes from fe80::c48:5896:526d:81ba%ens33: icmp_seq=3 ttl=64 time=0.592 ms
64 bytes from fe80::feae:34ff:fea1:3a80%ens33: icmp_seq=3 ttl=64 time=12.3 ms (DUP!)
64 bytes from fe80::c48:5896:526d:81ba%ens33: icmp_seq=4 ttl=64 time=0.510 ms
64 bytes from fe80::feae:34ff:fea1:3a80%ens33: icmp_seq=4 ttl=64 time=12.5 ms (DUP!)
64 bytes from fe80::c48:5896:526d:81ba%ens33: icmp_seq=5 ttl=64 time=0.538 ms
--- ff02::1%ens33 ping statistics ---
5 packets transmitted, 5 received, +4 duplicates, 0% packet loss, time 4017ms
rtt min/avg/max/mdev = 0.245/4.726/12.568/5.395 ms

View File

@@ -0,0 +1 @@
[{"destination": "::/96", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "0.0.0.0/96", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:a00::/24", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:7f00::/24", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:a9fe::/32", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:ac10::/28", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:c0a8::/32", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:e000::/19", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2600:1700:bab0:d40::16/128", "next_hop": "::", "flags": "U", "metric": 100, "ref": 0, "use": 0, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "2600:1700:bab0:d40::/64", "next_hop": "::", "flags": "U", "metric": 100, "ref": 1, "use": 45, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "2600:1700:bab0:d40::/60", "next_hop": "fe80::feae:34ff:fea1:3a80", "flags": "UG", "metric": 100, "ref": 0, "use": 0, "iface": "ens33", "flags_pretty": ["UP", "GATEWAY"]}, {"destination": "3ffe:ffff::/32", "next_hop": "::", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "fe80::/64", "next_hop": "::", "flags": "U", "metric": 100, "ref": 0, "use": 4, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "::/0", "next_hop": "fe80::feae:34ff:fea1:3a80", "flags": "UG", "metric": 100, "ref": 1, "use": 4, "iface": "ens33", "flags_pretty": ["UP", "GATEWAY"]}, {"destination": "::/0", "next_hop": "::", "flags": "!n", "metric": -1, "ref": 1, "use": 86, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "::1/128", "next_hop": "::", "flags": "Un", "metric": 0, "ref": 2, "use": 30, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "2600:1700:bab0:d40::16/128", "next_hop": "::", "flags": "Un", "metric": 0, "ref": 2, "use": 4, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "2600:1700:bab0:d40:884b:cf32:dbd6:f640/128", "next_hop": "::", "flags": "Un", "metric": 0, "ref": 1, "use": 0, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "fe80::c1cb:715d:bc3e:b8a0/128", "next_hop": "::", "flags": "Un", "metric": 0, "ref": 2, "use": 8, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "ff00::/8", "next_hop": "::", "flags": "U", "metric": 256, "ref": 1, "use": 4, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "::/0", "next_hop": "::", "flags": "!n", "metric": -1, "ref": 1, "use": 86, "iface": "lo", "flags_pretty": ["REJECT"]}, {}]

24
tests/fixtures/centos-7.7/route-6-n.out vendored Normal file
View File

@@ -0,0 +1,24 @@
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
::/96 :: !n 1024 0 0 lo
0.0.0.0/96 :: !n 1024 0 0 lo
2002:a00::/24 :: !n 1024 0 0 lo
2002:7f00::/24 :: !n 1024 0 0 lo
2002:a9fe::/32 :: !n 1024 0 0 lo
2002:ac10::/28 :: !n 1024 0 0 lo
2002:c0a8::/32 :: !n 1024 0 0 lo
2002:e000::/19 :: !n 1024 0 0 lo
2600:1700:bab0:d40::16/128 :: U 100 0 0 ens33
2600:1700:bab0:d40::/64 :: U 100 1 45 ens33
2600:1700:bab0:d40::/60 fe80::feae:34ff:fea1:3a80 UG 100 0 0 ens33
3ffe:ffff::/32 :: !n 1024 0 0 lo
fe80::/64 :: U 100 0 4 ens33
::/0 fe80::feae:34ff:fea1:3a80 UG 100 1 4 ens33
::/0 :: !n -1 1 86 lo
::1/128 :: Un 0 2 30 lo
2600:1700:bab0:d40::16/128 :: Un 0 2 4 lo
2600:1700:bab0:d40:884b:cf32:dbd6:f640/128 :: Un 0 1 0 lo
fe80::c1cb:715d:bc3e:b8a0/128 :: Un 0 2 8 lo
ff00::/8 :: U 256 1 4 ens33
::/0 :: !n -1 1 86 lo

View File

@@ -0,0 +1 @@
[{"destination": "[::]/96", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "0.0.0.0/96", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:a00::/24", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:7f00::/24", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:a9fe::/32", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:ac10::/28", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:c0a8::/32", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "2002:e000::/19", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "unknown000c293b580e.attlocal.net/128", "next_hop": "[::]", "flags": "U", "metric": 100, "ref": 0, "use": 0, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "2600:1700:bab0:d40::/64", "next_hop": "[::]", "flags": "U", "metric": 100, "ref": 1, "use": 43, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "2600:1700:bab0:d40::/60", "next_hop": "gateway", "flags": "UG", "metric": 100, "ref": 0, "use": 0, "iface": "ens33", "flags_pretty": ["UP", "GATEWAY"]}, {"destination": "3ffe:ffff::/32", "next_hop": "[::]", "flags": "!n", "metric": 1024, "ref": 0, "use": 0, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "fe80::/64", "next_hop": "[::]", "flags": "U", "metric": 100, "ref": 0, "use": 4, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "[::]/0", "next_hop": "gateway", "flags": "UG", "metric": 100, "ref": 1, "use": 4, "iface": "ens33", "flags_pretty": ["UP", "GATEWAY"]}, {"destination": "[::]/0", "next_hop": "[::]", "flags": "!n", "metric": -1, "ref": 1, "use": 86, "iface": "lo", "flags_pretty": ["REJECT"]}, {"destination": "localhost/128", "next_hop": "[::]", "flags": "Un", "metric": 0, "ref": 2, "use": 30, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "unknown000c293b580e.attlocal.net/128", "next_hop": "[::]", "flags": "Un", "metric": 0, "ref": 2, "use": 4, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "unknown000c293b580e.attlocal.net/128", "next_hop": "[::]", "flags": "Un", "metric": 0, "ref": 1, "use": 0, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "unknown000c293b580e.attlocal.net/128", "next_hop": "[::]", "flags": "Un", "metric": 0, "ref": 2, "use": 8, "iface": "lo", "flags_pretty": ["UP"]}, {"destination": "ff00::/8", "next_hop": "[::]", "flags": "U", "metric": 256, "ref": 1, "use": 4, "iface": "ens33", "flags_pretty": ["UP"]}, {"destination": "[::]/0", "next_hop": "[::]", "flags": "!n", "metric": -1, "ref": 1, "use": 86, "iface": "lo", "flags_pretty": ["REJECT"]}, {}]

24
tests/fixtures/centos-7.7/route-6.out vendored Normal file
View File

@@ -0,0 +1,24 @@
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
[::]/96 [::] !n 1024 0 0 lo
0.0.0.0/96 [::] !n 1024 0 0 lo
2002:a00::/24 [::] !n 1024 0 0 lo
2002:7f00::/24 [::] !n 1024 0 0 lo
2002:a9fe::/32 [::] !n 1024 0 0 lo
2002:ac10::/28 [::] !n 1024 0 0 lo
2002:c0a8::/32 [::] !n 1024 0 0 lo
2002:e000::/19 [::] !n 1024 0 0 lo
unknown000c293b580e.attlocal.net/128 [::] U 100 0 0 ens33
2600:1700:bab0:d40::/64 [::] U 100 1 43 ens33
2600:1700:bab0:d40::/60 gateway UG 100 0 0 ens33
3ffe:ffff::/32 [::] !n 1024 0 0 lo
fe80::/64 [::] U 100 0 4 ens33
[::]/0 gateway UG 100 1 4 ens33
[::]/0 [::] !n -1 1 86 lo
localhost/128 [::] Un 0 2 30 lo
unknown000c293b580e.attlocal.net/128 [::] Un 0 2 4 lo
unknown000c293b580e.attlocal.net/128 [::] Un 0 1 0 lo
unknown000c293b580e.attlocal.net/128 [::] Un 0 2 8 lo
ff00::/8 [::] U 256 1 4 ens33
[::]/0 [::] !n -1 1 86 lo

File diff suppressed because one or more lines are too long

918
tests/fixtures/centos-7.7/sysctl-a.out vendored Normal file
View File

@@ -0,0 +1,918 @@
abi.vsyscall32 = 1
crypto.fips_enabled = 0
debug.exception-trace = 1
debug.kprobes-optimization = 1
debug.panic_on_rcu_stall = 0
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17
dev.cdrom.info =
dev.cdrom.info = drive name: sr0
dev.cdrom.info = drive speed: 1
dev.cdrom.info = drive # of slots: 1
dev.cdrom.info = Can close tray: 1
dev.cdrom.info = Can open tray: 1
dev.cdrom.info = Can lock tray: 1
dev.cdrom.info = Can change speed: 1
dev.cdrom.info = Can select disk: 0
dev.cdrom.info = Can read multisession: 1
dev.cdrom.info = Can read MCN: 1
dev.cdrom.info = Reports media changed: 1
dev.cdrom.info = Can play audio: 1
dev.cdrom.info = Can write CD-R: 1
dev.cdrom.info = Can write CD-RW: 1
dev.cdrom.info = Can read DVD: 1
dev.cdrom.info = Can write DVD-R: 1
dev.cdrom.info = Can write DVD-RAM: 1
dev.cdrom.info = Can read MRW: 1
dev.cdrom.info = Can write MRW: 1
dev.cdrom.info = Can write RAM: 1
dev.cdrom.info =
dev.cdrom.info =
dev.cdrom.lock = 1
dev.hpet.max-user-freq = 64
dev.mac_hid.mouse_button2_keycode = 97
dev.mac_hid.mouse_button3_keycode = 100
dev.mac_hid.mouse_button_emulation = 0
dev.parport.default.spintime = 500
dev.parport.default.timeslice = 200
dev.raid.speed_limit_max = 200000
dev.raid.speed_limit_min = 1000
dev.scsi.logging_level = 0
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.binfmt_misc.status = enabled
fs.dentry-state = 182164 165608 45 0 149757 0
fs.dir-notify-enable = 1
fs.epoll.max_user_watches = 785940
fs.file-max = 379085
fs.file-nr = 1152 0 379085
fs.inode-nr = 34807 2263
fs.inode-state = 34807 2263 0 0 0 0 0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
fs.lease-break-time = 45
fs.leases-enable = 1
fs.may_detach_mounts = 1
fs.mount-max = 100000
fs.mqueue.msg_default = 10
fs.mqueue.msg_max = 10
fs.mqueue.msgsize_default = 8192
fs.mqueue.msgsize_max = 8192
fs.mqueue.queues_max = 256
fs.nr_open = 1048576
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.pipe-max-size = 1048576
fs.pipe-user-pages-hard = 0
fs.pipe-user-pages-soft = 16384
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.drops = 0
fs.quota.free_dquots = 0
fs.quota.lookups = 0
fs.quota.reads = 0
fs.quota.syncs = 0
fs.quota.warnings = 1
fs.quota.writes = 0
fs.suid_dumpable = 0
fs.xfs.age_buffer_centisecs = 1500
fs.xfs.error_level = 3
fs.xfs.filestream_centisecs = 3000
fs.xfs.inherit_noatime = 1
fs.xfs.inherit_nodefrag = 1
fs.xfs.inherit_nodump = 1
fs.xfs.inherit_nosymlinks = 0
fs.xfs.inherit_sync = 1
fs.xfs.irix_sgid_inherit = 0
fs.xfs.irix_symlink_mode = 0
fs.xfs.panic_mask = 0
fs.xfs.rotorstep = 1
fs.xfs.speculative_prealloc_lifetime = 300
fs.xfs.stats_clear = 0
fs.xfs.xfsbufd_centisecs = 100
fs.xfs.xfssyncd_centisecs = 3000
kernel.acct = 4 2 30
kernel.acpi_video_flags = 0
kernel.auto_msgmni = 1
kernel.bootloader_type = 114
kernel.bootloader_version = 2
kernel.cap_last_cap = 36
kernel.compat-log = 1
kernel.core_pattern = core
kernel.core_pipe_limit = 0
kernel.core_uses_pid = 1
kernel.ctrl-alt-del = 0
kernel.dmesg_restrict = 0
kernel.domainname = (none)
kernel.ftrace_dump_on_oops = 0
kernel.ftrace_enabled = 1
kernel.hardlockup_all_cpu_backtrace = 0
kernel.hardlockup_panic = 1
kernel.hostname = localhost.localdomain
kernel.hotplug =
kernel.hung_task_check_count = 4194304
kernel.hung_task_panic = 0
kernel.hung_task_timeout_secs = 120
kernel.hung_task_warnings = 10
kernel.io_delay_type = 0
kernel.kexec_load_disabled = 0
kernel.keys.gc_delay = 300
kernel.keys.maxbytes = 20000
kernel.keys.maxkeys = 200
kernel.keys.persistent_keyring_expiry = 259200
kernel.keys.root_maxbytes = 25000000
kernel.keys.root_maxkeys = 1000000
kernel.kptr_restrict = 0
kernel.max_lock_depth = 1024
kernel.modprobe = /sbin/modprobe
kernel.modules_disabled = 0
kernel.msg_next_id = -1
kernel.msgmax = 8192
kernel.msgmnb = 16384
kernel.msgmni = 7535
kernel.ngroups_max = 65536
kernel.nmi_watchdog = 1
kernel.ns_last_pid = 49181
kernel.numa_balancing = 0
kernel.numa_balancing_scan_delay_ms = 1000
kernel.numa_balancing_scan_period_max_ms = 60000
kernel.numa_balancing_scan_period_min_ms = 1000
kernel.numa_balancing_scan_size_mb = 256
kernel.numa_balancing_settle_count = 4
kernel.osrelease = 3.10.0-1062.1.2.el7.x86_64
kernel.ostype = Linux
kernel.overflowgid = 65534
kernel.overflowuid = 65534
kernel.panic = 0
kernel.panic_on_io_nmi = 0
kernel.panic_on_oops = 1
kernel.panic_on_stackoverflow = 0
kernel.panic_on_unrecovered_nmi = 0
kernel.panic_on_warn = 0
kernel.perf_cpu_time_max_percent = 25
kernel.perf_event_max_sample_rate = 100000
kernel.perf_event_mlock_kb = 516
kernel.perf_event_paranoid = 2
kernel.pid_max = 131072
kernel.poweroff_cmd = /sbin/poweroff
kernel.print-fatal-signals = 0
kernel.printk = 4 4 1 7
kernel.printk_delay = 0
kernel.printk_ratelimit = 5
kernel.printk_ratelimit_burst = 10
kernel.pty.max = 4096
kernel.pty.nr = 0
kernel.pty.reserve = 1024
kernel.random.boot_id = 9e51ba01-3e54-4fbd-b007-a9563d0156d5
kernel.random.entropy_avail = 744
kernel.random.poolsize = 4096
kernel.random.read_wakeup_threshold = 64
kernel.random.urandom_min_reseed_secs = 60
kernel.random.uuid = 91912f7c-e25e-48ef-8e53-c1ee7f8b38c8
kernel.random.write_wakeup_threshold = 896
kernel.randomize_va_space = 2
kernel.real-root-dev = 0
kernel.sched_autogroup_enabled = 0
kernel.sched_cfs_bandwidth_slice_us = 5000
kernel.sched_child_runs_first = 0
kernel.sched_latency_ns = 6000000
kernel.sched_migration_cost_ns = 500000
kernel.sched_min_granularity_ns = 10000000
kernel.sched_nr_migrate = 32
kernel.sched_rr_timeslice_ms = 100
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_schedstats = 0
kernel.sched_shares_window_ns = 10000000
kernel.sched_time_avg_ms = 1000
kernel.sched_tunable_scaling = 1
kernel.sched_wakeup_granularity_ns = 15000000
kernel.seccomp.actions_avail = kill trap errno trace allow
kernel.seccomp.actions_logged = kill trap errno trace
kernel.sem = 250 32000 32 128
kernel.sem_next_id = -1
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
kernel.softlockup_all_cpu_backtrace = 0
kernel.softlockup_panic = 0
kernel.stack_tracer_enabled = 0
kernel.sysctl_writes_strict = 1
kernel.sysrq = 16
kernel.tainted = 536870912
kernel.threads-max = 29981
kernel.timer_migration = 1
kernel.traceoff_on_warning = 0
kernel.unknown_nmi_panic = 0
kernel.version = #1 SMP Mon Sep 30 14:19:46 UTC 2019
kernel.watchdog = 1
kernel.watchdog_cpumask = 0-127
kernel.watchdog_thresh = 10
kernel.yama.ptrace_scope = 0
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 0
net.core.bpf_jit_enable = 1
net.core.busy_poll = 0
net.core.busy_read = 0
net.core.default_qdisc = pfifo_fast
net.core.dev_weight = 64
net.core.dev_weight_rx_bias = 1
net.core.dev_weight_tx_bias = 1
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_budget = 300
net.core.netdev_max_backlog = 1000
net.core.netdev_rss_key = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
net.core.netdev_tstamp_prequeue = 1
net.core.optmem_max = 20480
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.rps_sock_flow_entries = 0
net.core.somaxconn = 128
net.core.warnings = 1
net.core.wmem_default = 212992
net.core.wmem_max = 212992
net.core.xfrm_acq_expires = 30
net.core.xfrm_aevent_etime = 10
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_larval_drop = 1
net.ipv4.cipso_cache_bucket_size = 10
net.ipv4.cipso_cache_enable = 1
net.ipv4.cipso_rbm_optfmt = 0
net.ipv4.cipso_rbm_strictvalid = 1
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.src_valid_mark = 0
net.ipv4.conf.all.tag = 0
net.ipv4.conf.default.accept_local = 0
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.proxy_arp_pvlan = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.src_valid_mark = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.docker0.accept_local = 0
net.ipv4.conf.docker0.accept_redirects = 1
net.ipv4.conf.docker0.accept_source_route = 0
net.ipv4.conf.docker0.arp_accept = 0
net.ipv4.conf.docker0.arp_announce = 0
net.ipv4.conf.docker0.arp_filter = 0
net.ipv4.conf.docker0.arp_ignore = 0
net.ipv4.conf.docker0.arp_notify = 0
net.ipv4.conf.docker0.bootp_relay = 0
net.ipv4.conf.docker0.disable_policy = 0
net.ipv4.conf.docker0.disable_xfrm = 0
net.ipv4.conf.docker0.force_igmp_version = 0
net.ipv4.conf.docker0.forwarding = 1
net.ipv4.conf.docker0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.docker0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.docker0.log_martians = 0
net.ipv4.conf.docker0.mc_forwarding = 0
net.ipv4.conf.docker0.medium_id = 0
net.ipv4.conf.docker0.promote_secondaries = 1
net.ipv4.conf.docker0.proxy_arp = 0
net.ipv4.conf.docker0.proxy_arp_pvlan = 0
net.ipv4.conf.docker0.route_localnet = 0
net.ipv4.conf.docker0.rp_filter = 1
net.ipv4.conf.docker0.secure_redirects = 1
net.ipv4.conf.docker0.send_redirects = 1
net.ipv4.conf.docker0.shared_media = 1
net.ipv4.conf.docker0.src_valid_mark = 0
net.ipv4.conf.docker0.tag = 0
net.ipv4.conf.ens33.accept_local = 0
net.ipv4.conf.ens33.accept_redirects = 1
net.ipv4.conf.ens33.accept_source_route = 0
net.ipv4.conf.ens33.arp_accept = 0
net.ipv4.conf.ens33.arp_announce = 0
net.ipv4.conf.ens33.arp_filter = 0
net.ipv4.conf.ens33.arp_ignore = 0
net.ipv4.conf.ens33.arp_notify = 0
net.ipv4.conf.ens33.bootp_relay = 0
net.ipv4.conf.ens33.disable_policy = 0
net.ipv4.conf.ens33.disable_xfrm = 0
net.ipv4.conf.ens33.force_igmp_version = 0
net.ipv4.conf.ens33.forwarding = 1
net.ipv4.conf.ens33.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.ens33.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.ens33.log_martians = 0
net.ipv4.conf.ens33.mc_forwarding = 0
net.ipv4.conf.ens33.medium_id = 0
net.ipv4.conf.ens33.promote_secondaries = 1
net.ipv4.conf.ens33.proxy_arp = 0
net.ipv4.conf.ens33.proxy_arp_pvlan = 0
net.ipv4.conf.ens33.route_localnet = 0
net.ipv4.conf.ens33.rp_filter = 1
net.ipv4.conf.ens33.secure_redirects = 1
net.ipv4.conf.ens33.send_redirects = 1
net.ipv4.conf.ens33.shared_media = 1
net.ipv4.conf.ens33.src_valid_mark = 0
net.ipv4.conf.ens33.tag = 0
net.ipv4.conf.lo.accept_local = 0
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 0
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp_pvlan = 0
net.ipv4.conf.lo.route_localnet = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.src_valid_mark = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.fib_multipath_hash_policy = 0
net.ipv4.fwmark_reflect = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_errors_use_inbound_ifaddr = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_msgs_burst = 50
net.ipv4.icmp_msgs_per_sec = 1000
net.ipv4.icmp_ratelimit = 1000
net.ipv4.icmp_ratemask = 6168
net.ipv4.igmp_max_memberships = 20
net.ipv4.igmp_max_msf = 10
net.ipv4.igmp_qrv = 2
net.ipv4.inet_peer_maxttl = 600
net.ipv4.inet_peer_minttl = 120
net.ipv4.inet_peer_threshold = 65664
net.ipv4.ip_default_ttl = 64
net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 1
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
net.ipv4.ip_local_port_range = 32768 60999
net.ipv4.ip_local_reserved_ports =
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.ip_nonlocal_bind = 0
net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 600
net.ipv4.ipfrag_time = 30
net.ipv4.neigh.default.anycast_delay = 100
net.ipv4.neigh.default.app_solicit = 0
net.ipv4.neigh.default.base_reachable_time_ms = 30000
net.ipv4.neigh.default.delay_first_probe_time = 5
net.ipv4.neigh.default.gc_interval = 30
net.ipv4.neigh.default.gc_stale_time = 60
net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024
net.ipv4.neigh.default.locktime = 100
net.ipv4.neigh.default.mcast_solicit = 3
net.ipv4.neigh.default.proxy_delay = 80
net.ipv4.neigh.default.proxy_qlen = 64
net.ipv4.neigh.default.retrans_time_ms = 1000
net.ipv4.neigh.default.ucast_solicit = 3
net.ipv4.neigh.default.unres_qlen = 31
net.ipv4.neigh.default.unres_qlen_bytes = 65536
net.ipv4.neigh.docker0.anycast_delay = 100
net.ipv4.neigh.docker0.app_solicit = 0
net.ipv4.neigh.docker0.base_reachable_time_ms = 30000
net.ipv4.neigh.docker0.delay_first_probe_time = 5
net.ipv4.neigh.docker0.gc_stale_time = 60
net.ipv4.neigh.docker0.locktime = 100
net.ipv4.neigh.docker0.mcast_solicit = 3
net.ipv4.neigh.docker0.proxy_delay = 80
net.ipv4.neigh.docker0.proxy_qlen = 64
net.ipv4.neigh.docker0.retrans_time_ms = 1000
net.ipv4.neigh.docker0.ucast_solicit = 3
net.ipv4.neigh.docker0.unres_qlen = 31
net.ipv4.neigh.docker0.unres_qlen_bytes = 65536
net.ipv4.neigh.ens33.anycast_delay = 100
net.ipv4.neigh.ens33.app_solicit = 0
net.ipv4.neigh.ens33.base_reachable_time_ms = 30000
net.ipv4.neigh.ens33.delay_first_probe_time = 5
net.ipv4.neigh.ens33.gc_stale_time = 60
net.ipv4.neigh.ens33.locktime = 100
net.ipv4.neigh.ens33.mcast_solicit = 3
net.ipv4.neigh.ens33.proxy_delay = 80
net.ipv4.neigh.ens33.proxy_qlen = 64
net.ipv4.neigh.ens33.retrans_time_ms = 1000
net.ipv4.neigh.ens33.ucast_solicit = 3
net.ipv4.neigh.ens33.unres_qlen = 31
net.ipv4.neigh.ens33.unres_qlen_bytes = 65536
net.ipv4.neigh.lo.anycast_delay = 100
net.ipv4.neigh.lo.app_solicit = 0
net.ipv4.neigh.lo.base_reachable_time_ms = 30000
net.ipv4.neigh.lo.delay_first_probe_time = 5
net.ipv4.neigh.lo.gc_stale_time = 60
net.ipv4.neigh.lo.locktime = 100
net.ipv4.neigh.lo.mcast_solicit = 3
net.ipv4.neigh.lo.proxy_delay = 80
net.ipv4.neigh.lo.proxy_qlen = 64
net.ipv4.neigh.lo.retrans_time_ms = 1000
net.ipv4.neigh.lo.ucast_solicit = 3
net.ipv4.neigh.lo.unres_qlen = 31
net.ipv4.neigh.lo.unres_qlen_bytes = 65536
net.ipv4.ping_group_range = 1 0
net.ipv4.route.error_burst = 5000
net.ipv4.route.error_cost = 1000
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_thresh = -1
net.ipv4.route.gc_timeout = 300
net.ipv4.route.max_size = 2147483647
net.ipv4.route.min_adv_mss = 256
net.ipv4.route.min_pmtu = 552
net.ipv4.route.mtu_expires = 600
net.ipv4.route.redirect_load = 20
net.ipv4.route.redirect_number = 9
net.ipv4.route.redirect_silence = 20480
net.ipv4.tcp_abort_on_overflow = 0
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_allowed_congestion_control = cubic reno
net.ipv4.tcp_app_win = 31
net.ipv4.tcp_autocorking = 1
net.ipv4.tcp_available_congestion_control = cubic reno
net.ipv4.tcp_base_mss = 512
net.ipv4.tcp_challenge_ack_limit = 1000
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_early_retrans = 3
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_fack = 1
net.ipv4.tcp_fastopen = 0
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_frto = 2
net.ipv4.tcp_invalid_ratelimit = 500
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_limit_output_bytes = 262144
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_orphans = 16384
net.ipv4.tcp_max_ssthresh = 0
net.ipv4.tcp_max_syn_backlog = 128
net.ipv4.tcp_max_tw_buckets = 16384
net.ipv4.tcp_mem = 88053 117406 176106
net.ipv4.tcp_min_snd_mss = 48
net.ipv4.tcp_min_tso_segs = 2
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_notsent_lowat = -1
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_retrans_collapse = 1
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_sack = 1
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_stdurg = 0
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_thin_dupack = 0
net.ipv4.tcp_thin_linear_timeouts = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tso_win_divisor = 3
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_workaround_signed_windows = 0
net.ipv4.udp_mem = 89943 119926 179886
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
net.ipv4.xfrm4_gc_thresh = 32768
net.ipv6.anycast_src_echo_reply = 0
net.ipv6.bindv6only = 0
net.ipv6.conf.all.accept_dad = 0
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.enhanced_dad = 1
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.force_tllao = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.ndisc_notify = 0
net.ipv6.conf.all.optimistic_dad = 0
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.regen_max_retry = 3
net.ipv6.conf.all.router_probe_interval = 60
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitations = 3
net.ipv6.conf.all.temp_prefered_lft = 86400
net.ipv6.conf.all.temp_valid_lft = 604800
net.ipv6.conf.all.use_optimistic = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.dad_transmits = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.enhanced_dad = 1
net.ipv6.conf.default.force_mld_version = 0
net.ipv6.conf.default.force_tllao = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.keep_addr_on_down = 0
net.ipv6.conf.default.max_addresses = 16
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.default.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.default.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.default.mtu = 1280
net.ipv6.conf.default.ndisc_notify = 0
net.ipv6.conf.default.optimistic_dad = 0
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.regen_max_retry = 3
net.ipv6.conf.default.router_probe_interval = 60
net.ipv6.conf.default.router_solicitation_delay = 1
net.ipv6.conf.default.router_solicitation_interval = 4
net.ipv6.conf.default.router_solicitations = 3
net.ipv6.conf.default.temp_prefered_lft = 86400
net.ipv6.conf.default.temp_valid_lft = 604800
net.ipv6.conf.default.use_optimistic = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.docker0.accept_dad = 1
net.ipv6.conf.docker0.accept_ra = 1
net.ipv6.conf.docker0.accept_ra_defrtr = 1
net.ipv6.conf.docker0.accept_ra_pinfo = 1
net.ipv6.conf.docker0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.docker0.accept_ra_rtr_pref = 1
net.ipv6.conf.docker0.accept_redirects = 1
net.ipv6.conf.docker0.accept_source_route = 0
net.ipv6.conf.docker0.autoconf = 1
net.ipv6.conf.docker0.dad_transmits = 1
net.ipv6.conf.docker0.disable_ipv6 = 0
net.ipv6.conf.docker0.enhanced_dad = 1
net.ipv6.conf.docker0.force_mld_version = 0
net.ipv6.conf.docker0.force_tllao = 0
net.ipv6.conf.docker0.forwarding = 0
net.ipv6.conf.docker0.hop_limit = 64
net.ipv6.conf.docker0.keep_addr_on_down = 0
net.ipv6.conf.docker0.max_addresses = 16
net.ipv6.conf.docker0.max_desync_factor = 600
net.ipv6.conf.docker0.mc_forwarding = 0
net.ipv6.conf.docker0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.docker0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.docker0.mtu = 1500
net.ipv6.conf.docker0.ndisc_notify = 0
net.ipv6.conf.docker0.optimistic_dad = 0
net.ipv6.conf.docker0.proxy_ndp = 0
net.ipv6.conf.docker0.regen_max_retry = 3
net.ipv6.conf.docker0.router_probe_interval = 60
net.ipv6.conf.docker0.router_solicitation_delay = 1
net.ipv6.conf.docker0.router_solicitation_interval = 4
net.ipv6.conf.docker0.router_solicitations = 3
net.ipv6.conf.docker0.temp_prefered_lft = 86400
net.ipv6.conf.docker0.temp_valid_lft = 604800
net.ipv6.conf.docker0.use_optimistic = 0
net.ipv6.conf.docker0.use_tempaddr = 0
net.ipv6.conf.ens33.accept_dad = 1
net.ipv6.conf.ens33.accept_ra = 1
net.ipv6.conf.ens33.accept_ra_defrtr = 0
net.ipv6.conf.ens33.accept_ra_pinfo = 0
net.ipv6.conf.ens33.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.ens33.accept_ra_rtr_pref = 0
net.ipv6.conf.ens33.accept_redirects = 1
net.ipv6.conf.ens33.accept_source_route = 0
net.ipv6.conf.ens33.autoconf = 1
net.ipv6.conf.ens33.dad_transmits = 1
net.ipv6.conf.ens33.disable_ipv6 = 0
net.ipv6.conf.ens33.enhanced_dad = 1
net.ipv6.conf.ens33.force_mld_version = 0
net.ipv6.conf.ens33.force_tllao = 0
net.ipv6.conf.ens33.forwarding = 0
net.ipv6.conf.ens33.hop_limit = 64
net.ipv6.conf.ens33.keep_addr_on_down = 0
net.ipv6.conf.ens33.max_addresses = 16
net.ipv6.conf.ens33.max_desync_factor = 600
net.ipv6.conf.ens33.mc_forwarding = 0
net.ipv6.conf.ens33.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.ens33.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.ens33.mtu = 1500
net.ipv6.conf.ens33.ndisc_notify = 0
net.ipv6.conf.ens33.optimistic_dad = 0
net.ipv6.conf.ens33.proxy_ndp = 0
net.ipv6.conf.ens33.regen_max_retry = 3
net.ipv6.conf.ens33.router_probe_interval = 60
net.ipv6.conf.ens33.router_solicitation_delay = 1
net.ipv6.conf.ens33.router_solicitation_interval = 4
net.ipv6.conf.ens33.router_solicitations = 3
net.ipv6.conf.ens33.temp_prefered_lft = 86400
net.ipv6.conf.ens33.temp_valid_lft = 604800
net.ipv6.conf.ens33.use_optimistic = 0
net.ipv6.conf.ens33.use_tempaddr = 0
net.ipv6.conf.lo.accept_dad = -1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.lo.accept_ra_rtr_pref = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.accept_source_route = 0
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.dad_transmits = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.enhanced_dad = 1
net.ipv6.conf.lo.force_mld_version = 0
net.ipv6.conf.lo.force_tllao = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.keep_addr_on_down = 0
net.ipv6.conf.lo.max_addresses = 16
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv6.conf.lo.mc_forwarding = 0
net.ipv6.conf.lo.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.lo.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.ndisc_notify = 0
net.ipv6.conf.lo.optimistic_dad = 0
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.regen_max_retry = 3
net.ipv6.conf.lo.router_probe_interval = 60
net.ipv6.conf.lo.router_solicitation_delay = 1
net.ipv6.conf.lo.router_solicitation_interval = 4
net.ipv6.conf.lo.router_solicitations = 3
net.ipv6.conf.lo.temp_prefered_lft = 86400
net.ipv6.conf.lo.temp_valid_lft = 604800
net.ipv6.conf.lo.use_optimistic = 0
net.ipv6.conf.lo.use_tempaddr = -1
net.ipv6.fwmark_reflect = 0
net.ipv6.icmp.ratelimit = 1000
net.ipv6.idgen_delay = 1
net.ipv6.idgen_retries = 3
net.ipv6.ip6frag_high_thresh = 4194304
net.ipv6.ip6frag_low_thresh = 3145728
net.ipv6.ip6frag_secret_interval = 600
net.ipv6.ip6frag_time = 60
net.ipv6.ip_nonlocal_bind = 0
net.ipv6.mld_max_msf = 64
net.ipv6.mld_qrv = 2
net.ipv6.neigh.default.anycast_delay = 100
net.ipv6.neigh.default.app_solicit = 0
net.ipv6.neigh.default.base_reachable_time_ms = 30000
net.ipv6.neigh.default.delay_first_probe_time = 5
net.ipv6.neigh.default.gc_interval = 30
net.ipv6.neigh.default.gc_stale_time = 60
net.ipv6.neigh.default.gc_thresh1 = 128
net.ipv6.neigh.default.gc_thresh2 = 512
net.ipv6.neigh.default.gc_thresh3 = 1024
net.ipv6.neigh.default.locktime = 0
net.ipv6.neigh.default.mcast_solicit = 3
net.ipv6.neigh.default.proxy_delay = 80
net.ipv6.neigh.default.proxy_qlen = 64
net.ipv6.neigh.default.retrans_time_ms = 1000
net.ipv6.neigh.default.ucast_solicit = 3
net.ipv6.neigh.default.unres_qlen = 31
net.ipv6.neigh.default.unres_qlen_bytes = 65536
net.ipv6.neigh.docker0.anycast_delay = 100
net.ipv6.neigh.docker0.app_solicit = 0
net.ipv6.neigh.docker0.base_reachable_time_ms = 30000
net.ipv6.neigh.docker0.delay_first_probe_time = 5
net.ipv6.neigh.docker0.gc_stale_time = 60
net.ipv6.neigh.docker0.locktime = 0
net.ipv6.neigh.docker0.mcast_solicit = 3
net.ipv6.neigh.docker0.proxy_delay = 80
net.ipv6.neigh.docker0.proxy_qlen = 64
net.ipv6.neigh.docker0.retrans_time_ms = 1000
net.ipv6.neigh.docker0.ucast_solicit = 3
net.ipv6.neigh.docker0.unres_qlen = 31
net.ipv6.neigh.docker0.unres_qlen_bytes = 65536
net.ipv6.neigh.ens33.anycast_delay = 100
net.ipv6.neigh.ens33.app_solicit = 0
net.ipv6.neigh.ens33.base_reachable_time_ms = 30000
net.ipv6.neigh.ens33.delay_first_probe_time = 5
net.ipv6.neigh.ens33.gc_stale_time = 60
net.ipv6.neigh.ens33.locktime = 0
net.ipv6.neigh.ens33.mcast_solicit = 3
net.ipv6.neigh.ens33.proxy_delay = 80
net.ipv6.neigh.ens33.proxy_qlen = 64
net.ipv6.neigh.ens33.retrans_time_ms = 1000
net.ipv6.neigh.ens33.ucast_solicit = 3
net.ipv6.neigh.ens33.unres_qlen = 31
net.ipv6.neigh.ens33.unres_qlen_bytes = 65536
net.ipv6.neigh.lo.anycast_delay = 100
net.ipv6.neigh.lo.app_solicit = 0
net.ipv6.neigh.lo.base_reachable_time_ms = 30000
net.ipv6.neigh.lo.delay_first_probe_time = 5
net.ipv6.neigh.lo.gc_stale_time = 60
net.ipv6.neigh.lo.locktime = 0
net.ipv6.neigh.lo.mcast_solicit = 3
net.ipv6.neigh.lo.proxy_delay = 80
net.ipv6.neigh.lo.proxy_qlen = 64
net.ipv6.neigh.lo.retrans_time_ms = 1000
net.ipv6.neigh.lo.ucast_solicit = 3
net.ipv6.neigh.lo.unres_qlen = 31
net.ipv6.neigh.lo.unres_qlen_bytes = 65536
net.ipv6.route.gc_elasticity = 9
net.ipv6.route.gc_interval = 30
net.ipv6.route.gc_min_interval = 0
net.ipv6.route.gc_min_interval_ms = 500
net.ipv6.route.gc_thresh = 1024
net.ipv6.route.gc_timeout = 60
net.ipv6.route.max_size = 16384
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600
net.ipv6.xfrm6_gc_thresh = 32768
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_buckets = 16384
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_count = 2
net.netfilter.nf_conntrack_dccp_loose = 1
net.netfilter.nf_conntrack_dccp_timeout_closereq = 64
net.netfilter.nf_conntrack_dccp_timeout_closing = 64
net.netfilter.nf_conntrack_dccp_timeout_open = 43200
net.netfilter.nf_conntrack_dccp_timeout_partopen = 480
net.netfilter.nf_conntrack_dccp_timeout_request = 240
net.netfilter.nf_conntrack_dccp_timeout_respond = 480
net.netfilter.nf_conntrack_dccp_timeout_timewait = 240
net.netfilter.nf_conntrack_events = 1
net.netfilter.nf_conntrack_events_retry_timeout = 15
net.netfilter.nf_conntrack_expect_max = 256
net.netfilter.nf_conntrack_frag6_high_thresh = 4194304
net.netfilter.nf_conntrack_frag6_low_thresh = 3145728
net.netfilter.nf_conntrack_frag6_timeout = 60
net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_helper = 1
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_icmpv6_timeout = 30
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_max = 65536
net.netfilter.nf_conntrack_sctp_timeout_closed = 10
net.netfilter.nf_conntrack_sctp_timeout_cookie_echoed = 3
net.netfilter.nf_conntrack_sctp_timeout_cookie_wait = 3
net.netfilter.nf_conntrack_sctp_timeout_established = 432000
net.netfilter.nf_conntrack_sctp_timeout_heartbeat_acked = 210
net.netfilter.nf_conntrack_sctp_timeout_heartbeat_sent = 30
net.netfilter.nf_conntrack_sctp_timeout_shutdown_ack_sent = 3
net.netfilter.nf_conntrack_sctp_timeout_shutdown_recd = 0
net.netfilter.nf_conntrack_sctp_timeout_shutdown_sent = 0
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_timestamp = 0
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_log.0 = NONE
net.netfilter.nf_log.1 = NONE
net.netfilter.nf_log.10 = NONE
net.netfilter.nf_log.11 = NONE
net.netfilter.nf_log.12 = NONE
net.netfilter.nf_log.2 = NONE
net.netfilter.nf_log.3 = NONE
net.netfilter.nf_log.4 = NONE
net.netfilter.nf_log.5 = NONE
net.netfilter.nf_log.6 = NONE
net.netfilter.nf_log.7 = NONE
net.netfilter.nf_log.8 = NONE
net.netfilter.nf_log.9 = NONE
net.netfilter.nf_log_all_netns = 0
net.nf_conntrack_max = 65536
net.unix.max_dgram_qlen = 512
user.max_ipc_namespaces = 14990
user.max_mnt_namespaces = 14990
user.max_net_namespaces = 14990
user.max_pid_namespaces = 14990
user.max_user_namespaces = 0
user.max_uts_namespaces = 14990
vm.admin_reserve_kbytes = 8192
vm.block_dump = 0
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 30
vm.dirty_writeback_centisecs = 500
vm.drop_caches = 0
vm.extfrag_threshold = 500
vm.hugepages_treat_as_movable = 0
vm.hugetlb_shm_group = 0
vm.laptop_mode = 0
vm.legacy_va_layout = 0
vm.lowmem_reserve_ratio = 256 256 32
vm.max_map_count = 65530
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
vm.min_free_kbytes = 67584
vm.min_slab_ratio = 5
vm.min_unmapped_ratio = 1
vm.mmap_min_addr = 4096
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.nr_overcommit_hugepages = 0
vm.nr_pdflush_threads = 0
vm.numa_zonelist_order = default
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
vm.page-cluster = 3
vm.panic_on_oom = 0
vm.percpu_pagelist_fraction = 0
vm.stat_interval = 1
vm.swappiness = 30
vm.user_reserve_kbytes = 117506
vm.vfs_cache_pressure = 100
vm.zone_reclaim_mode = 0

View File

@@ -0,0 +1 @@
{"pmtu": 1500, "forward_hops": null, "return_hops": null, "hops": [{"ttl": 1, "guess": true, "host": "[LOCALHOST]", "reply_ms": null, "pmtu": 1500, "asymmetric_difference": null, "reached": false}, {"ttl": 1, "guess": false, "host": "dsldevice.attlocal.net", "reply_ms": 4.063, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 1, "guess": false, "host": "dsldevice.attlocal.net", "reply_ms": 6.368, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 2, "guess": false, "host": "76-220-24-1.lightspeed.sntcca.sbcglobal.net", "reply_ms": 24.092, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 3, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 4, "guess": false, "host": "12.242.117.16", "reply_ms": 161.527, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 5, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 6, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 3, "guess": false, "host": "71.148.149.0", "reply_ms": 12000.559, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 3, "guess": false, "host": "71.148.149.0", "reply_ms": 11967.523, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 3, "guess": false, "host": "71.148.149.0", "reply_ms": 11829.634, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 10, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 11, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 12, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 13, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 14, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 15, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 16, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 17, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 18, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 19, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 20, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 21, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 22, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 23, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 24, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 25, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 26, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 27, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 28, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 29, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 30, "guess": false, "host": null, "reply_ms": null, "pmtu": null, "asymmetric_difference": null, "reached": false}]}

34
tests/fixtures/centos-7.7/tracepath.out vendored Normal file
View File

@@ -0,0 +1,34 @@
1?: [LOCALHOST] pmtu 1500
1: dsldevice.attlocal.net 4.063ms
1: dsldevice.attlocal.net 6.368ms
2: 76-220-24-1.lightspeed.sntcca.sbcglobal.net 24.092ms
3: no reply
4: 12.242.117.16 161.527ms
5: no reply
6: no reply
3: 71.148.149.0 12000.559ms
3: 71.148.149.0 11967.523ms
3: 71.148.149.0 11829.634ms
10: no reply
11: no reply
12: no reply
13: no reply
14: no reply
15: no reply
16: no reply
17: no reply
18: no reply
19: no reply
20: no reply
21: no reply
22: no reply
23: no reply
24: no reply
25: no reply
26: no reply
27: no reply
28: no reply
29: no reply
30: no reply
Too many hops: pmtu 1500
Resume: pmtu 1500

View File

@@ -0,0 +1 @@
{"pmtu": 1480, "forward_hops": 2, "return_hops": 2, "hops": [{"ttl": 1, "guess": true, "host": "[LOCALHOST]", "reply_ms": null, "pmtu": 1500, "asymmetric_difference": null, "reached": false}, {"ttl": 1, "guess": false, "host": "dust.inr.ac.ru", "reply_ms": 0.411, "pmtu": null, "asymmetric_difference": null, "reached": false}, {"ttl": 2, "guess": false, "host": "dust.inr.ac.ru", "reply_ms": 0.39, "pmtu": 1480, "asymmetric_difference": 1, "reached": false}, {"ttl": 2, "guess": false, "host": "3ffe:2400:0:109::2", "reply_ms": 463.514, "pmtu": null, "asymmetric_difference": null, "reached": true}]}

View File

@@ -0,0 +1,5 @@
1?: [LOCALHOST] pmtu 1500
1: dust.inr.ac.ru 0.411ms
2: dust.inr.ac.ru asymm 1 0.390ms pmtu 1480
2: 3ffe:2400:0:109::2 463.514ms reached
Resume: pmtu 1480 hops 2 back 2

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.197.67", "destination_name": "www.cnn.com", "hops": [{"hop": 1, "probes": [{"annotation": null, "asn": null, "ip": "192.168.1.254", "name": "dsldevice.attlocal.net", "rtt": 4.024}, {"annotation": null, "asn": null, "ip": "192.168.1.254", "name": "dsldevice.attlocal.net", "rtt": 3.683}, {"annotation": null, "asn": null, "ip": "192.168.1.254", "name": "dsldevice.attlocal.net", "rtt": 3.706}]}, {"hop": 2, "probes": [{"annotation": null, "asn": null, "ip": "76.220.24.1", "name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net", "rtt": 24.038}, {"annotation": null, "asn": null, "ip": "76.220.24.1", "name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net", "rtt": 23.911}, {"annotation": null, "asn": null, "ip": "76.220.24.1", "name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net", "rtt": 23.724}]}, {"hop": 3, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 4, "probes": [{"annotation": null, "asn": null, "ip": "12.122.149.186", "name": "12.122.149.186", "rtt": 42.273}, {"annotation": null, "asn": null, "ip": "12.122.149.186", "name": "12.122.149.186", "rtt": 42.213}, {"annotation": null, "asn": null, "ip": "12.122.149.186", "name": "12.122.149.186", "rtt": 42.083}]}, {"hop": 5, "probes": [{"annotation": null, "asn": null, "ip": "12.122.2.77", "name": "12.122.2.77", "rtt": 36.789}, {"annotation": null, "asn": null, "ip": "12.122.2.77", "name": "12.122.2.77", "rtt": 43.691}, {"annotation": null, "asn": null, "ip": "12.122.2.77", "name": "12.122.2.77", "rtt": 36.597}]}, {"hop": 6, "probes": [{"annotation": null, "asn": null, "ip": "12.122.2.94", "name": "sd2ca21crs.ip.att.net", "rtt": 41.587}, {"annotation": null, "asn": null, "ip": "12.122.2.94", "name": "sd2ca21crs.ip.att.net", "rtt": 40.24}, {"annotation": null, "asn": null, "ip": "12.122.2.94", "name": "sd2ca21crs.ip.att.net", "rtt": 44.659}]}, {"hop": 7, "probes": [{"annotation": null, "asn": null, "ip": "12.123.215.161", "name": "12.123.215.161", "rtt": 37.858}, {"annotation": null, "asn": null, "ip": "12.123.215.161", "name": "12.123.215.161", "rtt": 37.321}, {"annotation": null, "asn": null, "ip": "12.123.215.161", "name": "12.123.215.161", "rtt": 37.092}]}, {"hop": 8, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 9, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 10, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 11, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 12, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 13, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 14, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 15, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 16, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 17, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 18, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 19, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 20, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 21, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 22, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 23, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 24, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 25, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 26, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 27, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 28, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 29, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}, {"hop": 30, "probes": [{"annotation": null, "asn": null, "ip": null, "name": null, "rtt": null}]}]}

View File

@@ -0,0 +1,32 @@
traceroute to www.cnn.com (151.101.197.67), 30 hops max, 60 byte packets
1 dsldevice.attlocal.net (192.168.1.254) 4.024 ms 3.683 ms 3.706 ms
2 76-220-24-1.lightspeed.sntcca.sbcglobal.net (76.220.24.1) 24.038 ms 23.911 ms 23.724 ms
3 * * *
4 12.122.149.186 (12.122.149.186) 42.273 ms 42.213 ms 42.083 ms
5 12.122.2.77 (12.122.2.77) 36.789 ms 43.691 ms 36.597 ms
6 sd2ca21crs.ip.att.net (12.122.2.94) 41.587 ms 40.240 ms 44.659 ms
7 12.123.215.161 (12.123.215.161) 37.858 ms 37.321 ms 37.092 ms
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

View File

@@ -101,3 +101,31 @@ sudo lastb > lastb.out
cat /etc/group > group.out
sudo cat /etc/gshadow > gshadow.out
# linux:
ping -4 www.cnn.com -c 20 -O > ping-hostname-O.out
ping -4 www.cnn.com -c 20 -O -p abcd > ping-hostname-O-p.out
ping -4 www.cnn.com -c 20 -O -D -p abcd -s 1400 > ping-hostname-O-D-p-s.out
ping 127.0.0.1 -c 20 -O > ping-ip-O.out
ping 127.0.0.1 -c 20 -O -D > ping-ip-O-D.out
ping6 2a04:4e42:600::323 -c 20 -O -p abcd > ping6-ip-O-p.out
ping6 2a04:4e42:600::323 -c 20 -O -D -p abcd > ping6-ip-O-D-p.out
ping6 www.cnn.com -c 20 -O -D -p abcd -s 1400 > ping6-hostname-O-D-p-s.out
ping6 www.cnn.com -c 20 -O -D -p abcd > ping6-hostname-O-D-p.out
ping6 www.cnn.com -c 20 -O -p abcd > ping6-hostname-O-p.out
# osx/bsd:
ping -c 3 -s 40 127.0.0.1 > ping-ip-s.out
ping -c 3 -s 40 localhost > ping-hostname-s.out
ping -c 3 -p ff 127.0.0.1 > ping-ip-p.out
ping -c 3 127.0.0.1 > ping-ip.out
ping -c 3 -p ff cnn.com > ping-hostname-p.out
ping -c 3 cnn.com > ping-hostname.out
ping6 -c 3 -s 40 localhost > ping6-hostname-s.out
ping6 -c 3 -s 40 ::1 > ping6-ip-s.out
ping6 -c 3 -p ff ::1 > ping6-ip-p.out
ping6 -c 3 ::1 > ping6-ip.out
ping6 -c 3 -p ff localhost > ping6-hostname-p.out
ping6 -c 3 localhost > ping6-hostname.out

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.129.67", "data_bytes": 1400, "pattern": "0xabcd", "destination": "turner-tls.map.fastly.net", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19040.0, "round_trip_ms_min": 25.934, "round_trip_ms_avg": 43.176, "round_trip_ms_max": 149.271, "round_trip_ms_stddev": 26.937, "responses": [{"type": "reply", "timestamp": 1595191335.548399, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 1, "ttl": 59, "time_ms": 46.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191336.134174, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 2, "ttl": 59, "time_ms": 61.5, "duplicate": false}, {"type": "reply", "timestamp": 1595191337.101575, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 3, "ttl": 59, "time_ms": 26.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191338.108023, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 4, "ttl": 59, "time_ms": 30.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191339.229213, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 5, "ttl": 59, "time_ms": 149.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191340.114026, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 6, "ttl": 59, "time_ms": 32.4, "duplicate": false}, {"type": "reply", "timestamp": 1595191341.122628, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 7, "ttl": 59, "time_ms": 37.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191342.110785, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 8, "ttl": 59, "time_ms": 26.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191343.118652, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 9, "ttl": 59, "time_ms": 32.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191344.1303, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 10, "ttl": 59, "time_ms": 43.4, "duplicate": false}, {"type": "reply", "timestamp": 1595191345.162284, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 11, "ttl": 59, "time_ms": 71.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191346.123086, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 12, "ttl": 59, "time_ms": 31.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191347.127689, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 13, "ttl": 59, "time_ms": 33.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191348.142817, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 14, "ttl": 59, "time_ms": 45.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191349.125383, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 15, "ttl": 59, "time_ms": 25.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191350.136294, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 16, "ttl": 59, "time_ms": 34.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191351.135889, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 17, "ttl": 59, "time_ms": 31.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191352.134199, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 18, "ttl": 59, "time_ms": 26.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191353.147391, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 19, "ttl": 59, "time_ms": 38.5, "duplicate": false}, {"type": "reply", "timestamp": 1595191354.15064, "bytes": 1408, "response_ip": "151.101.129.67", "icmp_seq": 20, "ttl": 59, "time_ms": 39.5, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING turner-tls.map.fastly.net (151.101.129.67) 1400(1428) bytes of data.
[1595191335.548399] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=1 ttl=59 time=46.1 ms
[1595191336.134174] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=2 ttl=59 time=61.5 ms
[1595191337.101575] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=3 ttl=59 time=26.3 ms
[1595191338.108023] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=4 ttl=59 time=30.9 ms
[1595191339.229213] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=5 ttl=59 time=149 ms
[1595191340.114026] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=6 ttl=59 time=32.4 ms
[1595191341.122628] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=7 ttl=59 time=37.9 ms
[1595191342.110785] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=8 ttl=59 time=26.0 ms
[1595191343.118652] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=9 ttl=59 time=32.3 ms
[1595191344.130300] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=10 ttl=59 time=43.4 ms
[1595191345.162284] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=11 ttl=59 time=71.9 ms
[1595191346.123086] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=12 ttl=59 time=31.1 ms
[1595191347.127689] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=13 ttl=59 time=33.6 ms
[1595191348.142817] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=14 ttl=59 time=45.6 ms
[1595191349.125383] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=15 ttl=59 time=25.9 ms
[1595191350.136294] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=16 ttl=59 time=34.0 ms
[1595191351.135889] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=17 ttl=59 time=31.2 ms
[1595191352.134199] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=18 ttl=59 time=26.2 ms
[1595191353.147391] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=19 ttl=59 time=38.5 ms
[1595191354.150640] 1408 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=20 ttl=59 time=39.5 ms
--- turner-tls.map.fastly.net ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19040ms
rtt min/avg/max/mdev = 25.934/43.176/149.271/26.937 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.197.67", "data_bytes": 56, "pattern": "0xabcd", "destination": "turner-tls.map.fastly.net", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19026.0, "round_trip_ms_min": 37.406, "round_trip_ms_avg": 44.894, "round_trip_ms_max": 57.881, "round_trip_ms_stddev": 6.101, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 1, "ttl": 56, "time_ms": 38.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 2, "ttl": 56, "time_ms": 38.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 3, "ttl": 56, "time_ms": 39.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 4, "ttl": 56, "time_ms": 49.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 5, "ttl": 56, "time_ms": 47.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 6, "ttl": 56, "time_ms": 48.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 7, "ttl": 56, "time_ms": 53.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 8, "ttl": 56, "time_ms": 47.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 9, "ttl": 56, "time_ms": 47.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 10, "ttl": 56, "time_ms": 51.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 11, "ttl": 56, "time_ms": 55.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 12, "ttl": 56, "time_ms": 40.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 13, "ttl": 56, "time_ms": 39.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 14, "ttl": 56, "time_ms": 40.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 15, "ttl": 56, "time_ms": 41.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 16, "ttl": 56, "time_ms": 57.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 17, "ttl": 56, "time_ms": 45.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 18, "ttl": 56, "time_ms": 39.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 19, "ttl": 56, "time_ms": 37.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.197.67", "icmp_seq": 20, "ttl": 56, "time_ms": 40.4, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING turner-tls.map.fastly.net (151.101.197.67) 56(84) bytes of data.
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=1 ttl=56 time=38.2 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=2 ttl=56 time=38.5 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=3 ttl=56 time=39.3 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=4 ttl=56 time=49.2 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=5 ttl=56 time=47.4 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=6 ttl=56 time=48.2 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=7 ttl=56 time=53.4 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=8 ttl=56 time=47.1 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=9 ttl=56 time=47.3 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=10 ttl=56 time=51.8 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=11 ttl=56 time=55.1 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=12 ttl=56 time=40.6 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=13 ttl=56 time=39.5 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=14 ttl=56 time=40.1 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=15 ttl=56 time=41.4 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=16 ttl=56 time=57.9 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=17 ttl=56 time=45.7 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=18 ttl=56 time=39.3 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=19 ttl=56 time=37.4 ms
64 bytes from 151.101.197.67 (151.101.197.67): icmp_seq=20 ttl=56 time=40.4 ms
--- turner-tls.map.fastly.net ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19026ms
rtt min/avg/max/mdev = 37.406/44.894/57.881/6.101 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.129.67", "data_bytes": 56, "pattern": null, "destination": "turner-tls.map.fastly.net", "packets_transmitted": 20, "packets_received": 19, "packet_loss_percent": 5.0, "duplicates": 0, "time_ms": 19075.0, "round_trip_ms_min": 24.317, "round_trip_ms_avg": 61.577, "round_trip_ms_max": 274.537, "round_trip_ms_stddev": 69.94, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 1, "ttl": 59, "time_ms": 27.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 2, "ttl": 59, "time_ms": 31.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 3, "ttl": 59, "time_ms": 25.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 4, "ttl": 59, "time_ms": 65.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 5, "ttl": 59, "time_ms": 32.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 6, "ttl": 59, "time_ms": 32.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 7, "ttl": 59, "time_ms": 156.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 8, "ttl": 59, "time_ms": 216.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 9, "ttl": 59, "time_ms": 275.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 10, "ttl": 59, "time_ms": 25.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 11, "ttl": 59, "time_ms": 29.5, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 12}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 13, "ttl": 59, "time_ms": 25.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 14, "ttl": 59, "time_ms": 33.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 15, "ttl": 59, "time_ms": 24.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 16, "ttl": 59, "time_ms": 35.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 17, "ttl": 59, "time_ms": 24.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 18, "ttl": 59, "time_ms": 34.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 19, "ttl": 59, "time_ms": 30.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "151.101.129.67", "icmp_seq": 20, "ttl": 59, "time_ms": 45.8, "duplicate": false}]}

View File

@@ -0,0 +1,25 @@
PING turner-tls.map.fastly.net (151.101.129.67) 56(84) bytes of data.
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=1 ttl=59 time=27.5 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=2 ttl=59 time=31.5 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=3 ttl=59 time=25.5 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=4 ttl=59 time=65.1 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=5 ttl=59 time=32.4 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=6 ttl=59 time=32.2 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=7 ttl=59 time=156 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=8 ttl=59 time=216 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=9 ttl=59 time=275 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=10 ttl=59 time=25.7 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=11 ttl=59 time=29.5 ms
no answer yet for icmp_seq=12
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=13 ttl=59 time=25.9 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=14 ttl=59 time=33.0 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=15 ttl=59 time=24.3 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=16 ttl=59 time=35.8 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=17 ttl=59 time=24.8 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=18 ttl=59 time=34.0 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=19 ttl=59 time=30.7 ms
64 bytes from 151.101.129.67 (151.101.129.67): icmp_seq=20 ttl=59 time=45.8 ms
--- turner-tls.map.fastly.net ping statistics ---
20 packets transmitted, 19 received, 5% packet loss, time 19075ms
rtt min/avg/max/mdev = 24.317/61.577/274.537/69.940 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 56, "pattern": null, "destination": "127.0.0.1", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19450.0, "round_trip_ms_min": 0.043, "round_trip_ms_avg": 0.086, "round_trip_ms_max": 0.135, "round_trip_ms_stddev": 0.016, "responses": [{"type": "reply", "timestamp": 1595191373.643436, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": 1595191374.662543, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.083, "duplicate": false}, {"type": "reply", "timestamp": 1595191375.685291, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 3, "ttl": 64, "time_ms": 0.091, "duplicate": false}, {"type": "reply", "timestamp": 1595191376.709678, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 4, "ttl": 64, "time_ms": 0.092, "duplicate": false}, {"type": "reply", "timestamp": 1595191377.734105, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 5, "ttl": 64, "time_ms": 0.09, "duplicate": false}, {"type": "reply", "timestamp": 1595191378.758107, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 6, "ttl": 64, "time_ms": 0.089, "duplicate": false}, {"type": "reply", "timestamp": 1595191379.781215, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 7, "ttl": 64, "time_ms": 0.087, "duplicate": false}, {"type": "reply", "timestamp": 1595191380.80601, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 8, "ttl": 64, "time_ms": 0.092, "duplicate": false}, {"type": "reply", "timestamp": 1595191381.829806, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 9, "ttl": 64, "time_ms": 0.088, "duplicate": false}, {"type": "reply", "timestamp": 1595191382.853166, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 10, "ttl": 64, "time_ms": 0.135, "duplicate": false}, {"type": "reply", "timestamp": 1595191383.876966, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 11, "ttl": 64, "time_ms": 0.101, "duplicate": false}, {"type": "reply", "timestamp": 1595191384.900636, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 12, "ttl": 64, "time_ms": 0.084, "duplicate": false}, {"type": "reply", "timestamp": 1595191385.925055, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 13, "ttl": 64, "time_ms": 0.071, "duplicate": false}, {"type": "reply", "timestamp": 1595191386.94986, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 14, "ttl": 64, "time_ms": 0.087, "duplicate": false}, {"type": "reply", "timestamp": 1595191387.973041, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 15, "ttl": 64, "time_ms": 0.087, "duplicate": false}, {"type": "reply", "timestamp": 1595191388.997049, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 16, "ttl": 64, "time_ms": 0.073, "duplicate": false}, {"type": "reply", "timestamp": 1595191390.021265, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 17, "ttl": 64, "time_ms": 0.074, "duplicate": false}, {"type": "reply", "timestamp": 1595191391.044904, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 18, "ttl": 64, "time_ms": 0.089, "duplicate": false}, {"type": "reply", "timestamp": 1595191392.069285, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 19, "ttl": 64, "time_ms": 0.09, "duplicate": false}, {"type": "reply", "timestamp": 1595191393.093307, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 20, "ttl": 64, "time_ms": 0.084, "duplicate": false}]}

25
tests/fixtures/fedora32/ping-ip-O-D.out vendored Normal file
View File

@@ -0,0 +1,25 @@
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
[1595191373.643436] 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.043 ms
[1595191374.662543] 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.083 ms
[1595191375.685291] 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.091 ms
[1595191376.709678] 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.092 ms
[1595191377.734105] 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.090 ms
[1595191378.758107] 64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.089 ms
[1595191379.781215] 64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.087 ms
[1595191380.806010] 64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.092 ms
[1595191381.829806] 64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.088 ms
[1595191382.853166] 64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.135 ms
[1595191383.876966] 64 bytes from 127.0.0.1: icmp_seq=11 ttl=64 time=0.101 ms
[1595191384.900636] 64 bytes from 127.0.0.1: icmp_seq=12 ttl=64 time=0.084 ms
[1595191385.925055] 64 bytes from 127.0.0.1: icmp_seq=13 ttl=64 time=0.071 ms
[1595191386.949860] 64 bytes from 127.0.0.1: icmp_seq=14 ttl=64 time=0.087 ms
[1595191387.973041] 64 bytes from 127.0.0.1: icmp_seq=15 ttl=64 time=0.087 ms
[1595191388.997049] 64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.073 ms
[1595191390.021265] 64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.074 ms
[1595191391.044904] 64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.089 ms
[1595191392.069285] 64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.090 ms
[1595191393.093307] 64 bytes from 127.0.0.1: icmp_seq=20 ttl=64 time=0.084 ms
--- 127.0.0.1 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19450ms
rtt min/avg/max/mdev = 0.043/0.086/0.135/0.016 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 56, "pattern": null, "destination": "127.0.0.1", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19480.0, "round_trip_ms_min": 0.043, "round_trip_ms_avg": 0.093, "round_trip_ms_max": 0.16, "round_trip_ms_stddev": 0.025, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.043, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.07, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 3, "ttl": 64, "time_ms": 0.09, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 4, "ttl": 64, "time_ms": 0.093, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 5, "ttl": 64, "time_ms": 0.078, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 6, "ttl": 64, "time_ms": 0.16, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 7, "ttl": 64, "time_ms": 0.089, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 8, "ttl": 64, "time_ms": 0.155, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 9, "ttl": 64, "time_ms": 0.084, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 10, "ttl": 64, "time_ms": 0.111, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 11, "ttl": 64, "time_ms": 0.079, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 12, "ttl": 64, "time_ms": 0.103, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 13, "ttl": 64, "time_ms": 0.105, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 14, "ttl": 64, "time_ms": 0.087, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 15, "ttl": 64, "time_ms": 0.081, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 16, "ttl": 64, "time_ms": 0.089, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 17, "ttl": 64, "time_ms": 0.09, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 18, "ttl": 64, "time_ms": 0.089, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 19, "ttl": 64, "time_ms": 0.09, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 20, "ttl": 64, "time_ms": 0.092, "duplicate": false}]}

25
tests/fixtures/fedora32/ping-ip-O.out vendored Normal file
View File

@@ -0,0 +1,25 @@
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.070 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.090 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.093 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.078 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.160 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.155 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.111 ms
64 bytes from 127.0.0.1: icmp_seq=11 ttl=64 time=0.079 ms
64 bytes from 127.0.0.1: icmp_seq=12 ttl=64 time=0.103 ms
64 bytes from 127.0.0.1: icmp_seq=13 ttl=64 time=0.105 ms
64 bytes from 127.0.0.1: icmp_seq=14 ttl=64 time=0.087 ms
64 bytes from 127.0.0.1: icmp_seq=15 ttl=64 time=0.081 ms
64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.090 ms
64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.090 ms
64 bytes from 127.0.0.1: icmp_seq=20 ttl=64 time=0.092 ms
--- 127.0.0.1 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19480ms
rtt min/avg/max/mdev = 0.043/0.093/0.160/0.025 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:200::323", "data_bytes": 1400, "pattern": "0xabcd", "destination": "www.cnn.com", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19042.0, "round_trip_ms_min": 30.757, "round_trip_ms_avg": 37.536, "round_trip_ms_max": 59.021, "round_trip_ms_stddev": 5.967, "responses": [{"type": "reply", "timestamp": 1595191433.391154, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 1, "ttl": 59, "time_ms": 34.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191434.063086, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 2, "ttl": 59, "time_ms": 37.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191435.071905, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 3, "ttl": 59, "time_ms": 44.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191436.067128, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 4, "ttl": 59, "time_ms": 37.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191437.06455, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 5, "ttl": 59, "time_ms": 32.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191438.06541, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 6, "ttl": 59, "time_ms": 30.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191439.076718, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 7, "ttl": 59, "time_ms": 40.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191440.076357, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 8, "ttl": 59, "time_ms": 38.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191441.079078, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 9, "ttl": 59, "time_ms": 39.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191442.077537, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 10, "ttl": 59, "time_ms": 34.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191443.104345, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 11, "ttl": 59, "time_ms": 59.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191444.083741, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 12, "ttl": 59, "time_ms": 36.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191445.086748, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 13, "ttl": 59, "time_ms": 37.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191446.088958, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 14, "ttl": 59, "time_ms": 37.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191447.086122, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 15, "ttl": 59, "time_ms": 30.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191448.088312, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 16, "ttl": 59, "time_ms": 30.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191449.098353, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 17, "ttl": 59, "time_ms": 38.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191450.09959, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 18, "ttl": 59, "time_ms": 38.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191451.10105, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 19, "ttl": 59, "time_ms": 37.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191452.100239, "bytes": 1408, "response_ip": "2a04:4e42:200::323", "icmp_seq": 20, "ttl": 59, "time_ms": 35.0, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING www.cnn.com(2a04:4e42:200::323 (2a04:4e42:200::323)) 1400 data bytes
[1595191433.391154] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=1 ttl=59 time=34.6 ms
[1595191434.063086] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=2 ttl=59 time=37.2 ms
[1595191435.071905] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=3 ttl=59 time=44.3 ms
[1595191436.067128] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=4 ttl=59 time=37.3 ms
[1595191437.064550] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=5 ttl=59 time=32.2 ms
[1595191438.065410] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=6 ttl=59 time=30.8 ms
[1595191439.076718] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=7 ttl=59 time=40.6 ms
[1595191440.076357] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=8 ttl=59 time=38.2 ms
[1595191441.079078] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=9 ttl=59 time=39.0 ms
[1595191442.077537] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=10 ttl=59 time=34.3 ms
[1595191443.104345] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=11 ttl=59 time=59.0 ms
[1595191444.083741] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=12 ttl=59 time=36.8 ms
[1595191445.086748] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=13 ttl=59 time=37.6 ms
[1595191446.088958] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=14 ttl=59 time=37.3 ms
[1595191447.086122] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=15 ttl=59 time=30.9 ms
[1595191448.088312] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=16 ttl=59 time=30.8 ms
[1595191449.098353] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=17 ttl=59 time=38.9 ms
[1595191450.099590] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=18 ttl=59 time=38.1 ms
[1595191451.101050] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=19 ttl=59 time=37.8 ms
[1595191452.100239] 1408 bytes from 2a04:4e42:200::323 (2a04:4e42:200::323): icmp_seq=20 ttl=59 time=35.0 ms
--- www.cnn.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19042ms
rtt min/avg/max/mdev = 30.757/37.536/59.021/5.967 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:2e::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "www.cnn.com", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19043.0, "round_trip_ms_min": 38.533, "round_trip_ms_avg": 44.877, "round_trip_ms_max": 51.366, "round_trip_ms_stddev": 3.83, "responses": [{"type": "reply", "timestamp": 1595191452.2553, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 1, "ttl": 56, "time_ms": 39.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191453.229184, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 2, "ttl": 56, "time_ms": 47.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191454.229065, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 3, "ttl": 56, "time_ms": 46.4, "duplicate": false}, {"type": "reply", "timestamp": 1595191455.230571, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 4, "ttl": 56, "time_ms": 45.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191456.233811, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 5, "ttl": 56, "time_ms": 45.7, "duplicate": false}, {"type": "reply", "timestamp": 1595191457.228052, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 6, "ttl": 56, "time_ms": 38.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191458.228764, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 7, "ttl": 56, "time_ms": 39.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191459.243633, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 8, "ttl": 56, "time_ms": 51.4, "duplicate": false}, {"type": "reply", "timestamp": 1595191460.243509, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 9, "ttl": 56, "time_ms": 49.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191461.242713, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 10, "ttl": 56, "time_ms": 46.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191462.246016, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 11, "ttl": 56, "time_ms": 47.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191463.240552, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 12, "ttl": 56, "time_ms": 38.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191464.248594, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 13, "ttl": 56, "time_ms": 44.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191465.254128, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 14, "ttl": 56, "time_ms": 48.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191466.253777, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 15, "ttl": 56, "time_ms": 45.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191467.259039, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 16, "ttl": 56, "time_ms": 47.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191468.252991, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 17, "ttl": 56, "time_ms": 38.5, "duplicate": false}, {"type": "reply", "timestamp": 1595191469.263167, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 18, "ttl": 56, "time_ms": 47.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191470.264838, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 19, "ttl": 56, "time_ms": 46.3, "duplicate": false}, {"type": "reply", "timestamp": 1595191471.266951, "bytes": 64, "response_ip": "2a04:4e42:2e::323", "icmp_seq": 20, "ttl": 56, "time_ms": 45.4, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING www.cnn.com(2a04:4e42:2e::323 (2a04:4e42:2e::323)) 56 data bytes
[1595191452.255300] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=1 ttl=56 time=39.1 ms
[1595191453.229184] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=2 ttl=56 time=47.9 ms
[1595191454.229065] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=3 ttl=56 time=46.4 ms
[1595191455.230571] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=4 ttl=56 time=45.1 ms
[1595191456.233811] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=5 ttl=56 time=45.7 ms
[1595191457.228052] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=6 ttl=56 time=38.9 ms
[1595191458.228764] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=7 ttl=56 time=39.0 ms
[1595191459.243633] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=8 ttl=56 time=51.4 ms
[1595191460.243509] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=9 ttl=56 time=49.1 ms
[1595191461.242713] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=10 ttl=56 time=46.6 ms
[1595191462.246016] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=11 ttl=56 time=47.1 ms
[1595191463.240552] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=12 ttl=56 time=38.6 ms
[1595191464.248594] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=13 ttl=56 time=44.3 ms
[1595191465.254128] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=14 ttl=56 time=48.8 ms
[1595191466.253777] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=15 ttl=56 time=45.2 ms
[1595191467.259039] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=16 ttl=56 time=47.3 ms
[1595191468.252991] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=17 ttl=56 time=38.5 ms
[1595191469.263167] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=18 ttl=56 time=47.0 ms
[1595191470.264838] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=19 ttl=56 time=46.3 ms
[1595191471.266951] 64 bytes from 2a04:4e42:2e::323 (2a04:4e42:2e::323): icmp_seq=20 ttl=56 time=45.4 ms
--- www.cnn.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19043ms
rtt min/avg/max/mdev = 38.533/44.877/51.366/3.830 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:400::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "www.cnn.com", "packets_transmitted": 20, "packets_received": 19, "packet_loss_percent": 5.0, "duplicates": 0, "time_ms": 19049.0, "round_trip_ms_min": 23.598, "round_trip_ms_avg": 65.877, "round_trip_ms_max": 281.064, "round_trip_ms_stddev": 72.64, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 1, "ttl": 59, "time_ms": 24.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 2, "ttl": 59, "time_ms": 30.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 3, "ttl": 59, "time_ms": 23.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 4, "ttl": 59, "time_ms": 35.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 5, "ttl": 59, "time_ms": 32.3, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 6, "ttl": 59, "time_ms": 32.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 7, "ttl": 59, "time_ms": 26.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 8, "ttl": 59, "time_ms": 31.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 9, "ttl": 59, "time_ms": 33.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 10, "ttl": 59, "time_ms": 32.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 11, "ttl": 59, "time_ms": 31.0, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 12}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 13, "ttl": 59, "time_ms": 31.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 14, "ttl": 59, "time_ms": 112.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 15, "ttl": 59, "time_ms": 162.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 16, "ttl": 59, "time_ms": 223.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 17, "ttl": 59, "time_ms": 281.0, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 18, "ttl": 59, "time_ms": 33.4, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 19, "ttl": 59, "time_ms": 32.7, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:400::323", "icmp_seq": 20, "ttl": 59, "time_ms": 42.3, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING www.cnn.com(2a04:4e42:400::323 (2a04:4e42:400::323)) 56 data bytes
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=1 ttl=59 time=24.0 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=2 ttl=59 time=30.5 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=3 ttl=59 time=23.6 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=4 ttl=59 time=35.8 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=5 ttl=59 time=32.3 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=6 ttl=59 time=32.4 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=7 ttl=59 time=26.5 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=8 ttl=59 time=31.1 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=9 ttl=59 time=33.9 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=10 ttl=59 time=32.5 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=11 ttl=59 time=31.0 ms
no answer yet for icmp_seq=12
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=13 ttl=59 time=31.9 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=14 ttl=59 time=112 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=15 ttl=59 time=162 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=16 ttl=59 time=223 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=17 ttl=59 time=281 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=18 ttl=59 time=33.4 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=19 ttl=59 time=32.7 ms
64 bytes from 2a04:4e42:400::323 (2a04:4e42:400::323): icmp_seq=20 ttl=59 time=42.3 ms
--- www.cnn.com ping statistics ---
20 packets transmitted, 19 received, 5% packet loss, time 19049ms
rtt min/avg/max/mdev = 23.598/65.877/281.064/72.640 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:600::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "2a04:4e42:600::323", "packets_transmitted": 20, "packets_received": 20, "packet_loss_percent": 0.0, "duplicates": 0, "time_ms": 19042.0, "round_trip_ms_min": 27.88, "round_trip_ms_avg": 45.072, "round_trip_ms_max": 148.38, "round_trip_ms_stddev": 27.078, "responses": [{"type": "reply", "timestamp": 1595191413.333769, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 1, "ttl": 59, "time_ms": 34.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191414.342973, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 2, "ttl": 59, "time_ms": 41.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191415.332214, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 3, "ttl": 59, "time_ms": 28.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191416.342603, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 4, "ttl": 59, "time_ms": 36.8, "duplicate": false}, {"type": "reply", "timestamp": 1595191417.344996, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 5, "ttl": 59, "time_ms": 37.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191418.348619, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 6, "ttl": 59, "time_ms": 37.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191419.357154, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 7, "ttl": 59, "time_ms": 44.4, "duplicate": false}, {"type": "reply", "timestamp": 1595191420.350087, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 8, "ttl": 59, "time_ms": 35.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191421.346691, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 9, "ttl": 59, "time_ms": 29.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191422.355843, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 10, "ttl": 59, "time_ms": 37.4, "duplicate": false}, {"type": "reply", "timestamp": 1595191423.397934, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 11, "ttl": 59, "time_ms": 76.7, "duplicate": false}, {"type": "reply", "timestamp": 1595191424.470798, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 12, "ttl": 59, "time_ms": 148.0, "duplicate": false}, {"type": "reply", "timestamp": 1595191425.358652, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 13, "ttl": 59, "time_ms": 33.6, "duplicate": false}, {"type": "reply", "timestamp": 1595191426.404587, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 14, "ttl": 59, "time_ms": 77.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191427.359785, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 15, "ttl": 59, "time_ms": 29.7, "duplicate": false}, {"type": "reply", "timestamp": 1595191428.367539, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 16, "ttl": 59, "time_ms": 34.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191429.372551, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 17, "ttl": 59, "time_ms": 37.2, "duplicate": false}, {"type": "reply", "timestamp": 1595191430.364571, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 18, "ttl": 59, "time_ms": 27.9, "duplicate": false}, {"type": "reply", "timestamp": 1595191431.375232, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 19, "ttl": 59, "time_ms": 37.1, "duplicate": false}, {"type": "reply", "timestamp": 1595191432.375802, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 20, "ttl": 59, "time_ms": 34.3, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING 2a04:4e42:600::323(2a04:4e42:600::323) 56 data bytes
[1595191413.333769] 64 bytes from 2a04:4e42:600::323: icmp_seq=1 ttl=59 time=34.6 ms
[1595191414.342973] 64 bytes from 2a04:4e42:600::323: icmp_seq=2 ttl=59 time=41.9 ms
[1595191415.332214] 64 bytes from 2a04:4e42:600::323: icmp_seq=3 ttl=59 time=28.8 ms
[1595191416.342603] 64 bytes from 2a04:4e42:600::323: icmp_seq=4 ttl=59 time=36.8 ms
[1595191417.344996] 64 bytes from 2a04:4e42:600::323: icmp_seq=5 ttl=59 time=37.6 ms
[1595191418.348619] 64 bytes from 2a04:4e42:600::323: icmp_seq=6 ttl=59 time=37.9 ms
[1595191419.357154] 64 bytes from 2a04:4e42:600::323: icmp_seq=7 ttl=59 time=44.4 ms
[1595191420.350087] 64 bytes from 2a04:4e42:600::323: icmp_seq=8 ttl=59 time=35.1 ms
[1595191421.346691] 64 bytes from 2a04:4e42:600::323: icmp_seq=9 ttl=59 time=29.9 ms
[1595191422.355843] 64 bytes from 2a04:4e42:600::323: icmp_seq=10 ttl=59 time=37.4 ms
[1595191423.397934] 64 bytes from 2a04:4e42:600::323: icmp_seq=11 ttl=59 time=76.7 ms
[1595191424.470798] 64 bytes from 2a04:4e42:600::323: icmp_seq=12 ttl=59 time=148 ms
[1595191425.358652] 64 bytes from 2a04:4e42:600::323: icmp_seq=13 ttl=59 time=33.6 ms
[1595191426.404587] 64 bytes from 2a04:4e42:600::323: icmp_seq=14 ttl=59 time=77.2 ms
[1595191427.359785] 64 bytes from 2a04:4e42:600::323: icmp_seq=15 ttl=59 time=29.7 ms
[1595191428.367539] 64 bytes from 2a04:4e42:600::323: icmp_seq=16 ttl=59 time=34.9 ms
[1595191429.372551] 64 bytes from 2a04:4e42:600::323: icmp_seq=17 ttl=59 time=37.2 ms
[1595191430.364571] 64 bytes from 2a04:4e42:600::323: icmp_seq=18 ttl=59 time=27.9 ms
[1595191431.375232] 64 bytes from 2a04:4e42:600::323: icmp_seq=19 ttl=59 time=37.1 ms
[1595191432.375802] 64 bytes from 2a04:4e42:600::323: icmp_seq=20 ttl=59 time=34.3 ms
--- 2a04:4e42:600::323 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19042ms
rtt min/avg/max/mdev = 27.880/45.072/148.380/27.078 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "2a04:4e42:600::323", "data_bytes": 56, "pattern": "0xabcd", "destination": "2a04:4e42:600::323", "packets_transmitted": 20, "packets_received": 17, "packet_loss_percent": 15.0, "duplicates": 0, "time_ms": 19193.0, "round_trip_ms_min": 26.566, "round_trip_ms_avg": 33.623, "round_trip_ms_max": 43.945, "round_trip_ms_stddev": 5.029, "responses": [{"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 1, "ttl": 59, "time_ms": 34.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 2, "ttl": 59, "time_ms": 36.6, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 3}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 4, "ttl": 59, "time_ms": 28.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 5, "ttl": 59, "time_ms": 36.8, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 6, "ttl": 59, "time_ms": 28.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 7, "ttl": 59, "time_ms": 39.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 8, "ttl": 59, "time_ms": 28.2, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 9, "ttl": 59, "time_ms": 28.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 10, "ttl": 59, "time_ms": 36.5, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 11}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 12, "ttl": 59, "time_ms": 33.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 13, "ttl": 59, "time_ms": 28.1, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 14, "ttl": 59, "time_ms": 27.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 15, "ttl": 59, "time_ms": 36.0, "duplicate": false}, {"type": "timeout", "timestamp": null, "icmp_seq": 16}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 17, "ttl": 59, "time_ms": 26.6, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 18, "ttl": 59, "time_ms": 38.5, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 19, "ttl": 59, "time_ms": 43.9, "duplicate": false}, {"type": "reply", "timestamp": null, "bytes": 64, "response_ip": "2a04:4e42:600::323", "icmp_seq": 20, "ttl": 59, "time_ms": 37.9, "duplicate": false}]}

View File

@@ -0,0 +1,26 @@
PATTERN: 0xabcd
PING 2a04:4e42:600::323(2a04:4e42:600::323) 56 data bytes
64 bytes from 2a04:4e42:600::323: icmp_seq=1 ttl=59 time=34.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=2 ttl=59 time=36.6 ms
no answer yet for icmp_seq=3
64 bytes from 2a04:4e42:600::323: icmp_seq=4 ttl=59 time=28.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=5 ttl=59 time=36.8 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=6 ttl=59 time=28.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=7 ttl=59 time=39.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=8 ttl=59 time=28.2 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=9 ttl=59 time=28.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=10 ttl=59 time=36.5 ms
no answer yet for icmp_seq=11
64 bytes from 2a04:4e42:600::323: icmp_seq=12 ttl=59 time=33.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=13 ttl=59 time=28.1 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=14 ttl=59 time=27.6 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=15 ttl=59 time=36.0 ms
no answer yet for icmp_seq=16
64 bytes from 2a04:4e42:600::323: icmp_seq=17 ttl=59 time=26.6 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=18 ttl=59 time=38.5 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=19 ttl=59 time=43.9 ms
64 bytes from 2a04:4e42:600::323: icmp_seq=20 ttl=59 time=37.9 ms
--- 2a04:4e42:600::323 ping statistics ---
20 packets transmitted, 17 received, 15% packet loss, time 19193ms
rtt min/avg/max/mdev = 26.566/33.623/43.945/5.029 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.1.67", "data_bytes": 56, "pattern": "0xff", "destination": "cnn.com", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 28.389, "round_trip_ms_avg": 31.745, "round_trip_ms_max": 34.505, "round_trip_ms_stddev": 2.532, "responses": [{"type": "reply", "bytes": 64, "response_ip": "151.101.1.67", "icmp_seq": 0, "ttl": 59, "time_ms": 32.34, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "151.101.1.67", "icmp_seq": 1, "ttl": 59, "time_ms": 34.505, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "151.101.1.67", "icmp_seq": 2, "ttl": 59, "time_ms": 28.389, "duplicate": false}]}

View File

@@ -0,0 +1,9 @@
PATTERN: 0xff
PING cnn.com (151.101.1.67): 56 data bytes
64 bytes from 151.101.1.67: icmp_seq=0 ttl=59 time=32.340 ms
64 bytes from 151.101.1.67: icmp_seq=1 ttl=59 time=34.505 ms
64 bytes from 151.101.1.67: icmp_seq=2 ttl=59 time=28.389 ms
--- cnn.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 28.389/31.745/34.505/2.532 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 40, "pattern": null, "destination": "localhost", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.022, "round_trip_ms_avg": 0.03, "round_trip_ms_max": 0.038, "round_trip_ms_stddev": 0.006, "responses": [{"type": "reply", "bytes": 48, "response_ip": "127.0.0.1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.022, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.038, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.03, "duplicate": false}]}

View File

@@ -0,0 +1,8 @@
PING localhost (127.0.0.1): 40 data bytes
48 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.022 ms
48 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.038 ms
48 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.030 ms
--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.022/0.030/0.038/0.006 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "151.101.65.67", "data_bytes": 56, "pattern": null, "destination": "cnn.com", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 27.01, "round_trip_ms_avg": 33.831, "round_trip_ms_max": 42.506, "round_trip_ms_stddev": 6.461, "responses": [{"type": "reply", "bytes": 64, "response_ip": "151.101.65.67", "icmp_seq": 0, "ttl": 59, "time_ms": 27.01, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "151.101.65.67", "icmp_seq": 1, "ttl": 59, "time_ms": 31.978, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "151.101.65.67", "icmp_seq": 2, "ttl": 59, "time_ms": 42.506, "duplicate": false}]}

View File

@@ -0,0 +1,8 @@
PING cnn.com (151.101.65.67): 56 data bytes
64 bytes from 151.101.65.67: icmp_seq=0 ttl=59 time=27.010 ms
64 bytes from 151.101.65.67: icmp_seq=1 ttl=59 time=31.978 ms
64 bytes from 151.101.65.67: icmp_seq=2 ttl=59 time=42.506 ms
--- cnn.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 27.010/33.831/42.506/6.461 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 56, "pattern": "0xff", "destination": "127.0.0.1", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.034, "round_trip_ms_avg": 0.037, "round_trip_ms_max": 0.042, "round_trip_ms_stddev": 0.003, "responses": [{"type": "reply", "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.042, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.034, "duplicate": false}]}

View File

@@ -0,0 +1,9 @@
PATTERN: 0xff
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.034 ms
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.034/0.037/0.042/0.003 ms

View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 40, "pattern": null, "destination": "127.0.0.1", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.024, "round_trip_ms_avg": 0.032, "round_trip_ms_max": 0.036, "round_trip_ms_stddev": 0.006, "responses": [{"type": "reply", "bytes": 48, "response_ip": "127.0.0.1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.024, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.036, "duplicate": false}]}

View File

@@ -0,0 +1,8 @@
PING 127.0.0.1 (127.0.0.1): 40 data bytes
48 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.024 ms
48 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.036 ms
48 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.036 ms
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.024/0.032/0.036/0.006 ms

1
tests/fixtures/freebsd12/ping-ip.json vendored Normal file
View File

@@ -0,0 +1 @@
{"destination_ip": "127.0.0.1", "data_bytes": 56, "pattern": null, "destination": "127.0.0.1", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.022, "round_trip_ms_avg": 0.033, "round_trip_ms_max": 0.041, "round_trip_ms_stddev": 0.008, "responses": [{"type": "reply", "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.022, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 64, "response_ip": "127.0.0.1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.041, "duplicate": false}]}

8
tests/fixtures/freebsd12/ping-ip.out vendored Normal file
View File

@@ -0,0 +1,8 @@
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.022 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.041 ms
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.022/0.033/0.041/0.008 ms

View File

@@ -0,0 +1 @@
{"source_ip": "::1", "destination_ip": "::1", "data_bytes": 56, "pattern": "0xff", "destination": "localhost", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.036, "round_trip_ms_avg": 0.045, "round_trip_ms_max": 0.051, "round_trip_ms_stddev": 0.007, "responses": [{"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.051, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.048, "duplicate": false}]}

View File

@@ -0,0 +1,9 @@
PATTERN: 0xff
PING6(56=40+8+8 bytes) ::1 --> ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.036 ms
16 bytes from ::1, icmp_seq=1 hlim=64 time=0.051 ms
16 bytes from ::1, icmp_seq=2 hlim=64 time=0.048 ms
--- localhost ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.036/0.045/0.051/0.007 ms

View File

@@ -0,0 +1 @@
{"source_ip": "::1", "destination_ip": "::1", "data_bytes": 88, "pattern": null, "destination": "localhost", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.035, "round_trip_ms_avg": 0.056, "round_trip_ms_max": 0.082, "round_trip_ms_stddev": 0.019, "responses": [{"type": "reply", "bytes": 48, "response_ip": "::1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.035, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "::1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.082, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "::1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.051, "duplicate": false}]}

View File

@@ -0,0 +1,8 @@
PING6(88=40+8+40 bytes) ::1 --> ::1
48 bytes from ::1, icmp_seq=0 hlim=64 time=0.035 ms
48 bytes from ::1, icmp_seq=1 hlim=64 time=0.082 ms
48 bytes from ::1, icmp_seq=2 hlim=64 time=0.051 ms
--- localhost ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.035/0.056/0.082/0.019 ms

View File

@@ -0,0 +1 @@
{"source_ip": "::1", "destination_ip": "::1", "data_bytes": 56, "pattern": null, "destination": "localhost", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.036, "round_trip_ms_avg": 0.042, "round_trip_ms_max": 0.048, "round_trip_ms_stddev": 0.005, "responses": [{"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.041, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.048, "duplicate": false}]}

View File

@@ -0,0 +1,8 @@
PING6(56=40+8+8 bytes) ::1 --> ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.036 ms
16 bytes from ::1, icmp_seq=1 hlim=64 time=0.041 ms
16 bytes from ::1, icmp_seq=2 hlim=64 time=0.048 ms
--- localhost ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.036/0.042/0.048/0.005 ms

View File

@@ -0,0 +1 @@
{"source_ip": "::1", "destination_ip": "::1", "data_bytes": 56, "pattern": "0xff", "destination": "::1", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.036, "round_trip_ms_avg": 0.045, "round_trip_ms_max": 0.054, "round_trip_ms_stddev": 0.007, "responses": [{"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.054, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.045, "duplicate": false}]}

View File

@@ -0,0 +1,9 @@
PATTERN: 0xff
PING6(56=40+8+8 bytes) ::1 --> ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.036 ms
16 bytes from ::1, icmp_seq=1 hlim=64 time=0.054 ms
16 bytes from ::1, icmp_seq=2 hlim=64 time=0.045 ms
--- ::1 ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.036/0.045/0.054/0.007 ms

View File

@@ -0,0 +1 @@
{"source_ip": "::1", "destination_ip": "::1", "data_bytes": 88, "pattern": null, "destination": "::1", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.036, "round_trip_ms_avg": 0.058, "round_trip_ms_max": 0.088, "round_trip_ms_stddev": 0.022, "responses": [{"type": "reply", "bytes": 48, "response_ip": "::1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.036, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "::1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.088, "duplicate": false}, {"type": "reply", "bytes": 48, "response_ip": "::1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.049, "duplicate": false}]}

View File

@@ -0,0 +1,8 @@
PING6(88=40+8+40 bytes) ::1 --> ::1
48 bytes from ::1, icmp_seq=0 hlim=64 time=0.036 ms
48 bytes from ::1, icmp_seq=1 hlim=64 time=0.088 ms
48 bytes from ::1, icmp_seq=2 hlim=64 time=0.049 ms
--- ::1 ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.036/0.058/0.088/0.022 ms

View File

@@ -0,0 +1 @@
{"source_ip": "::1", "destination_ip": "::1", "data_bytes": 56, "pattern": null, "destination": "::1", "packets_transmitted": 3, "packets_received": 3, "packet_loss_percent": 0.0, "duplicates": 0, "round_trip_ms_min": 0.034, "round_trip_ms_avg": 0.044, "round_trip_ms_max": 0.053, "round_trip_ms_stddev": 0.008, "responses": [{"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 0, "ttl": 64, "time_ms": 0.034, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 1, "ttl": 64, "time_ms": 0.053, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "::1", "icmp_seq": 2, "ttl": 64, "time_ms": 0.045, "duplicate": false}]}

8
tests/fixtures/freebsd12/ping6-ip.out vendored Normal file
View File

@@ -0,0 +1,8 @@
PING6(56=40+8+8 bytes) ::1 --> ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.034 ms
16 bytes from ::1, icmp_seq=1 hlim=64 time=0.053 ms
16 bytes from ::1, icmp_seq=2 hlim=64 time=0.045 ms
--- ::1 ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.034/0.044/0.053/0.008 ms

Some files were not shown because too many files have changed in this diff Show More