mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-17 00:07:37 +02:00
21
README.md
21
README.md
@ -79,7 +79,7 @@ See also:
|
|||||||
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
|
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
There are several ways to get `jc`. You can install via `pip`; other OS package repositories like `dnf`, `zypper`, `nix-env`, `guix`, `brew`, or `portsnap`; via DEB/RPM packages; or by downloading the correct binary for your architecture and running it anywhere on your filesystem.
|
There are several ways to get `jc`. You can install via `pip`; other OS package repositories like `dnf`, `zypper`, `pacman`, `nix-env`, `guix`, `brew`, or `portsnap`; via DEB/RPM packages; or by downloading the correct binary for your architecture and running it anywhere on your filesystem.
|
||||||
|
|
||||||
### Pip (macOS, linux, unix, Windows)
|
### Pip (macOS, linux, unix, Windows)
|
||||||
```bash
|
```bash
|
||||||
@ -90,8 +90,9 @@ pip3 install jc
|
|||||||
|
|
||||||
| OS | Command |
|
| OS | Command |
|
||||||
|-----------------------|-------------------------------------------------------------------------------|
|
|-----------------------|-------------------------------------------------------------------------------|
|
||||||
| Fedora linux | `dnf install jc` or `dnf --enablerepo=updates-testing install jc` |
|
| Fedora linux | `dnf install jc` |
|
||||||
| openSUSE linux | `zypper install jc` |
|
| openSUSE linux | `zypper install jc` |
|
||||||
|
| Arch linux | `pacman -S jc` |
|
||||||
| NixOS linux | `nix-env -iA nixpkgs.jc` |
|
| NixOS linux | `nix-env -iA nixpkgs.jc` |
|
||||||
| Guix System linux | `guix install jc` |
|
| Guix System linux | `guix install jc` |
|
||||||
| MacOS | `brew install jc` |
|
| MacOS | `brew install jc` |
|
||||||
@ -151,6 +152,7 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
- `--shadow` enables the `/etc/shadow` file parser
|
- `--shadow` enables the `/etc/shadow` file parser
|
||||||
- `--ss` enables the `ss` command parser
|
- `--ss` enables the `ss` command parser
|
||||||
- `--stat` enables the `stat` command parser
|
- `--stat` enables the `stat` command parser
|
||||||
|
- `--sysctl` enables the `sysctl -a` command parser
|
||||||
- `--systemctl` enables the `systemctl` command parser
|
- `--systemctl` enables the `systemctl` command parser
|
||||||
- `--systemctl-lj` enables the `systemctl list-jobs` command parser
|
- `--systemctl-lj` enables the `systemctl list-jobs` command parser
|
||||||
- `--systemctl-ls` enables the `systemctl list-sockets` command parser
|
- `--systemctl-ls` enables the `systemctl list-sockets` command parser
|
||||||
@ -2291,6 +2293,21 @@ stat /bin/* | jc --stat -p # or: jc -p stat /bin/*
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
### sysctl
|
||||||
|
```bash
|
||||||
|
sysctl -a | jc --sysctl -p # or: jc -p sysctl -a
|
||||||
|
```
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
```
|
||||||
### systemctl
|
### systemctl
|
||||||
```bash
|
```bash
|
||||||
systemctl -a | jc --systemctl -p # or: jc -p systemctl -a
|
systemctl -a | jc --systemctl -p # or: jc -p systemctl -a
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
jc changelog
|
jc changelog
|
||||||
|
|
||||||
|
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
|
20200625 v1.11.8
|
||||||
- Add verbose debug option using -dd argument
|
- Add verbose debug option using -dd argument
|
||||||
|
|
||||||
|
@ -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.shadow+ > ../docs/parsers/shadow.md
|
||||||
pydocmd simple jc.parsers.ss+ > ../docs/parsers/ss.md
|
pydocmd simple jc.parsers.ss+ > ../docs/parsers/ss.md
|
||||||
pydocmd simple jc.parsers.stat+ > ../docs/parsers/stat.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+ > ../docs/parsers/systemctl.md
|
||||||
pydocmd simple jc.parsers.systemctl_lj+ > ../docs/parsers/systemctl_lj.md
|
pydocmd simple jc.parsers.systemctl_lj+ > ../docs/parsers/systemctl_lj.md
|
||||||
pydocmd simple jc.parsers.systemctl_ls+ > ../docs/parsers/systemctl_ls.md
|
pydocmd simple jc.parsers.systemctl_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.
|
||||||
|
|
159
jc/cli.py
159
jc/cli.py
@ -11,18 +11,18 @@ import importlib
|
|||||||
import textwrap
|
import textwrap
|
||||||
import signal
|
import signal
|
||||||
import json
|
import json
|
||||||
|
import pygments
|
||||||
from pygments import highlight
|
from pygments import highlight
|
||||||
from pygments.style import Style
|
from pygments.style import Style
|
||||||
from pygments.token import (Name, Number, String, Keyword)
|
from pygments.token import (Name, Number, String, Keyword)
|
||||||
from pygments.lexers import JsonLexer
|
from pygments.lexers import JsonLexer
|
||||||
from pygments.formatters import Terminal256Formatter
|
from pygments.formatters import Terminal256Formatter
|
||||||
import jc.utils
|
|
||||||
import jc.appdirs as appdirs
|
import jc.appdirs as appdirs
|
||||||
|
|
||||||
|
|
||||||
class info():
|
class info():
|
||||||
version = '1.11.8'
|
version = '1.12.0'
|
||||||
description = 'jc cli output JSON conversion tool'
|
description = 'JSON conversion tool for CLI output'
|
||||||
author = 'Kelly Brazil'
|
author = 'Kelly Brazil'
|
||||||
author_email = 'kellyjonbrazil@gmail.com'
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
|
|
||||||
@ -70,6 +70,7 @@ parsers = [
|
|||||||
'shadow',
|
'shadow',
|
||||||
'ss',
|
'ss',
|
||||||
'stat',
|
'stat',
|
||||||
|
'sysctl',
|
||||||
'systemctl',
|
'systemctl',
|
||||||
'systemctl-lj',
|
'systemctl-lj',
|
||||||
'systemctl-ls',
|
'systemctl-ls',
|
||||||
@ -86,8 +87,8 @@ parsers = [
|
|||||||
# List of custom or override parsers.
|
# List of custom or override parsers.
|
||||||
# Allow any <user_data_dir>/jc/jcparsers/*.py
|
# Allow any <user_data_dir>/jc/jcparsers/*.py
|
||||||
local_parsers = []
|
local_parsers = []
|
||||||
data_dir = appdirs.user_data_dir("jc", "jc")
|
data_dir = appdirs.user_data_dir('jc', 'jc')
|
||||||
local_parsers_dir = os.path.join(data_dir, "jcparsers")
|
local_parsers_dir = os.path.join(data_dir, 'jcparsers')
|
||||||
if os.path.isdir(local_parsers_dir):
|
if os.path.isdir(local_parsers_dir):
|
||||||
sys.path.append(data_dir)
|
sys.path.append(data_dir)
|
||||||
for name in os.listdir(local_parsers_dir):
|
for name in os.listdir(local_parsers_dir):
|
||||||
@ -98,8 +99,52 @@ if os.path.isdir(local_parsers_dir):
|
|||||||
parsers.append(plugin_name)
|
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
|
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:
|
separated string values and should be in the format of:
|
||||||
|
|
||||||
@ -115,40 +160,36 @@ def set_env_colors():
|
|||||||
JC_COLORS=default,default,default,default
|
JC_COLORS=default,default,default,default
|
||||||
|
|
||||||
"""
|
"""
|
||||||
env_colors = os.getenv('JC_COLORS')
|
|
||||||
input_error = False
|
input_error = False
|
||||||
|
|
||||||
if env_colors:
|
if env_colors:
|
||||||
color_list = env_colors.split(',')
|
color_list = env_colors.split(',')
|
||||||
else:
|
else:
|
||||||
|
color_list = ['default', 'default', 'default', 'default']
|
||||||
|
|
||||||
|
if len(color_list) != 4:
|
||||||
input_error = True
|
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:
|
for color in color_list:
|
||||||
if color not in ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'gray', 'brightblack', 'brightred',
|
if color != 'default' and color not in PYGMENT_COLOR:
|
||||||
'brightgreen', 'brightyellow', 'brightblue', 'brightmagenta', 'brightcyan', 'white', 'default']:
|
|
||||||
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
|
|
||||||
input_error = True
|
input_error = True
|
||||||
|
|
||||||
# if there is an issue with the env variable, just set all colors to default and move on
|
# if there is an issue with the env variable, just set all colors to default and move on
|
||||||
if input_error:
|
if input_error:
|
||||||
|
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
|
||||||
color_list = ['default', 'default', 'default', 'default']
|
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
|
# Try the color set in the JC_COLORS env variable first. If it is set to default, then fall back to default colors
|
||||||
return {
|
return {
|
||||||
Name.Tag: f'bold ansi{color_list[0]}' if not color_list[0] == 'default' else 'bold ansiblue', # key names
|
Name.Tag: f'bold {PYGMENT_COLOR[color_list[0]]}' if not color_list[0] == 'default' else f"bold {PYGMENT_COLOR['blue']}", # key names
|
||||||
Keyword: f'ansi{color_list[1]}' if not color_list[1] == 'default' else 'ansibrightblack', # true, false, null
|
Keyword: PYGMENT_COLOR[color_list[1]] if not color_list[1] == 'default' else PYGMENT_COLOR['brightblack'], # true, false, null
|
||||||
Number: f'ansi{color_list[2]}' if not color_list[2] == 'default' else 'ansimagenta', # numbers
|
Number: PYGMENT_COLOR[color_list[2]] if not color_list[2] == 'default' else PYGMENT_COLOR['magenta'], # numbers
|
||||||
String: f'ansi{color_list[3]}' if not color_list[3] == 'default' else 'ansigreen' # strings
|
String: PYGMENT_COLOR[color_list[3]] if not color_list[3] == 'default' else PYGMENT_COLOR['green'] # strings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def piped_output():
|
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():
|
if sys.stdout.isatty():
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
@ -156,34 +197,34 @@ def piped_output():
|
|||||||
|
|
||||||
|
|
||||||
def ctrlc(signum, frame):
|
def ctrlc(signum, frame):
|
||||||
"""exit with error on SIGINT"""
|
"""Exit with error on SIGINT"""
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def parser_shortname(parser_argument):
|
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:]
|
return parser_argument[2:]
|
||||||
|
|
||||||
|
|
||||||
def parser_argument(parser):
|
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}'
|
return f'--{parser}'
|
||||||
|
|
||||||
|
|
||||||
def parser_mod_shortname(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('-', '_')
|
return parser.replace('--', '').replace('-', '_')
|
||||||
|
|
||||||
|
|
||||||
def parser_module(parser):
|
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)
|
shortname = parser_mod_shortname(parser)
|
||||||
path = ('jcparsers.' if shortname in local_parsers else 'jc.parsers.')
|
path = ('jcparsers.' if shortname in local_parsers else 'jc.parsers.')
|
||||||
return importlib.import_module(path + shortname)
|
return importlib.import_module(path + shortname)
|
||||||
|
|
||||||
|
|
||||||
def parsers_text(indent=0, pad=0):
|
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 = ''
|
ptext = ''
|
||||||
for parser in parsers:
|
for parser in parsers:
|
||||||
parser_arg = parser_argument(parser)
|
parser_arg = parser_argument(parser)
|
||||||
@ -201,7 +242,7 @@ def parsers_text(indent=0, pad=0):
|
|||||||
|
|
||||||
|
|
||||||
def about_jc():
|
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 = []
|
parser_list = []
|
||||||
|
|
||||||
for parser in parsers:
|
for parser in parsers:
|
||||||
@ -231,7 +272,7 @@ def about_jc():
|
|||||||
|
|
||||||
|
|
||||||
def helptext(message):
|
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)
|
parsers_string = parsers_text(indent=12, pad=17)
|
||||||
|
|
||||||
helptext_string = f'''
|
helptext_string = f'''
|
||||||
@ -260,30 +301,30 @@ def helptext(message):
|
|||||||
|
|
||||||
jc -p ls -al
|
jc -p ls -al
|
||||||
'''
|
'''
|
||||||
print(textwrap.dedent(helptext_string), file=sys.stderr)
|
return textwrap.dedent(helptext_string)
|
||||||
|
|
||||||
|
|
||||||
def json_out(data, pretty=False, mono=False, piped_out=False):
|
def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False):
|
||||||
|
"""Return a JSON formatted string. String may include color codes or be pretty printed."""
|
||||||
if not mono and not piped_out:
|
if not mono and not piped_out:
|
||||||
# set colors
|
# set colors
|
||||||
class JcStyle(Style):
|
class JcStyle(Style):
|
||||||
styles = set_env_colors()
|
styles = set_env_colors(env_colors)
|
||||||
|
|
||||||
if pretty:
|
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:
|
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:
|
else:
|
||||||
if pretty:
|
if pretty:
|
||||||
print(json.dumps(data, indent=2))
|
return json.dumps(data, indent=2)
|
||||||
else:
|
else:
|
||||||
print(json.dumps(data))
|
return json.dumps(data)
|
||||||
|
|
||||||
|
|
||||||
def generate_magic_command(args):
|
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.
|
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 = {}
|
magic_dict = {}
|
||||||
parser_info = about_jc()['parsers']
|
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:
|
for entry in parser_info:
|
||||||
# Update the dict with all of the magic commands for this parser, if they exist.
|
# 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', [])})
|
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]
|
one_word_command = args_given[0]
|
||||||
two_word_command = ' '.join(args_given[0:2])
|
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))
|
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
|
# construct a new command line using the standard syntax: COMMAND | jc --PARSER -OPTIONS
|
||||||
@ -338,6 +379,7 @@ def generate_magic_command(args):
|
|||||||
|
|
||||||
|
|
||||||
def magic():
|
def magic():
|
||||||
|
"""Runs the command generated by generate_magic_command() to support magic syntax"""
|
||||||
valid_command, run_command = generate_magic_command(sys.argv)
|
valid_command, run_command = generate_magic_command(sys.argv)
|
||||||
if valid_command:
|
if valid_command:
|
||||||
os.system(run_command)
|
os.system(run_command)
|
||||||
@ -345,7 +387,7 @@ def magic():
|
|||||||
elif run_command is None:
|
elif run_command is None:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
helptext(f'parser not found for "{run_command}"')
|
print(helptext(f'parser not found for "{run_command}"'), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
@ -359,6 +401,8 @@ def main():
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
jc_colors = os.getenv('JC_COLORS')
|
||||||
|
|
||||||
# try magic syntax first: e.g. jc -p ls -al
|
# try magic syntax first: e.g. jc -p ls -al
|
||||||
magic()
|
magic()
|
||||||
|
|
||||||
@ -376,33 +420,22 @@ def main():
|
|||||||
quiet = 'q' in options
|
quiet = 'q' in options
|
||||||
raw = 'r' in options
|
raw = 'r' in options
|
||||||
|
|
||||||
|
if verbose_debug:
|
||||||
|
import jc.tracebackplus
|
||||||
|
jc.tracebackplus.enable(context=11)
|
||||||
|
|
||||||
if 'a' in options:
|
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)
|
sys.exit(0)
|
||||||
|
|
||||||
if sys.stdin.isatty():
|
if sys.stdin.isatty():
|
||||||
helptext('missing piped data')
|
print(helptext('missing piped data'), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
data = sys.stdin.read()
|
data = sys.stdin.read()
|
||||||
|
|
||||||
found = False
|
found = False
|
||||||
|
|
||||||
if debug:
|
|
||||||
if verbose_debug:
|
|
||||||
import cgitb
|
|
||||||
cgitb.enable(display=1, logdir=None, context=5, format="text")
|
|
||||||
|
|
||||||
for arg in sys.argv:
|
|
||||||
parser_name = parser_shortname(arg)
|
|
||||||
|
|
||||||
if parser_name in parsers:
|
|
||||||
# load parser module just in time so we don't need to load all modules
|
|
||||||
parser = parser_module(arg)
|
|
||||||
result = parser.parse(data, raw=raw, quiet=quiet)
|
|
||||||
found = True
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
for arg in sys.argv:
|
for arg in sys.argv:
|
||||||
parser_name = parser_shortname(arg)
|
parser_name = parser_shortname(arg)
|
||||||
|
|
||||||
@ -413,16 +446,22 @@ def main():
|
|||||||
result = parser.parse(data, raw=raw, quiet=quiet)
|
result = parser.parse(data, raw=raw, quiet=quiet)
|
||||||
found = True
|
found = True
|
||||||
break
|
break
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
|
if debug:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
import jc.utils
|
||||||
jc.utils.error_message(
|
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)
|
sys.exit(1)
|
||||||
|
|
||||||
if not found:
|
if not found:
|
||||||
helptext('missing or incorrect arguments')
|
print(helptext('missing or incorrect arguments'), file=sys.stderr)
|
||||||
sys.exit(1)
|
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__':
|
if __name__ == '__main__':
|
||||||
|
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:
|
if not platform_found:
|
||||||
mod = mod_name.split('.')[-1]
|
mod = mod_name.split('.')[-1]
|
||||||
compat_list = ', '.join(compatible)
|
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):
|
def has_data(data):
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
ruamel.yaml>=0.15.0
|
ruamel.yaml>=0.15.0
|
||||||
xmltodict>=0.12.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(
|
setuptools.setup(
|
||||||
name='jc',
|
name='jc',
|
||||||
version='1.11.8',
|
version='1.12.0',
|
||||||
author='Kelly Brazil',
|
author='Kelly Brazil',
|
||||||
author_email='kellyjonbrazil@gmail.com',
|
author_email='kellyjonbrazil@gmail.com',
|
||||||
description='Converts the output of popular command-line tools and file-types to JSON.',
|
description='Converts the output of popular command-line tools and file-types to JSON.',
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'ruamel.yaml>=0.15.0',
|
'ruamel.yaml>=0.15.0',
|
||||||
'xmltodict>=0.12.0',
|
'xmltodict>=0.12.0',
|
||||||
'Pygments>=2.4.2'
|
'Pygments>=2.3.0'
|
||||||
],
|
],
|
||||||
license='MIT',
|
license='MIT',
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
|
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
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 unittest
|
||||||
|
import pygments
|
||||||
|
from pygments.token import (Name, Number, String, Keyword)
|
||||||
import jc.cli
|
import jc.cli
|
||||||
|
|
||||||
|
|
||||||
class MyTests(unittest.TestCase):
|
class MyTests(unittest.TestCase):
|
||||||
def test_cli(self):
|
def test_cli_generate_magic_command(self):
|
||||||
commands = {
|
commands = {
|
||||||
'jc -p systemctl list-sockets': 'systemctl list-sockets | jc --systemctl-ls -p',
|
'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',
|
'jc -p systemctl list-unit-files': 'systemctl list-unit-files | jc --systemctl-luf -p',
|
||||||
@ -22,3 +24,156 @@ class MyTests(unittest.TestCase):
|
|||||||
|
|
||||||
for command, expected_command in commands.items():
|
for command, expected_command in commands.items():
|
||||||
self.assertEqual(jc.cli.generate_magic_command(command.split(' '))[1], expected_command)
|
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},
|
||||||
|
]
|
||||||
|
|
||||||
|
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}
|
||||||
|
]
|
||||||
|
|
||||||
|
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