Closed concpt closed 2 months ago
Hi, FreeBSD 14.1 is not yet supported by this role but is expected to be supported in the future.
Please use the github issue template to report this issue.
Hmm, I get the same error with FreeBSD 14.0
Thanks for reproducing it on FreeBSD 14.0 as well. Please answer all the questions from the issue template, the easiest way is to use the template. https://github.com/nusenu/ansible-relayor/blob/master/.github/ISSUE_TEMPLATE/Bug_report.md
ansible version - 2.14.3 ansible-relayor version - v24.0.0
Control Machine: Distro: Debian 12 Kernel: 6.1.0-21
Target Machine: FreeBSD 14.0-RELEASE amd64
Playbook Information:
- hosts: tworelays
vars:
tor_ContactInfo: concept@email.com
tor_signingkeylifetime_days: 90
tor_nickname: concept
tor_gen_ciiss_proof_files: True
tor_ciiss_proof_folder: ~/.ansible
roles:
- nusenu.relayor
Debug Info:
TASK [nusenu.relayor : Check for min. ansible version requirement] **********************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:3
ok: [frail-context -> 127.0.0.1] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [nusenu.relayor : Check for local requirements] ************************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:14
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: concept
<127.0.0.1> EXEC /bin/sh -c 'echo ~concept && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/concept/.ansible/tmp `"&& mkdir "` echo /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971 `" && echo ansible-tmp-1723603666.396677-926855-71131415597971="` echo /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971 `" ) && sleep 0'
Using module file /usr/lib/python3/dist-packages/ansible/modules/command.py
<127.0.0.1> PUT /home/concept/.ansible/tmp/ansible-local-9268364wde5m9q/tmpyw4c5r9i TO /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971/AnsiballZ_command.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971/ /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971/AnsiballZ_command.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3 /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971/AnsiballZ_command.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/concept/.ansible/tmp/ansible-tmp-1723603666.396677-926855-71131415597971/ > /dev/null 2>&1 && sleep 0'
ok: [frail-context -> 127.0.0.1] => {
"changed": false,
"cmd": "command -V /bin/bash && command -V \"tor\" && command -V openssl && command -V sort && command -V uniq && command -V wc && command -V cut && command -V xargs && command -V sed\n",
"delta": "0:00:00.005533",
"end": "2024-08-14 02:47:46.746398",
"invocation": {
"module_args": {
"_raw_params": "command -V /bin/bash && command -V \"tor\" && command -V openssl && command -V sort && command -V uniq && command -V wc && command -V cut && command -V xargs && command -V sed\n",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true
}
},
"msg": "",
"rc": 0,
"start": "2024-08-14 02:47:46.740865",
"stderr": "",
"stderr_lines": [],
"stdout": "/bin/bash is /bin/bash\ntor is /usr/bin/tor\nopenssl is /usr/bin/openssl\nsort is /usr/bin/sort\nuniq is /usr/bin/uniq\nwc is /usr/bin/wc\ncut is /usr/bin/cut\nxargs is /usr/bin/xargs\nsed is /usr/bin/sed",
"stdout_lines": [
"/bin/bash is /bin/bash",
"tor is /usr/bin/tor",
"openssl is /usr/bin/openssl",
"sort is /usr/bin/sort",
"uniq is /usr/bin/uniq",
"wc is /usr/bin/wc",
"cut is /usr/bin/cut",
"xargs is /usr/bin/xargs",
"sed is /usr/bin/sed"
]
}
TASK [nusenu.relayor : Ensure tor_ContactInfo is set] ***********************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:25
ok: [frail-context] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [nusenu.relayor : Ensure we do not create more than 8 instances per IP] ************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:33
ok: [frail-context] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [nusenu.relayor : Abort if we use a centralized/common DNS resolver (Google, Quad9, CloudFlare, OpenDNS, Level3). See https://torproject.org/relay-guide#DNSonExitRelays (Exits only)] *********
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:42
skipping: [frail-context] => {
"changed": false,
"skip_reason": "Conditional result was False"
}
TASK [nusenu.relayor : Set OS specific variables] ***************************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:53
ok: [frail-context] => {
"ansible_facts": {
"tor_ConfDir": "/usr/local/etc/tor/enabled",
"tor_DataDir": "/var/db/tor-instances",
"tor_htpasswd_dependency": "py39-passlib",
"tor_metricsport_htpasswd_file_owner": "www"
},
"ansible_included_var_files": [
"/home/concept/.ansible/roles/nusenu.relayor/vars/os_FreeBSD.yml"
],
"changed": false
}
TASK [nusenu.relayor : Use a single private IPv4 address if we have no public IPv4 address] *********************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/ip-list.yml:3
skipping: [frail-context] => {
"changed": false,
"skip_reason": "Conditional result was False"
}
TASK [nusenu.relayor : setup IP list (1/2)] *********************************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/ip-list.yml:7
ok: [frail-context] => (item=['5.161.183.108', None]) => {
"ansible_facts": {
"ips": {
"ipv4": "5.161.183.108",
"ipv6": ""
}
},
"ansible_loop_var": "item",
"changed": false,
"item": [
"5.161.183.108",
null
]
}
TASK [nusenu.relayor : setup IP list (2/2)] *********************************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/ip-list.yml:17
ok: [frail-context] => {
"ansible_facts": {
"tor_ips": [
{
"ipv4": "5.161.183.108",
"ipv6": ""
}
]
},
"changed": false
}
TASK [nusenu.relayor : Preparation for Debian-based systems] ****************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:62
skipping: [frail-context] => {
"changed": false,
"skip_reason": "Conditional result was False"
}
TASK [nusenu.relayor : Preparation for RPM based systems] *******************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:69
skipping: [frail-context] => {
"changed": false,
"skip_reason": "Conditional result was False"
}
TASK [nusenu.relayor : Preparation for OpenBSD systems] *********************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:77
skipping: [frail-context] => {
"changed": false,
"skip_reason": "Conditional result was False"
}
TASK [nusenu.relayor : Preparation for FreeBSD based systems] ***************************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/main.yml:83
redirecting (type: modules) ansible.builtin.sysctl to ansible.posix.sysctl
redirecting (type: modules) ansible.builtin.sysctl to ansible.posix.sysctl
redirecting (type: modules) ansible.builtin.sysctl to ansible.posix.sysctl
included: /home/concept/.ansible/roles/nusenu.relayor/tasks/freebsd_prepare.yml for frail-context
TASK [nusenu.relayor : Choose tor alpha version package (FreeBSD)] **********************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/freebsd_prepare.yml:3
skipping: [frail-context] => {
"changed": false,
"skip_reason": "Conditional result was False"
}
TASK [nusenu.relayor : Ensure sequential IP IDs are avoided (FreeBSD)] ******************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/freebsd_prepare.yml:8
redirecting (type: modules) ansible.builtin.sysctl to ansible.posix.sysctl
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<frail-context> (0, b'/home/concept\n', b'')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/concept/.ansible/tmp `"&& mkdir "` echo /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799 `" && echo ansible-tmp-1723603667.718272-926906-19814981492799="` echo /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799 `" ) && sleep 0'"'"''
<frail-context> (0, b'ansible-tmp-1723603667.718272-926906-19814981492799=/home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799\n', b'')
redirecting (type: modules) ansible.builtin.sysctl to ansible.posix.sysctl
Using module file /usr/lib/python3/dist-packages/ansible_collections/ansible/posix/plugins/modules/sysctl.py
<frail-context> PUT /home/concept/.ansible/tmp/ansible-local-9268364wde5m9q/tmpkrvykazf TO /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799/AnsiballZ_sysctl.py
<frail-context> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' '[frail-context]'
<frail-context> (0, b'sftp> put /home/concept/.ansible/tmp/ansible-local-9268364wde5m9q/tmpkrvykazf /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799/AnsiballZ_sysctl.py\n', b'')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'chmod u+x /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799/ /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799/AnsiballZ_sysctl.py && sleep 0'"'"''
<frail-context> (0, b'', b'')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' -tt frail-context '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=yajpzexnnxfulwxeymvjcvmtddtocmcp] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-yajpzexnnxfulwxeymvjcvmtddtocmcp ; /usr/local/bin/python3.9 /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799/AnsiballZ_sysctl.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<frail-context> (0, b'\r\n{"changed": false, "invocation": {"module_args": {"name": "net.inet.ip.random_id", "value": "1", "reload": false, "sysctl_set": true, "state": "present", "ignoreerrors": false, "sysctl_file": "/etc/sysctl.conf"}}}\r\n', b'Shared connection to frail-context closed.\r\n')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'rm -f -r /home/concept/.ansible/tmp/ansible-tmp-1723603667.718272-926906-19814981492799/ > /dev/null 2>&1 && sleep 0'"'"''
<frail-context> (0, b'', b'')
ok: [frail-context] => {
"changed": false,
"invocation": {
"module_args": {
"ignoreerrors": false,
"name": "net.inet.ip.random_id",
"reload": false,
"state": "present",
"sysctl_file": "/etc/sysctl.conf",
"sysctl_set": true,
"value": "1"
}
}
}
TASK [nusenu.relayor : Gather current kern.ipc.somaxconn setting (FreeBSD)] *************************************************************************************************************************
task path: /home/concept/.ansible/roles/nusenu.relayor/tasks/freebsd_prepare.yml:16
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<frail-context> (0, b'/home/concept\n', b'')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/concept/.ansible/tmp `"&& mkdir "` echo /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361 `" && echo ansible-tmp-1723603668.931367-926915-238985870283361="` echo /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361 `" ) && sleep 0'"'"''
<frail-context> (0, b'ansible-tmp-1723603668.931367-926915-238985870283361=/home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361\n', b'')
Using module file /usr/lib/python3/dist-packages/ansible/modules/command.py
<frail-context> PUT /home/concept/.ansible/tmp/ansible-local-9268364wde5m9q/tmpzjg7e22x TO /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361/AnsiballZ_command.py
<frail-context> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' '[frail-context]'
<frail-context> (0, b'sftp> put /home/concept/.ansible/tmp/ansible-local-9268364wde5m9q/tmpzjg7e22x /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361/AnsiballZ_command.py\n', b'')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'chmod u+x /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361/ /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361/AnsiballZ_command.py && sleep 0'"'"''
<frail-context> (0, b'', b'')
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' -tt frail-context '/bin/sh -c '"'"'/usr/local/bin/python3.9 /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361/AnsiballZ_command.py && sleep 0'"'"''
<frail-context> (1, b'\r\n{"rc": 2, "stdout": "", "stderr": "", "cmd": "sysctl -n kern.ipc.somaxconn", "failed": true, "msg": "[Errno 2] No such file or directory: b\'sysctl\'", "exception": " File \\"/tmp/ansible_ansible.legacy.command_payload_fve2r5dz/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py\\", line 2022, in run_command\\n cmd = subprocess.Popen(args, **kwargs)\\n File \\"/usr/local/lib/python3.9/subprocess.py\\", line 951, in __init__\\n self._execute_child(args, executable, preexec_fn, close_fds,\\n File \\"/usr/local/lib/python3.9/subprocess.py\\", line 1837, in _execute_child\\n raise child_exception_type(errno_num, err_msg, err_filename)\\n", "invocation": {"module_args": {"_raw_params": "sysctl -n kern.ipc.somaxconn", "_uses_shell": false, "stdin_add_newline": true, "strip_empty_ends": true, "argv": null, "chdir": null, "executable": null, "creates": null, "removes": null, "stdin": null}}}\r\n', b'Shared connection to frail-context closed.\r\n')
<frail-context> Failed to connect to the host via ssh: Shared connection to frail-context closed.
<frail-context> ESTABLISH SSH CONNECTION FOR USER: None
<frail-context> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o 'ControlPath="/home/concept/.ansible/cp/c447d132c6"' frail-context '/bin/sh -c '"'"'rm -f -r /home/concept/.ansible/tmp/ansible-tmp-1723603668.931367-926915-238985870283361/ > /dev/null 2>&1 && sleep 0'"'"''
<frail-context> (0, b'', b'')
The full traceback is:
File "/tmp/ansible_ansible.legacy.command_payload_fve2r5dz/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py", line 2022, in run_command
cmd = subprocess.Popen(args, **kwargs)
File "/usr/local/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/local/lib/python3.9/subprocess.py", line 1837, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
fatal: [frail-context]: FAILED! => {
"changed": false,
"cmd": "sysctl -n kern.ipc.somaxconn",
"invocation": {
"module_args": {
"_raw_params": "sysctl -n kern.ipc.somaxconn",
"_uses_shell": false,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true
}
},
"msg": "[Errno 2] No such file or directory: b'sysctl'",
"rc": 2,
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
concpt:
ansible version - 2.14.3
This ansible version is lower than the required ansible version.
What output does this command produce on your FreeBSD 14.0 server?
which sysctl
Regarding the ansible version, I was using the debian package so it was out of date. I have now updated it to 2.17.3
Here is the output:
concept@frail-context:~ $ which sysctl
/sbin/sysctl
This branch might solve your issue: https://github.com/nusenu/ansible-relayor/tree/i246_sysctl_freebsd
It has only a single change in it: https://github.com/nusenu/ansible-relayor/compare/master...i246_sysctl_freebsd
Can you test and confirm it solves your issue?
It works, thank you!
When I run my playbook to setup relays on my new FreeBSD server, it gives me an error that it can't find sysctl but I can run sysctl command perfectly fine when logged in.
The full traceback is: File "/tmp/ansible_ansible.legacy.command_payload_0otevaep/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py", line 2022, in run_command cmd = subprocess.Popen(args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/subprocess.py", line 1026, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/local/lib/python3.11/subprocess.py", line 1955, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) fatal: [hms9]: FAILED! => { "changed": false, "cmd": "sysctl -n kern.ipc.somaxconn", "invocation": { "module_args": { "_raw_params": "sysctl -n kern.ipc.somaxconn", "_uses_shell": false, "argv": null, "chdir": null, "creates": null, "executable": null, "removes": null, "stdin": null, "stdin_add_newline": true, "strip_empty_ends": true } }, "msg": "[Errno 2] No such file or directory: b'sysctl'",