mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2026-04-03 17:44:07 +02:00
Compare commits
70 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34ed772775 | ||
|
|
d5ab95571f | ||
|
|
ffb3a0ee5f | ||
|
|
94b12b57aa | ||
|
|
6d149e8457 | ||
|
|
1ad89c90d8 | ||
|
|
fb71c7b020 | ||
|
|
28ed17ad3b | ||
|
|
0c2a4e2bf7 | ||
|
|
62bec30de2 | ||
|
|
3fced77e4e | ||
|
|
a09d1d8b76 | ||
|
|
8f4243fbd8 | ||
|
|
47aaf20549 | ||
|
|
0c5289ea50 | ||
|
|
3e53323514 | ||
|
|
a5ee9861b9 | ||
|
|
feb8ca7654 | ||
|
|
a7abe4473b | ||
|
|
780b9b61de | ||
|
|
19ace36ffa | ||
|
|
5fff8afc9f | ||
|
|
4ad230c927 | ||
|
|
dd98eb1ec8 | ||
|
|
c6baf42e72 | ||
|
|
e2bac97d56 | ||
|
|
d112ee94d0 | ||
|
|
27b21b2faf | ||
|
|
8c96d5cd20 | ||
|
|
c29ed3fd69 | ||
|
|
cedf603f12 | ||
|
|
279161c36f | ||
|
|
ce0b43d919 | ||
|
|
ddafa5bf06 | ||
|
|
bc7116c31b | ||
|
|
53b7092721 | ||
|
|
beb9174b1b | ||
|
|
aea41ed341 | ||
|
|
d789494cb1 | ||
|
|
608e7b4cff | ||
|
|
4ee199c02a | ||
|
|
fbf47d4085 | ||
|
|
5a238e4b42 | ||
|
|
f852b8246a | ||
|
|
88140d929a | ||
|
|
45f7268240 | ||
|
|
3a3c8e4d4a | ||
|
|
c1ac183a04 | ||
|
|
18bb779ee5 | ||
|
|
8b6612fe79 | ||
|
|
fde0bc8534 | ||
|
|
e661a78939 | ||
|
|
847e346602 | ||
|
|
b969751688 | ||
|
|
ad6f2ba03a | ||
|
|
63c6a5edc0 | ||
|
|
9f4cf9dd5e | ||
|
|
51331b6dc0 | ||
|
|
efb6761033 | ||
|
|
6a4f737a0f | ||
|
|
be6864b778 | ||
|
|
de3b91a36c | ||
|
|
ef5482c3b5 | ||
|
|
d20b795137 | ||
|
|
8a134065df | ||
|
|
22aee1bfa4 | ||
|
|
b282820fd6 | ||
|
|
3ee098306d | ||
|
|
09e8f379a6 | ||
|
|
69018cdb3a |
@@ -1,6 +1,22 @@
|
||||
jc changelog
|
||||
|
||||
20200612 v1.11.6
|
||||
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 freebsd12
|
||||
- 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
|
||||
|
||||
20200622 v1.11.7
|
||||
- Fix iptables parser issue which would not output the last chain
|
||||
|
||||
20200614 v1.11.6
|
||||
- Improve and standardize empty data check for all parsers
|
||||
|
||||
20200612 v1.11.5
|
||||
|
||||
@@ -44,6 +44,7 @@ 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
|
||||
|
||||
84
docs/parsers/sysctl.md
Normal file
84
docs/parsers/sysctl.md
Normal 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.
|
||||
|
||||
180
jc/cli.py
180
jc/cli.py
@@ -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.6'
|
||||
description = 'jc cli output JSON conversion tool'
|
||||
version = '1.12.1'
|
||||
description = 'JSON conversion tool for CLI output'
|
||||
author = 'Kelly Brazil'
|
||||
author_email = 'kellyjonbrazil@gmail.com'
|
||||
|
||||
@@ -70,6 +70,7 @@ parsers = [
|
||||
'shadow',
|
||||
'ss',
|
||||
'stat',
|
||||
'sysctl',
|
||||
'systemctl',
|
||||
'systemctl-lj',
|
||||
'systemctl-ls',
|
||||
@@ -86,8 +87,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 +99,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 +160,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 +197,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 +242,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 +272,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'''
|
||||
@@ -247,7 +288,7 @@ def helptext(message):
|
||||
{parsers_string}
|
||||
Options:
|
||||
-a about jc
|
||||
-d debug - show trace messages
|
||||
-d debug - show traceback (-dd for verbose traceback)
|
||||
-m monochrome output
|
||||
-p pretty print output
|
||||
-q quiet - suppress warnings
|
||||
@@ -260,30 +301,30 @@ def helptext(message):
|
||||
|
||||
jc -p ls -al
|
||||
'''
|
||||
print(textwrap.dedent(helptext_string), file=sys.stderr)
|
||||
|
||||
|
||||
def json_out(data, pretty=False, mono=False, piped_out=False):
|
||||
# set colors
|
||||
class JcStyle(Style):
|
||||
styles = set_env_colors()
|
||||
return textwrap.dedent(helptext_string)
|
||||
|
||||
|
||||
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(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 +357,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 +366,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 +379,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 +387,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 +401,8 @@ def main():
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
jc_colors = os.getenv('JC_COLORS')
|
||||
|
||||
# try magic syntax first: e.g. jc -p ls -al
|
||||
magic()
|
||||
|
||||
@@ -370,54 +414,54 @@ def main():
|
||||
options.extend(opt[1:])
|
||||
|
||||
debug = 'd' in options
|
||||
verbose_debug = True if options.count('d') > 1 else False
|
||||
mono = 'm' in options
|
||||
pretty = 'p' in options
|
||||
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:
|
||||
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__':
|
||||
|
||||
@@ -134,7 +134,7 @@ import jc.utils
|
||||
|
||||
|
||||
class info():
|
||||
version = '1.3'
|
||||
version = '1.4'
|
||||
description = 'iptables command parser'
|
||||
author = 'Kelly Brazil'
|
||||
author_email = 'kellyjonbrazil@gmail.com'
|
||||
@@ -194,19 +194,19 @@ def process(proc_data):
|
||||
if 'bytes' in rule:
|
||||
multiplier = 1
|
||||
if rule['bytes'][-1] == 'K':
|
||||
multiplier = 1000
|
||||
multiplier = 10 ** 3
|
||||
rule['bytes'] = rule['bytes'].rstrip('K')
|
||||
elif rule['bytes'][-1] == 'M':
|
||||
multiplier = 1000000
|
||||
multiplier = 10 ** 6
|
||||
rule['bytes'] = rule['bytes'].rstrip('M')
|
||||
elif rule['bytes'][-1] == 'G':
|
||||
multiplier = 1000000000
|
||||
multiplier = 10 ** 9
|
||||
rule['bytes'] = rule['bytes'].rstrip('G')
|
||||
elif rule['bytes'][-1] == 'T':
|
||||
multiplier = 1000000000000
|
||||
multiplier = 10 ** 12
|
||||
rule['bytes'] = rule['bytes'].rstrip('T')
|
||||
elif rule['bytes'][-1] == 'P':
|
||||
multiplier = 1000000000000000
|
||||
multiplier = 10 ** 15
|
||||
rule['bytes'] = rule['bytes'].rstrip('P')
|
||||
|
||||
try:
|
||||
@@ -243,14 +243,14 @@ def parse(data, raw=False, quiet=False):
|
||||
chain = {}
|
||||
headers = []
|
||||
|
||||
cleandata = data.splitlines()
|
||||
|
||||
if jc.utils.has_data(data):
|
||||
|
||||
for line in cleandata:
|
||||
for line in list(filter(None, data.splitlines())):
|
||||
|
||||
if line.startswith('Chain'):
|
||||
raw_output.append(chain)
|
||||
if chain:
|
||||
raw_output.append(chain)
|
||||
|
||||
chain = {}
|
||||
headers = []
|
||||
|
||||
@@ -274,7 +274,8 @@ def parse(data, raw=False, quiet=False):
|
||||
if temp_rule:
|
||||
chain['rules'].append(temp_rule)
|
||||
|
||||
raw_output = list(filter(None, raw_output))
|
||||
if chain:
|
||||
raw_output.append(chain)
|
||||
|
||||
if raw:
|
||||
return raw_output
|
||||
|
||||
154
jc/parsers/sysctl.py
Normal file
154
jc/parsers/sysctl.py
Normal 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)
|
||||
247
jc/tracebackplus.py
Normal file
247
jc/tracebackplus.py
Normal 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)
|
||||
@@ -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):
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
ruamel.yaml>=0.15.0
|
||||
xmltodict>=0.12.0
|
||||
Pygments>=2.4.2
|
||||
Pygments>=2.3.0
|
||||
|
||||
4
setup.py
4
setup.py
@@ -5,14 +5,14 @@ with open('README.md', 'r') as f:
|
||||
|
||||
setuptools.setup(
|
||||
name='jc',
|
||||
version='1.11.6',
|
||||
version='1.12.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,
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
[{"chain": "PREROUTING", "rules": [{"target": "PREROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "INPUT", "rules": [{"target": "INPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "FORWARD", "rules": [{"target": "FORWARD_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT", "rules": [{"target": "OUTPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "POSTROUTING", "rules": [{"target": "POSTROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "FORWARD_direct", "rules": []}, {"chain": "INPUT_direct", "rules": []}, {"chain": "OUTPUT_direct", "rules": []}, {"chain": "POSTROUTING_direct", "rules": []}, {"chain": "PREROUTING_ZONES", "rules": [{"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "PREROUTING_ZONES_SOURCE", "rules": []}, {"chain": "PREROUTING_direct", "rules": []}, {"chain": "PRE_public", "rules": [{"target": "PRE_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "PRE_public_allow", "rules": []}, {"chain": "PRE_public_deny", "rules": []}]
|
||||
[{"chain": "PREROUTING", "rules": [{"target": "PREROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "INPUT", "rules": [{"target": "INPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "FORWARD", "rules": [{"target": "FORWARD_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT", "rules": [{"target": "OUTPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "POSTROUTING", "rules": [{"target": "POSTROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "FORWARD_direct", "rules": []}, {"chain": "INPUT_direct", "rules": []}, {"chain": "OUTPUT_direct", "rules": []}, {"chain": "POSTROUTING_direct", "rules": []}, {"chain": "PREROUTING_ZONES", "rules": [{"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "PREROUTING_ZONES_SOURCE", "rules": []}, {"chain": "PREROUTING_direct", "rules": []}, {"chain": "PRE_public", "rules": [{"target": "PRE_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "PRE_public_allow", "rules": []}, {"chain": "PRE_public_deny", "rules": []}, {"chain": "PRE_public_log", "rules": []}]
|
||||
|
||||
2
tests/fixtures/centos-7.7/iptables-nat.json
vendored
2
tests/fixtures/centos-7.7/iptables-nat.json
vendored
@@ -1 +1 @@
|
||||
[{"chain": "PREROUTING", "rules": [{"target": "PREROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "DOCKER", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ADDRTYPE match dst-type LOCAL"}]}, {"chain": "INPUT", "rules": []}, {"chain": "OUTPUT", "rules": [{"target": "OUTPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "DOCKER", "prot": "all", "opt": null, "source": "anywhere", "destination": "!loopback/8", "options": "ADDRTYPE match dst-type LOCAL"}]}, {"chain": "POSTROUTING", "rules": [{"target": "MASQUERADE", "prot": "all", "opt": null, "source": "172.17.0.0/16", "destination": "anywhere"}, {"target": "POSTROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POSTROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POSTROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "DOCKER", "rules": [{"target": "RETURN", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT_direct", "rules": []}, {"chain": "POSTROUTING_ZONES", "rules": [{"target": "POST_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "POST_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "POSTROUTING_ZONES_SOURCE", "rules": []}, {"chain": "POSTROUTING_direct", "rules": []}, {"chain": "POST_public", "rules": [{"target": "POST_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POST_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POST_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "POST_public_allow", "rules": []}, {"chain": "POST_public_deny", "rules": []}, {"chain": "POST_public_log", "rules": []}, {"chain": "PREROUTING_ZONES", "rules": [{"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "PREROUTING_ZONES_SOURCE", "rules": []}, {"chain": "PREROUTING_direct", "rules": []}, {"chain": "PRE_public", "rules": [{"target": "PRE_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "PRE_public_allow", "rules": []}, {"chain": "PRE_public_deny", "rules": []}]
|
||||
[{"chain": "PREROUTING", "rules": [{"target": "PREROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "DOCKER", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ADDRTYPE match dst-type LOCAL"}]}, {"chain": "INPUT", "rules": []}, {"chain": "OUTPUT", "rules": [{"target": "OUTPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "DOCKER", "prot": "all", "opt": null, "source": "anywhere", "destination": "!loopback/8", "options": "ADDRTYPE match dst-type LOCAL"}]}, {"chain": "POSTROUTING", "rules": [{"target": "MASQUERADE", "prot": "all", "opt": null, "source": "172.17.0.0/16", "destination": "anywhere"}, {"target": "POSTROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POSTROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POSTROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "DOCKER", "rules": [{"target": "RETURN", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT_direct", "rules": []}, {"chain": "POSTROUTING_ZONES", "rules": [{"target": "POST_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "POST_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "POSTROUTING_ZONES_SOURCE", "rules": []}, {"chain": "POSTROUTING_direct", "rules": []}, {"chain": "POST_public", "rules": [{"target": "POST_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POST_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "POST_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "POST_public_allow", "rules": []}, {"chain": "POST_public_deny", "rules": []}, {"chain": "POST_public_log", "rules": []}, {"chain": "PREROUTING_ZONES", "rules": [{"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "PREROUTING_ZONES_SOURCE", "rules": []}, {"chain": "PREROUTING_direct", "rules": []}, {"chain": "PRE_public", "rules": [{"target": "PRE_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "PRE_public_allow", "rules": []}, {"chain": "PRE_public_deny", "rules": []}, {"chain": "PRE_public_log", "rules": []}]
|
||||
|
||||
2
tests/fixtures/centos-7.7/iptables-raw.json
vendored
2
tests/fixtures/centos-7.7/iptables-raw.json
vendored
@@ -1 +1 @@
|
||||
[{"chain": "PREROUTING", "rules": [{"target": "PREROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT", "rules": [{"target": "OUTPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT_direct", "rules": []}, {"chain": "PREROUTING_ZONES", "rules": [{"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "PREROUTING_ZONES_SOURCE", "rules": []}, {"chain": "PREROUTING_direct", "rules": []}, {"chain": "PRE_public", "rules": [{"target": "PRE_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "PRE_public_allow", "rules": []}, {"chain": "PRE_public_deny", "rules": []}]
|
||||
[{"chain": "PREROUTING", "rules": [{"target": "PREROUTING_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES_SOURCE", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PREROUTING_ZONES", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT", "rules": [{"target": "OUTPUT_direct", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "OUTPUT_direct", "rules": []}, {"chain": "PREROUTING_ZONES", "rules": [{"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}, {"target": "PRE_public", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "[goto] "}]}, {"chain": "PREROUTING_ZONES_SOURCE", "rules": []}, {"chain": "PREROUTING_direct", "rules": []}, {"chain": "PRE_public", "rules": [{"target": "PRE_public_log", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_deny", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "PRE_public_allow", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}]}, {"chain": "PRE_public_allow", "rules": []}, {"chain": "PRE_public_deny", "rules": []}, {"chain": "PRE_public_log", "rules": []}]
|
||||
|
||||
1
tests/fixtures/centos-7.7/sysctl-a.json
vendored
Normal file
1
tests/fixtures/centos-7.7/sysctl-a.json
vendored
Normal file
File diff suppressed because one or more lines are too long
918
tests/fixtures/centos-7.7/sysctl-a.out
vendored
Normal file
918
tests/fixtures/centos-7.7/sysctl-a.out
vendored
Normal 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
|
||||
1
tests/fixtures/freebsd12/sysctl-a.json
vendored
Normal file
1
tests/fixtures/freebsd12/sysctl-a.json
vendored
Normal file
File diff suppressed because one or more lines are too long
3783
tests/fixtures/freebsd12/sysctl-a.out
vendored
Normal file
3783
tests/fixtures/freebsd12/sysctl-a.out
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
tests/fixtures/osx-10.14.6/sysctl-a.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/sysctl-a.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1287
tests/fixtures/osx-10.14.6/sysctl-a.out
vendored
Normal file
1287
tests/fixtures/osx-10.14.6/sysctl-a.out
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
[{"chain": "INPUT", "rules": [{"num": 1, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"num": 2, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"num": 3, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"num": 4, "target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"num": 5, "target": "DROP", "prot": "all", "opt": null, "source": "15.15.15.51", "destination": "anywhere"}, {"num": 6, "target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}]}, {"chain": "FORWARD", "rules": []}]
|
||||
[{"chain": "INPUT", "rules": [{"num": 1, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"num": 2, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"num": 3, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"num": 4, "target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"num": 5, "target": "DROP", "prot": "all", "opt": null, "source": "15.15.15.51", "destination": "anywhere"}, {"num": 6, "target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}]}, {"chain": "FORWARD", "rules": []}, {"chain": "OUTPUT", "rules": [{"num": 1, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"num": 2, "target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate ESTABLISHED"}, {"num": 3, "target": "ACCEPT", "prot": "tcp", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "tcp spt:ssh ctstate ESTABLISHED"}]}]
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"chain": "INPUT", "rules": [{"pkts": 66, "bytes": 6034, "target": "ACCEPT", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 1137, "bytes": 318000, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate RELATED,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate INVALID"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "15.15.15.0/24", "destination": "0.0.0.0/0", "options": "tcp dpt:22 ctstate NEW,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate RELATED,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate INVALID"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "15.15.15.0/24", "destination": "0.0.0.0/0", "options": "tcp dpt:22 ctstate NEW,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate RELATED,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate INVALID"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "15.15.15.51", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "15.15.15.0/24", "destination": "0.0.0.0/0", "options": "tcp dpt:22 ctstate NEW,ESTABLISHED"}]}, {"chain": "FORWARD", "rules": []}]
|
||||
[{"chain": "INPUT", "rules": [{"pkts": 66, "bytes": 6034, "target": "ACCEPT", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 1137, "bytes": 318000, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate RELATED,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate INVALID"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "15.15.15.0/24", "destination": "0.0.0.0/0", "options": "tcp dpt:22 ctstate NEW,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate RELATED,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate INVALID"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "15.15.15.0/24", "destination": "0.0.0.0/0", "options": "tcp dpt:22 ctstate NEW,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate RELATED,ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate INVALID"}, {"pkts": 0, "bytes": 0, "target": "DROP", "prot": "all", "opt": null, "in": "lo", "out": "*", "source": "15.15.15.51", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "15.15.15.0/24", "destination": "0.0.0.0/0", "options": "tcp dpt:22 ctstate NEW,ESTABLISHED"}]}, {"chain": "FORWARD", "rules": []}, {"chain": "OUTPUT", "rules": [{"pkts": 66, "bytes": 6034, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "lo", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 889, "bytes": 158000, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "tcp spt:22 ctstate ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "lo", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "tcp spt:22 ctstate ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "lo", "source": "0.0.0.0/0", "destination": "0.0.0.0/0"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "all", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "ctstate ESTABLISHED"}, {"pkts": 0, "bytes": 0, "target": "ACCEPT", "prot": "tcp", "opt": null, "in": "*", "out": "*", "source": "0.0.0.0/0", "destination": "0.0.0.0/0", "options": "tcp spt:22 ctstate ESTABLISHED"}]}]
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"chain": "INPUT", "rules": [{"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"target": "DROP", "prot": "all", "opt": null, "source": "15.15.15.51", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}]}, {"chain": "FORWARD", "rules": []}]
|
||||
[{"chain": "INPUT", "rules": [{"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate RELATED,ESTABLISHED"}, {"target": "DROP", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate INVALID"}, {"target": "DROP", "prot": "all", "opt": null, "source": "15.15.15.51", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "15.15.15.0/24", "destination": "anywhere", "options": "tcp dpt:ssh ctstate NEW,ESTABLISHED"}]}, {"chain": "FORWARD", "rules": []}, {"chain": "OUTPUT", "rules": [{"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate ESTABLISHED"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "tcp spt:ssh ctstate ESTABLISHED"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate ESTABLISHED"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "tcp spt:ssh ctstate ESTABLISHED"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere"}, {"target": "ACCEPT", "prot": "all", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "ctstate ESTABLISHED"}, {"target": "ACCEPT", "prot": "tcp", "opt": null, "source": "anywhere", "destination": "anywhere", "options": "tcp spt:ssh ctstate ESTABLISHED"}]}]
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"chain": "PREROUTING", "rules": []}, {"chain": "INPUT", "rules": []}, {"chain": "FORWARD", "rules": []}, {"chain": "OUTPUT", "rules": []}]
|
||||
[{"chain": "PREROUTING", "rules": []}, {"chain": "INPUT", "rules": []}, {"chain": "FORWARD", "rules": []}, {"chain": "OUTPUT", "rules": []}, {"chain": "POSTROUTING", "rules": []}]
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"chain": "PREROUTING", "rules": []}, {"chain": "INPUT", "rules": []}, {"chain": "OUTPUT", "rules": []}]
|
||||
[{"chain": "PREROUTING", "rules": []}, {"chain": "INPUT", "rules": []}, {"chain": "OUTPUT", "rules": []}, {"chain": "POSTROUTING", "rules": []}]
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"chain": "PREROUTING", "rules": []}]
|
||||
[{"chain": "PREROUTING", "rules": []}, {"chain": "OUTPUT", "rules": []}]
|
||||
|
||||
1
tests/fixtures/ubuntu-18.04/sysctl-a.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/sysctl-a.json
vendored
Normal file
File diff suppressed because one or more lines are too long
878
tests/fixtures/ubuntu-18.04/sysctl-a.out
vendored
Normal file
878
tests/fixtures/ubuntu-18.04/sysctl-a.out
vendored
Normal file
@@ -0,0 +1,878 @@
|
||||
abi.vsyscall32 = 1
|
||||
debug.exception-trace = 1
|
||||
debug.kprobes-optimization = 1
|
||||
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: sr1 sr0
|
||||
dev.cdrom.info = drive speed: 1 1
|
||||
dev.cdrom.info = drive # of slots: 1 1
|
||||
dev.cdrom.info = Can close tray: 1 1
|
||||
dev.cdrom.info = Can open tray: 1 1
|
||||
dev.cdrom.info = Can lock tray: 1 1
|
||||
dev.cdrom.info = Can change speed: 1 1
|
||||
dev.cdrom.info = Can select disk: 0 0
|
||||
dev.cdrom.info = Can read multisession: 1 1
|
||||
dev.cdrom.info = Can read MCN: 1 1
|
||||
dev.cdrom.info = Reports media changed: 1 1
|
||||
dev.cdrom.info = Can play audio: 1 1
|
||||
dev.cdrom.info = Can write CD-R: 1 1
|
||||
dev.cdrom.info = Can write CD-RW: 1 1
|
||||
dev.cdrom.info = Can read DVD: 1 1
|
||||
dev.cdrom.info = Can write DVD-R: 1 1
|
||||
dev.cdrom.info = Can write DVD-RAM: 1 1
|
||||
dev.cdrom.info = Can read MRW: 1 1
|
||||
dev.cdrom.info = Can write MRW: 1 1
|
||||
dev.cdrom.info = Can write RAM: 1 1
|
||||
dev.cdrom.info =
|
||||
dev.cdrom.info =
|
||||
dev.cdrom.lock = 0
|
||||
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.raid.speed_limit_max = 200000
|
||||
dev.raid.speed_limit_min = 1000
|
||||
dev.scsi.logging_level = 0
|
||||
dev.tty.ldisc_autoload = 1
|
||||
fs.aio-max-nr = 65536
|
||||
fs.aio-nr = 0
|
||||
fs.binfmt_misc.status = enabled
|
||||
fs.dentry-state = 46910 16600 45 0 0 0
|
||||
fs.dir-notify-enable = 1
|
||||
fs.epoll.max_user_watches = 400302
|
||||
fs.file-max = 194386
|
||||
fs.file-nr = 1024 0 194386
|
||||
fs.inode-nr = 51130 7369
|
||||
fs.inode-state = 51130 7369 0 0 0 0 0
|
||||
fs.inotify.max_queued_events = 16384
|
||||
fs.inotify.max_user_instances = 1024
|
||||
fs.inotify.max_user_watches = 8192
|
||||
fs.lease-break-time = 45
|
||||
fs.leases-enable = 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 = 78
|
||||
fs.quota.writes = 0
|
||||
fs.suid_dumpable = 2
|
||||
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_cow_prealloc_lifetime = 1800
|
||||
fs.xfs.speculative_prealloc_lifetime = 300
|
||||
fs.xfs.stats_clear = 0
|
||||
fs.xfs.xfssyncd_centisecs = 3000
|
||||
kernel.acct = 4 2 30
|
||||
kernel.acpi_video_flags = 0
|
||||
kernel.auto_msgmni = 0
|
||||
kernel.bootloader_type = 114
|
||||
kernel.bootloader_version = 2
|
||||
kernel.cap_last_cap = 37
|
||||
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P %E
|
||||
kernel.core_pipe_limit = 0
|
||||
kernel.core_uses_pid = 0
|
||||
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 = 0
|
||||
kernel.hostname = kbrazil-ubuntu
|
||||
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 = 1
|
||||
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 = 1
|
||||
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 = 32000
|
||||
kernel.ngroups_max = 65536
|
||||
kernel.nmi_watchdog = 0
|
||||
kernel.ns_last_pid = 23649
|
||||
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.osrelease = 4.15.0-101-generic
|
||||
kernel.ostype = Linux
|
||||
kernel.overflowgid = 65534
|
||||
kernel.overflowuid = 65534
|
||||
kernel.panic = 0
|
||||
kernel.panic_on_io_nmi = 0
|
||||
kernel.panic_on_oops = 0
|
||||
kernel.panic_on_rcu_stall = 0
|
||||
kernel.panic_on_unrecovered_nmi = 0
|
||||
kernel.panic_on_warn = 0
|
||||
kernel.perf_cpu_time_max_percent = 25
|
||||
kernel.perf_event_max_contexts_per_stack = 8
|
||||
kernel.perf_event_max_sample_rate = 100000
|
||||
kernel.perf_event_max_stack = 127
|
||||
kernel.perf_event_mlock_kb = 516
|
||||
kernel.perf_event_paranoid = 3
|
||||
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_devkmsg = ratelimit
|
||||
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 = cf190d28-d4c9-4d52-8f8a-ce556669abf5
|
||||
kernel.random.entropy_avail = 565
|
||||
kernel.random.poolsize = 4096
|
||||
kernel.random.read_wakeup_threshold = 64
|
||||
kernel.random.urandom_min_reseed_secs = 60
|
||||
kernel.random.uuid = 7100e887-f0ae-450e-b9c3-972bb4f7f30f
|
||||
kernel.random.write_wakeup_threshold = 896
|
||||
kernel.randomize_va_space = 2
|
||||
kernel.real-root-dev = 0
|
||||
kernel.sched_autogroup_enabled = 1
|
||||
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 = 750000
|
||||
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_time_avg_ms = 1000
|
||||
kernel.sched_tunable_scaling = 1
|
||||
kernel.sched_wakeup_granularity_ns = 1000000
|
||||
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
|
||||
kernel.seccomp.actions_logged = kill_process kill_thread trap errno trace log
|
||||
kernel.sem = 32000 1024000000 500 32000
|
||||
kernel.sem_next_id = -1
|
||||
kernel.sg-big-buff = 32768
|
||||
kernel.shm_next_id = -1
|
||||
kernel.shm_rmid_forced = 0
|
||||
kernel.shmall = 18446744073692774399
|
||||
kernel.shmmax = 18446744073692774399
|
||||
kernel.shmmni = 4096
|
||||
kernel.soft_watchdog = 1
|
||||
kernel.softlockup_all_cpu_backtrace = 0
|
||||
kernel.softlockup_panic = 0
|
||||
kernel.stack_tracer_enabled = 0
|
||||
kernel.sysctl_writes_strict = 1
|
||||
kernel.sysrq = 176
|
||||
kernel.tainted = 0
|
||||
kernel.threads-max = 15270
|
||||
kernel.timer_migration = 1
|
||||
kernel.traceoff_on_warning = 0
|
||||
kernel.tracepoint_printk = 0
|
||||
kernel.unknown_nmi_panic = 0
|
||||
kernel.unprivileged_bpf_disabled = 0
|
||||
kernel.unprivileged_userns_clone = 1
|
||||
kernel.version = #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020
|
||||
kernel.watchdog = 1
|
||||
kernel.watchdog_cpumask = 0-127
|
||||
kernel.watchdog_thresh = 10
|
||||
kernel.yama.ptrace_scope = 1
|
||||
net.core.bpf_jit_enable = 1
|
||||
net.core.busy_poll = 0
|
||||
net.core.busy_read = 0
|
||||
net.core.default_qdisc = fq_codel
|
||||
net.core.dev_weight = 64
|
||||
net.core.dev_weight_rx_bias = 1
|
||||
net.core.dev_weight_tx_bias = 1
|
||||
net.core.flow_limit_cpu_bitmap = 00000000,00000000,00000000,00000000
|
||||
net.core.flow_limit_table_len = 4096
|
||||
net.core.max_skb_frags = 17
|
||||
net.core.message_burst = 10
|
||||
net.core.message_cost = 5
|
||||
net.core.netdev_budget = 300
|
||||
net.core.netdev_budget_usecs = 2000
|
||||
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.tstamp_allow_data = 1
|
||||
net.core.warnings = 0
|
||||
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 = 1
|
||||
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.drop_gratuitous_arp = 0
|
||||
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv4.conf.all.force_igmp_version = 0
|
||||
net.ipv4.conf.all.forwarding = 0
|
||||
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
|
||||
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
|
||||
net.ipv4.conf.all.ignore_routes_with_linkdown = 0
|
||||
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 = 1
|
||||
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.drop_gratuitous_arp = 0
|
||||
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv4.conf.default.force_igmp_version = 0
|
||||
net.ipv4.conf.default.forwarding = 0
|
||||
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
|
||||
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
|
||||
net.ipv4.conf.default.ignore_routes_with_linkdown = 0
|
||||
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 = 0
|
||||
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.ens33.accept_local = 0
|
||||
net.ipv4.conf.ens33.accept_redirects = 1
|
||||
net.ipv4.conf.ens33.accept_source_route = 1
|
||||
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.drop_gratuitous_arp = 0
|
||||
net.ipv4.conf.ens33.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv4.conf.ens33.force_igmp_version = 0
|
||||
net.ipv4.conf.ens33.forwarding = 0
|
||||
net.ipv4.conf.ens33.igmpv2_unsolicited_report_interval = 10000
|
||||
net.ipv4.conf.ens33.igmpv3_unsolicited_report_interval = 1000
|
||||
net.ipv4.conf.ens33.ignore_routes_with_linkdown = 0
|
||||
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 = 0
|
||||
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.drop_gratuitous_arp = 0
|
||||
net.ipv4.conf.lo.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv4.conf.lo.force_igmp_version = 0
|
||||
net.ipv4.conf.lo.forwarding = 0
|
||||
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
|
||||
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
|
||||
net.ipv4.conf.lo.ignore_routes_with_linkdown = 0
|
||||
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.fib_multipath_use_neigh = 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_link_local_mcast_reports = 1
|
||||
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 = 0
|
||||
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.ip_unprivileged_port_start = 1024
|
||||
net.ipv4.ipfrag_high_thresh = 262144
|
||||
net.ipv4.ipfrag_low_thresh = 196608
|
||||
net.ipv4.ipfrag_max_dist = 64
|
||||
net.ipv4.ipfrag_secret_interval = 0
|
||||
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_resolicit = 0
|
||||
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 = 101
|
||||
net.ipv4.neigh.default.unres_qlen_bytes = 212992
|
||||
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_resolicit = 0
|
||||
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 = 101
|
||||
net.ipv4.neigh.ens33.unres_qlen_bytes = 212992
|
||||
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_resolicit = 0
|
||||
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 = 101
|
||||
net.ipv4.neigh.lo.unres_qlen_bytes = 212992
|
||||
net.ipv4.ping_group_range = 1 0
|
||||
net.ipv4.route.error_burst = 1250
|
||||
net.ipv4.route.error_cost = 250
|
||||
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 = 5
|
||||
net.ipv4.route.redirect_number = 9
|
||||
net.ipv4.route.redirect_silence = 5120
|
||||
net.ipv4.tcp_abort_on_overflow = 0
|
||||
net.ipv4.tcp_adv_win_scale = 1
|
||||
net.ipv4.tcp_allowed_congestion_control = reno cubic
|
||||
net.ipv4.tcp_app_win = 31
|
||||
net.ipv4.tcp_autocorking = 1
|
||||
net.ipv4.tcp_available_congestion_control = reno cubic
|
||||
net.ipv4.tcp_available_ulp =
|
||||
net.ipv4.tcp_base_mss = 1024
|
||||
net.ipv4.tcp_challenge_ack_limit = 1000
|
||||
net.ipv4.tcp_congestion_control = cubic
|
||||
net.ipv4.tcp_dsack = 1
|
||||
net.ipv4.tcp_early_demux = 1
|
||||
net.ipv4.tcp_early_retrans = 3
|
||||
net.ipv4.tcp_ecn = 2
|
||||
net.ipv4.tcp_ecn_fallback = 1
|
||||
net.ipv4.tcp_fack = 0
|
||||
net.ipv4.tcp_fastopen = 1
|
||||
net.ipv4.tcp_fastopen_blackhole_timeout_sec = 3600
|
||||
net.ipv4.tcp_fin_timeout = 60
|
||||
net.ipv4.tcp_frto = 2
|
||||
net.ipv4.tcp_fwmark_accept = 0
|
||||
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_l3mdev_accept = 0
|
||||
net.ipv4.tcp_limit_output_bytes = 262144
|
||||
net.ipv4.tcp_low_latency = 0
|
||||
net.ipv4.tcp_max_orphans = 8192
|
||||
net.ipv4.tcp_max_reordering = 300
|
||||
net.ipv4.tcp_max_syn_backlog = 128
|
||||
net.ipv4.tcp_max_tw_buckets = 8192
|
||||
net.ipv4.tcp_mem = 22113 29485 44226
|
||||
net.ipv4.tcp_min_rtt_wlen = 300
|
||||
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 = 4294967295
|
||||
net.ipv4.tcp_orphan_retries = 0
|
||||
net.ipv4.tcp_pacing_ca_ratio = 120
|
||||
net.ipv4.tcp_pacing_ss_ratio = 200
|
||||
net.ipv4.tcp_probe_interval = 600
|
||||
net.ipv4.tcp_probe_threshold = 8
|
||||
net.ipv4.tcp_recovery = 1
|
||||
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 131072 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_linear_timeouts = 0
|
||||
net.ipv4.tcp_timestamps = 1
|
||||
net.ipv4.tcp_tso_win_divisor = 3
|
||||
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_early_demux = 1
|
||||
net.ipv4.udp_l3mdev_accept = 0
|
||||
net.ipv4.udp_mem = 44226 58970 88452
|
||||
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.auto_flowlabels = 1
|
||||
net.ipv6.bindv6only = 0
|
||||
net.ipv6.calipso_cache_bucket_size = 10
|
||||
net.ipv6.calipso_cache_enable = 1
|
||||
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_from_local = 0
|
||||
net.ipv6.conf.all.accept_ra_min_hop_limit = 1
|
||||
net.ipv6.conf.all.accept_ra_mtu = 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_rt_info_min_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.addr_gen_mode = 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.disable_policy = 0
|
||||
net.ipv6.conf.all.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv6.conf.all.drop_unsolicited_na = 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.ignore_routes_with_linkdown = 0
|
||||
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.ndisc_tclass = 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_solicitation_max_interval = 3600
|
||||
net.ipv6.conf.all.router_solicitations = -1
|
||||
net.ipv6.conf.all.seg6_enabled = 0
|
||||
net.ipv6.conf.all.seg6_require_hmac = 0
|
||||
net.ipv6.conf.all.suppress_frag_ndisc = 1
|
||||
net.ipv6.conf.all.temp_prefered_lft = 86400
|
||||
net.ipv6.conf.all.temp_valid_lft = 604800
|
||||
net.ipv6.conf.all.use_oif_addrs_only = 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_from_local = 0
|
||||
net.ipv6.conf.default.accept_ra_min_hop_limit = 1
|
||||
net.ipv6.conf.default.accept_ra_mtu = 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_rt_info_min_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.addr_gen_mode = 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.disable_policy = 0
|
||||
net.ipv6.conf.default.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv6.conf.default.drop_unsolicited_na = 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.ignore_routes_with_linkdown = 0
|
||||
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.ndisc_tclass = 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_solicitation_max_interval = 3600
|
||||
net.ipv6.conf.default.router_solicitations = -1
|
||||
net.ipv6.conf.default.seg6_enabled = 0
|
||||
net.ipv6.conf.default.seg6_require_hmac = 0
|
||||
net.ipv6.conf.default.suppress_frag_ndisc = 1
|
||||
net.ipv6.conf.default.temp_prefered_lft = 86400
|
||||
net.ipv6.conf.default.temp_valid_lft = 604800
|
||||
net.ipv6.conf.default.use_oif_addrs_only = 0
|
||||
net.ipv6.conf.default.use_tempaddr = 0
|
||||
net.ipv6.conf.ens33.accept_dad = 1
|
||||
net.ipv6.conf.ens33.accept_ra = 0
|
||||
net.ipv6.conf.ens33.accept_ra_defrtr = 1
|
||||
net.ipv6.conf.ens33.accept_ra_from_local = 0
|
||||
net.ipv6.conf.ens33.accept_ra_min_hop_limit = 1
|
||||
net.ipv6.conf.ens33.accept_ra_mtu = 1
|
||||
net.ipv6.conf.ens33.accept_ra_pinfo = 1
|
||||
net.ipv6.conf.ens33.accept_ra_rt_info_max_plen = 0
|
||||
net.ipv6.conf.ens33.accept_ra_rt_info_min_plen = 0
|
||||
net.ipv6.conf.ens33.accept_ra_rtr_pref = 1
|
||||
net.ipv6.conf.ens33.accept_redirects = 1
|
||||
net.ipv6.conf.ens33.accept_source_route = 0
|
||||
net.ipv6.conf.ens33.addr_gen_mode = 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.disable_policy = 0
|
||||
net.ipv6.conf.ens33.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv6.conf.ens33.drop_unsolicited_na = 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.ignore_routes_with_linkdown = 0
|
||||
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.ndisc_tclass = 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_solicitation_max_interval = 3600
|
||||
net.ipv6.conf.ens33.router_solicitations = -1
|
||||
net.ipv6.conf.ens33.seg6_enabled = 0
|
||||
net.ipv6.conf.ens33.seg6_require_hmac = 0
|
||||
net.ipv6.conf.ens33.suppress_frag_ndisc = 1
|
||||
net.ipv6.conf.ens33.temp_prefered_lft = 86400
|
||||
net.ipv6.conf.ens33.temp_valid_lft = 604800
|
||||
net.ipv6.conf.ens33.use_oif_addrs_only = 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_from_local = 0
|
||||
net.ipv6.conf.lo.accept_ra_min_hop_limit = 1
|
||||
net.ipv6.conf.lo.accept_ra_mtu = 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_rt_info_min_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.addr_gen_mode = 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.disable_policy = 0
|
||||
net.ipv6.conf.lo.drop_unicast_in_l2_multicast = 0
|
||||
net.ipv6.conf.lo.drop_unsolicited_na = 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.ignore_routes_with_linkdown = 0
|
||||
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.ndisc_tclass = 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_solicitation_max_interval = 3600
|
||||
net.ipv6.conf.lo.router_solicitations = -1
|
||||
net.ipv6.conf.lo.seg6_enabled = 0
|
||||
net.ipv6.conf.lo.seg6_require_hmac = 0
|
||||
net.ipv6.conf.lo.suppress_frag_ndisc = 1
|
||||
net.ipv6.conf.lo.temp_prefered_lft = 86400
|
||||
net.ipv6.conf.lo.temp_valid_lft = 604800
|
||||
net.ipv6.conf.lo.use_oif_addrs_only = 0
|
||||
net.ipv6.conf.lo.use_tempaddr = -1
|
||||
net.ipv6.flowlabel_consistency = 1
|
||||
net.ipv6.flowlabel_reflect = 0
|
||||
net.ipv6.flowlabel_state_ranges = 0
|
||||
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 = 262144
|
||||
net.ipv6.ip6frag_low_thresh = 196608
|
||||
net.ipv6.ip6frag_secret_interval = 0
|
||||
net.ipv6.ip6frag_time = 60
|
||||
net.ipv6.ip_nonlocal_bind = 0
|
||||
net.ipv6.max_dst_opts_length = 2147483647
|
||||
net.ipv6.max_dst_opts_number = 8
|
||||
net.ipv6.max_hbh_length = 2147483647
|
||||
net.ipv6.max_hbh_opts_number = 8
|
||||
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_resolicit = 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 = 101
|
||||
net.ipv6.neigh.default.unres_qlen_bytes = 212992
|
||||
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_resolicit = 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 = 101
|
||||
net.ipv6.neigh.ens33.unres_qlen_bytes = 212992
|
||||
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_resolicit = 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 = 101
|
||||
net.ipv6.neigh.lo.unres_qlen_bytes = 212992
|
||||
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 = 4096
|
||||
net.ipv6.route.min_adv_mss = 1220
|
||||
net.ipv6.route.mtu_expires = 600
|
||||
net.ipv6.xfrm6_gc_thresh = 32768
|
||||
net.iw_cm.default_backlog = 256
|
||||
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.unix.max_dgram_qlen = 512
|
||||
user.max_cgroup_namespaces = 7635
|
||||
user.max_inotify_instances = 1024
|
||||
user.max_inotify_watches = 8192
|
||||
user.max_ipc_namespaces = 7635
|
||||
user.max_mnt_namespaces = 7635
|
||||
user.max_net_namespaces = 7635
|
||||
user.max_pid_namespaces = 7635
|
||||
user.max_user_namespaces = 7635
|
||||
user.max_uts_namespaces = 7635
|
||||
vm.admin_reserve_kbytes = 8192
|
||||
vm.block_dump = 0
|
||||
vm.compact_unevictable_allowed = 1
|
||||
vm.dirty_background_bytes = 0
|
||||
vm.dirty_background_ratio = 10
|
||||
vm.dirty_bytes = 0
|
||||
vm.dirty_expire_centisecs = 3000
|
||||
vm.dirty_ratio = 20
|
||||
vm.dirty_writeback_centisecs = 500
|
||||
vm.dirtytime_expire_seconds = 43200
|
||||
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 1
|
||||
vm.max_map_count = 65530
|
||||
vm.memory_failure_early_kill = 0
|
||||
vm.memory_failure_recovery = 1
|
||||
vm.min_free_kbytes = 45056
|
||||
vm.min_slab_ratio = 5
|
||||
vm.min_unmapped_ratio = 1
|
||||
vm.mmap_min_addr = 65536
|
||||
vm.nr_hugepages = 0
|
||||
vm.nr_hugepages_mempolicy = 0
|
||||
vm.nr_overcommit_hugepages = 0
|
||||
vm.numa_stat = 1
|
||||
vm.numa_zonelist_order = Node
|
||||
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 = 60
|
||||
vm.user_reserve_kbytes = 60643
|
||||
vm.vfs_cache_pressure = 100
|
||||
vm.watermark_scale_factor = 10
|
||||
vm.zone_reclaim_mode = 0
|
||||
@@ -1,9 +1,11 @@
|
||||
import unittest
|
||||
import pygments
|
||||
from pygments.token import (Name, Number, String, Keyword)
|
||||
import jc.cli
|
||||
|
||||
|
||||
class MyTests(unittest.TestCase):
|
||||
def test_cli(self):
|
||||
def test_cli_generate_magic_command(self):
|
||||
commands = {
|
||||
'jc -p systemctl list-sockets': 'systemctl list-sockets | jc --systemctl-ls -p',
|
||||
'jc -p systemctl list-unit-files': 'systemctl list-unit-files | jc --systemctl-luf -p',
|
||||
@@ -22,3 +24,171 @@ class MyTests(unittest.TestCase):
|
||||
|
||||
for command, expected_command in commands.items():
|
||||
self.assertEqual(jc.cli.generate_magic_command(command.split(' '))[1], expected_command)
|
||||
|
||||
def test_cli_set_env_colors(self):
|
||||
if pygments.__version__.startswith('2.3.'):
|
||||
env = {
|
||||
'': {
|
||||
Name.Tag: 'bold #ansidarkblue',
|
||||
Keyword: '#ansidarkgray',
|
||||
Number: '#ansipurple',
|
||||
String: '#ansidarkgreen'
|
||||
},
|
||||
' ': {
|
||||
Name.Tag: 'bold #ansidarkblue',
|
||||
Keyword: '#ansidarkgray',
|
||||
Number: '#ansipurple',
|
||||
String: '#ansidarkgreen'
|
||||
},
|
||||
'default,default,default,default': {
|
||||
Name.Tag: 'bold #ansidarkblue',
|
||||
Keyword: '#ansidarkgray',
|
||||
Number: '#ansipurple',
|
||||
String: '#ansidarkgreen'
|
||||
},
|
||||
'red,red,red,red': {
|
||||
Name.Tag: 'bold #ansidarkred',
|
||||
Keyword: '#ansidarkred',
|
||||
Number: '#ansidarkred',
|
||||
String: '#ansidarkred'
|
||||
},
|
||||
'red,red,yada,red': {
|
||||
Name.Tag: 'bold #ansidarkblue',
|
||||
Keyword: '#ansidarkgray',
|
||||
Number: '#ansipurple',
|
||||
String: '#ansidarkgreen'
|
||||
},
|
||||
'red,red,red': {
|
||||
Name.Tag: 'bold #ansidarkblue',
|
||||
Keyword: '#ansidarkgray',
|
||||
Number: '#ansipurple',
|
||||
String: '#ansidarkgreen'
|
||||
},
|
||||
'red,red,red,red,red,red': {
|
||||
Name.Tag: 'bold #ansidarkblue',
|
||||
Keyword: '#ansidarkgray',
|
||||
Number: '#ansipurple',
|
||||
String: '#ansidarkgreen'
|
||||
}
|
||||
}
|
||||
else:
|
||||
env = {
|
||||
'': {
|
||||
Name.Tag: 'bold ansiblue',
|
||||
Keyword: 'ansibrightblack',
|
||||
Number: 'ansimagenta',
|
||||
String: 'ansigreen'
|
||||
},
|
||||
' ': {
|
||||
Name.Tag: 'bold ansiblue',
|
||||
Keyword: 'ansibrightblack',
|
||||
Number: 'ansimagenta',
|
||||
String: 'ansigreen'
|
||||
},
|
||||
'default,default,default,default': {
|
||||
Name.Tag: 'bold ansiblue',
|
||||
Keyword: 'ansibrightblack',
|
||||
Number: 'ansimagenta',
|
||||
String: 'ansigreen'
|
||||
},
|
||||
'red,red,red,red': {
|
||||
Name.Tag: 'bold ansired',
|
||||
Keyword: 'ansired',
|
||||
Number: 'ansired',
|
||||
String: 'ansired'
|
||||
},
|
||||
'red,red,yada,red': {
|
||||
Name.Tag: 'bold ansiblue',
|
||||
Keyword: 'ansibrightblack',
|
||||
Number: 'ansimagenta',
|
||||
String: 'ansigreen'
|
||||
},
|
||||
'red,red,red': {
|
||||
Name.Tag: 'bold ansiblue',
|
||||
Keyword: 'ansibrightblack',
|
||||
Number: 'ansimagenta',
|
||||
String: 'ansigreen'
|
||||
},
|
||||
'red,red,red,red,red,red': {
|
||||
Name.Tag: 'bold ansiblue',
|
||||
Keyword: 'ansibrightblack',
|
||||
Number: 'ansimagenta',
|
||||
String: 'ansigreen'
|
||||
}
|
||||
}
|
||||
|
||||
for jc_colors, expected_colors in env.items():
|
||||
self.assertEqual(jc.cli.set_env_colors(jc_colors), expected_colors)
|
||||
|
||||
def test_cli_json_out(self):
|
||||
test_input = [
|
||||
None,
|
||||
{},
|
||||
[],
|
||||
'',
|
||||
{"key1": "value1", "key2": 2, "key3": None, "key4": 3.14, "key5": True},
|
||||
]
|
||||
|
||||
if pygments.__version__.startswith('2.3.'):
|
||||
expected_output = [
|
||||
'\x1b[30;01mnull\x1b[39;00m',
|
||||
'{}',
|
||||
'[]',
|
||||
'\x1b[32m""\x1b[39m',
|
||||
'{\x1b[34;01m"key1"\x1b[39;00m: \x1b[32m"value1"\x1b[39m, \x1b[34;01m"key2"\x1b[39;00m: \x1b[35m2\x1b[39m, \x1b[34;01m"key3"\x1b[39;00m: \x1b[30;01mnull\x1b[39;00m, \x1b[34;01m"key4"\x1b[39;00m: \x1b[35m3.14\x1b[39m, \x1b[34;01m"key5"\x1b[39;00m: \x1b[30;01mtrue\x1b[39;00m}'
|
||||
]
|
||||
else:
|
||||
expected_output = [
|
||||
'\x1b[90mnull\x1b[39m',
|
||||
'{}',
|
||||
'[]',
|
||||
'\x1b[32m""\x1b[39m',
|
||||
'{\x1b[34;01m"key1"\x1b[39;00m: \x1b[32m"value1"\x1b[39m, \x1b[34;01m"key2"\x1b[39;00m: \x1b[35m2\x1b[39m, \x1b[34;01m"key3"\x1b[39;00m: \x1b[90mnull\x1b[39m, \x1b[34;01m"key4"\x1b[39;00m: \x1b[35m3.14\x1b[39m, \x1b[34;01m"key5"\x1b[39;00m: \x1b[90mtrue\x1b[39m}'
|
||||
]
|
||||
|
||||
for test_dict, expected_json in zip(test_input, expected_output):
|
||||
self.assertEqual(jc.cli.json_out(test_dict), expected_json)
|
||||
|
||||
def test_cli_json_out_mono(self):
|
||||
test_input = [
|
||||
None,
|
||||
{},
|
||||
[],
|
||||
'',
|
||||
{"key1": "value1", "key2": 2, "key3": None, "key4": 3.14, "key5": True},
|
||||
]
|
||||
|
||||
expected_output = [
|
||||
'null',
|
||||
'{}',
|
||||
'[]',
|
||||
'""',
|
||||
'{"key1": "value1", "key2": 2, "key3": null, "key4": 3.14, "key5": true}'
|
||||
]
|
||||
|
||||
for test_dict, expected_json in zip(test_input, expected_output):
|
||||
self.assertEqual(jc.cli.json_out(test_dict, mono=True), expected_json)
|
||||
|
||||
def test_cli_json_out_pretty(self):
|
||||
test_input = [
|
||||
{"key1": "value1", "key2": 2, "key3": None, "key4": 3.14, "key5": True},
|
||||
{"key1": [{"subkey1": "subvalue1"}, {"subkey2": [1, 2, 3]}], "key2": True}
|
||||
]
|
||||
|
||||
if pygments.__version__.startswith('2.3.'):
|
||||
expected_output = [
|
||||
'{\n \x1b[34;01m"key1"\x1b[39;00m: \x1b[32m"value1"\x1b[39m,\n \x1b[34;01m"key2"\x1b[39;00m: \x1b[35m2\x1b[39m,\n \x1b[34;01m"key3"\x1b[39;00m: \x1b[30;01mnull\x1b[39;00m,\n \x1b[34;01m"key4"\x1b[39;00m: \x1b[35m3.14\x1b[39m,\n \x1b[34;01m"key5"\x1b[39;00m: \x1b[30;01mtrue\x1b[39;00m\n}',
|
||||
'{\n \x1b[34;01m"key1"\x1b[39;00m: [\n {\n \x1b[34;01m"subkey1"\x1b[39;00m: \x1b[32m"subvalue1"\x1b[39m\n },\n {\n \x1b[34;01m"subkey2"\x1b[39;00m: [\n \x1b[35m1\x1b[39m,\n \x1b[35m2\x1b[39m,\n \x1b[35m3\x1b[39m\n ]\n }\n ],\n \x1b[34;01m"key2"\x1b[39;00m: \x1b[30;01mtrue\x1b[39;00m\n}'
|
||||
]
|
||||
else:
|
||||
expected_output = [
|
||||
'{\n \x1b[34;01m"key1"\x1b[39;00m: \x1b[32m"value1"\x1b[39m,\n \x1b[34;01m"key2"\x1b[39;00m: \x1b[35m2\x1b[39m,\n \x1b[34;01m"key3"\x1b[39;00m: \x1b[90mnull\x1b[39m,\n \x1b[34;01m"key4"\x1b[39;00m: \x1b[35m3.14\x1b[39m,\n \x1b[34;01m"key5"\x1b[39;00m: \x1b[90mtrue\x1b[39m\n}',
|
||||
'{\n \x1b[34;01m"key1"\x1b[39;00m: [\n {\n \x1b[34;01m"subkey1"\x1b[39;00m: \x1b[32m"subvalue1"\x1b[39m\n },\n {\n \x1b[34;01m"subkey2"\x1b[39;00m: [\n \x1b[35m1\x1b[39m,\n \x1b[35m2\x1b[39m,\n \x1b[35m3\x1b[39m\n ]\n }\n ],\n \x1b[34;01m"key2"\x1b[39;00m: \x1b[90mtrue\x1b[39m\n}'
|
||||
]
|
||||
|
||||
for test_dict, expected_json in zip(test_input, expected_output):
|
||||
self.assertEqual(jc.cli.json_out(test_dict, pretty=True), expected_json)
|
||||
|
||||
def test_cli_about_jc(self):
|
||||
self.assertEqual(jc.cli.about_jc()['name'], 'jc')
|
||||
self.assertGreaterEqual(jc.cli.about_jc()['parser_count'], 50)
|
||||
|
||||
70
tests/test_sysctl.py
Normal file
70
tests/test_sysctl.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import os
|
||||
import json
|
||||
import unittest
|
||||
import jc.parsers.sysctl
|
||||
|
||||
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class MyTests(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
# input
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sysctl-a.out'), 'r', encoding='utf-8') as f:
|
||||
self.centos_7_7_sysctl = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/sysctl-a.out'), 'r', encoding='utf-8') as f:
|
||||
self.ubuntu_18_4_sysctl = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sysctl-a.out'), 'r', encoding='utf-8') as f:
|
||||
self.osx_10_14_6_sysctl = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/sysctl-a.out'), 'r', encoding='utf-8') as f:
|
||||
self.freebsd12_sysctl = f.read()
|
||||
|
||||
# output
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sysctl-a.json'), 'r', encoding='utf-8') as f:
|
||||
self.centos_7_7_sysctl_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/sysctl-a.json'), 'r', encoding='utf-8') as f:
|
||||
self.ubuntu_18_4_sysctl_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sysctl-a.json'), 'r', encoding='utf-8') as f:
|
||||
self.osx_10_14_6_sysctl_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/sysctl-a.json'), 'r', encoding='utf-8') as f:
|
||||
self.freebsd12_sysctl_json = json.loads(f.read())
|
||||
|
||||
def test_sysctl_nodata(self):
|
||||
"""
|
||||
Test plain 'sysctl' with no data
|
||||
"""
|
||||
self.assertEqual(jc.parsers.sysctl.parse('', quiet=True), {})
|
||||
|
||||
def test_sysctl_centos_7_7(self):
|
||||
"""
|
||||
Test plain 'sysctl' on Centos 7.7
|
||||
"""
|
||||
self.assertEqual(jc.parsers.sysctl.parse(self.centos_7_7_sysctl, quiet=True), self.centos_7_7_sysctl_json)
|
||||
|
||||
def test_sysctl_ubuntu_18_4(self):
|
||||
"""
|
||||
Test plain 'sysctl' on Ubuntu 18.4
|
||||
"""
|
||||
self.assertEqual(jc.parsers.sysctl.parse(self.ubuntu_18_4_sysctl, quiet=True), self.ubuntu_18_4_sysctl_json)
|
||||
|
||||
def test_sysctl_osx_10_14_6(self):
|
||||
"""
|
||||
Test plain 'sysctl' on OSX 10.14.6
|
||||
"""
|
||||
self.assertEqual(jc.parsers.sysctl.parse(self.osx_10_14_6_sysctl, quiet=True), self.osx_10_14_6_sysctl_json)
|
||||
|
||||
def test_sysctl_freebsd12(self):
|
||||
"""
|
||||
Test plain 'sysctl' on FreeBSD12
|
||||
"""
|
||||
self.assertEqual(jc.parsers.sysctl.parse(self.freebsd12_sysctl, quiet=True), self.freebsd12_sysctl_json)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user