gpg do not generate pubring.gpg

Hello,

i was trying to build Whonix on physical isolation following the documentation, but it fails at the command:

test -f "$gpg_temp_dir/pubring.gpg"

I checked the $gpg_temp_dir and noticied that no pubring.gpg was generated, then i tested the last 2 commands which was suposted to generate the pubring.gpg:

gpg --no-options --no-default-keyring --homedir "$gpg_temp_dir" --import "$WHONIX_SOURCE_FOLDER/packages/anon-shared-build-apt-sources-tpo/usr/share/anon-shared-build-apt-sources-tpo/tpoarchive-keys.d/torprojectarchive.asc"

and

`gpg --no-options --no-default-keyring --homedir β€œ$gpg_temp_dir” --fingerprint

The result was an pubring.kbx.

Last 300 Lines of the Log (3.326 Lines)

ERROR in ././build-steps.d/1200_create-debian-packages detected!
anon_dist_build_version: 13.0.0.1.4
(whonix_build_error_counter: 1)
(benchmark: 00:00:10)
trap_signal_type_previous: unset
trap_signal_type_last : ERR
process_backtrace_result:
1: : /sbin/init
2: : kdeinit5: Running…
3: : /usr/bin/ksmserver
4: : /usr/bin/plasmashell --shut-up
5: : /usr/bin/konsole
6: : /bin/bash
7: : sudo ./whonix_build --flavor whonix-gateway – --target root --build
8: : /bin/bash ./whonix_build --flavor whonix-gateway – --target root --build
9: : /bin/bash ./help-steps/whonix_build_one --flavor whonix-gateway --target root --build
10: : /bin/bash ././build-steps.d/1200_create-debian-packages
function_trace_result:
main (line number: 408)
main (line number: 404)
create-debian-packages (line number: 394)
get_tpo_packages (line number: 157)
errorhandlergeneral (line number: 323)
errorhandlerprocessshared (line number: 170)
last_failed_bash_command: test -f β€œ$gpg_temp_dir/pubring.gpg”
last_failed_exit_code: 1
ERROR in ././build-steps.d/1200_create-debian-packages detected!
############################################################
’

############################################################
ERROR in ././build-steps.d/1200_create-debian-packages detected!
anon_dist_build_version: 13.0.0.1.4
(whonix_build_error_counter: 1)
(benchmark: 00:00:10)
trap_signal_type_previous: unset
trap_signal_type_last : ERR
process_backtrace_result:
1: : /sbin/init
2: : kdeinit5: Running…
3: : /usr/bin/ksmserver
4: : /usr/bin/plasmashell --shut-up
5: : /usr/bin/konsole
6: : /bin/bash
7: : sudo ./whonix_build --flavor whonix-gateway – --target root --build
8: : /bin/bash ./whonix_build --flavor whonix-gateway – --target root --build
9: : /bin/bash ./help-steps/whonix_build_one --flavor whonix-gateway --target root --build
10: : /bin/bash ././build-steps.d/1200_create-debian-packages
function_trace_result:
main (line number: 408)
main (line number: 404)
create-debian-packages (line number: 394)
get_tpo_packages (line number: 157)
errorhandlergeneral (line number: 323)
errorhandlerprocessshared (line number: 170)
last_failed_bash_command: test -f β€œ$gpg_temp_dir/pubring.gpg”
last_failed_exit_code: 1
ERROR in ././build-steps.d/1200_create-debian-packages detected!
############################################################

++ β€˜[’ ERR = INT β€˜]’
++ β€˜[’ ERR = TERM β€˜]’
++ β€˜[’ ERR = ERR β€˜]’
++ echo β€˜INFO: trap_signal_type_last: ERR, considering auto retry…’
INFO: trap_signal_type_last: ERR, considering auto retry…
++ β€˜[’ β€˜!’ 1 = 0 β€˜]’
++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
++ whonix_build_auto_retry_counter=1
++ β€˜[’ -n 1 β€˜]’
++ β€˜[’ -n 5 β€˜]’
++ local first
++ read -r first _
++ β€˜[’ test = error_ β€˜]’
++ β€˜[’ 1 -gt 1 β€˜]’
++ echo 'INFO: Auto retry attempt number: 1. Max retry attempts: 1 (–retry-max). Auto retry… ’
INFO: Auto retry attempt number: 1. Max retry attempts: 1 (–retry-max). Auto retry…
++ whonix_build_auto_retry_counter=2
++ β€˜[’ β€˜!’ 5 = 0 β€˜]’
++ echo 'INFO: Waiting (–retry-wait) 5 seconds before auto retry… ’
INFO: Waiting (–retry-wait) 5 seconds before auto retry…
++ wait 30538
++ sleep 5
++ ignore_error=echo
++ error_handler_do_retry=echo
++ errorhandlerretry
++ β€˜[’ β€˜!’ β€˜β€™ = β€˜β€™ β€˜]’
++ echo β€˜INFO: Skipping whonix_build_dispatch_before_retry (–retry-before), because empty, ok.’
INFO: Skipping whonix_build_dispatch_before_retry (–retry-before), because empty, ok.
++ echo 'INFO: Retrying last_failed_bash_command…: test -f β€œ$gpg_temp_dir/pubring.gpg” ’
INFO: Retrying last_failed_bash_command…: test -f β€œ$gpg_temp_dir/pubring.gpg”
++ retry_last_failed_bash_command_exit_code=0
++ eval test -f β€˜β€œ$gpg_temp_dir/pubring.gpg”’
+++ test -f /tmp/tmp.gpQEeU3nRu/pubring.gpg
++ retry_last_failed_bash_command_exit_code=1
++ true
++ β€˜[’ 1 = 0 β€˜]’
++ echo 'INFO: Retry failed. exit code of last_failed_bash_command: 1 ’
INFO: Retry failed. exit code of last_failed_bash_command: 1
++ last_failed_exit_code=1
++ last_failed_bash_command=β€˜test -f β€œ$gpg_temp_dir/pubring.gpg”’
++ β€˜[’ β€˜!’ β€˜β€™ = β€˜β€™ β€˜]’
++ echo β€˜INFO: Skipping whonix_build_dispatch_after_retry (–retry-after), because empty, ok.’
INFO: Skipping whonix_build_dispatch_after_retry (–retry-after), because empty, ok.
++ β€˜[’ 1 = 0 β€˜]’
++ errorhandlerprocessshared β€˜NONE_(called_by_errorhandlerretry)’
++ last_script=././build-steps.d/1200_create-debian-packages
++ trap_signal_type_previous=ERR
++ β€˜[’ ERR = β€˜β€™ β€˜]’
++ trap_signal_type_last=β€˜NONE_(called_by_errorhandlerretry)’
++ whonix_build_error_counter=2
+++ benchmarktimeend 1511621152
++++ date +%s
+++ benchmarktimeend=1511621168
+++ benchmark_took_seconds=16
++++ convertsecs 16
++++ local h m s
++++ (( h=16/3600 ))
++++ true
++++ (( m=(16%3600)/60 ))
++++ true
++++ (( s=16%60 ))
++++ printf β€˜%02d:%02d:%02d\n’ 0 0 16
+++ echo 00:00:16
++ benchmark_took_time=00:00:16
++ processbacktracefunction
++ echo β€˜INFO: BEGIN: processbacktracefunction’
INFO: BEGIN: processbacktracefunction
++ β€˜[’ -o xtrace β€˜]’
++ set +x
++ echo β€˜INFO: END : processbacktracefunction’
INFO: END : processbacktracefunction
++ functiontracefunction
++ echo β€˜INFO: BEGIN: functiontracefunction’
INFO: BEGIN: functiontracefunction
++ β€˜[’ -o xtrace β€˜]’
++ set +x
++ echo β€˜INFO: END : functiontracefunction’
INFO: END : functiontracefunction
++ echo ’
############################################################
ERROR in ././build-steps.d/1200_create-debian-packages detected!
anon_dist_build_version: 13.0.0.1.4
(whonix_build_error_counter: 2)
(benchmark: 00:00:16)
trap_signal_type_previous: ERR
trap_signal_type_last : NONE_(called_by_errorhandlerretry)
process_backtrace_result:
1: : /sbin/init
2: : kdeinit5: Running…
3: : /usr/bin/ksmserver
4: : /usr/bin/plasmashell --shut-up
5: : /usr/bin/konsole
6: : /bin/bash
7: : sudo ./whonix_build --flavor whonix-gateway – --target root --build
8: : /bin/bash ./whonix_build --flavor whonix-gateway – --target root --build
9: : /bin/bash ./help-steps/whonix_build_one --flavor whonix-gateway --target root --build
10: : /bin/bash ././build-steps.d/1200_create-debian-packages
function_trace_result:
main (line number: 408)
main (line number: 404)
create-debian-packages (line number: 394)
get_tpo_packages (line number: 157)
errorhandlergeneral (line number: 323)
errorhandlerprocessshared (line number: 220)
errorhandlerretry (line number: 155)
errorhandlerprocessshared (line number: 170)
errorhandlerprocessshared (line number: 170)
errorhandlergeneral (line number: 323)
get_tpo_packages (line number: 157)
create-debian-packages (line number: 394)
main (line number: 404)
main (line number: 408)
last_failed_bash_command: test -f β€œ$gpg_temp_dir/pubring.gpg”
last_failed_exit_code: 1
ERROR in ././build-steps.d/1200_create-debian-packages detected!
############################################################
’

############################################################
ERROR in ././build-steps.d/1200_create-debian-packages detected!
anon_dist_build_version: 13.0.0.1.4
(whonix_build_error_counter: 2)
(benchmark: 00:00:16)
trap_signal_type_previous: ERR
trap_signal_type_last : NONE_(called_by_errorhandlerretry)
process_backtrace_result:
1: : /sbin/init
2: : kdeinit5: Running…
3: : /usr/bin/ksmserver
4: : /usr/bin/plasmashell --shut-up
5: : /usr/bin/konsole
6: : /bin/bash
7: : sudo ./whonix_build --flavor whonix-gateway – --target root --build
8: : /bin/bash ./whonix_build --flavor whonix-gateway – --target root --build
9: : /bin/bash ./help-steps/whonix_build_one --flavor whonix-gateway --target root --build
10: : /bin/bash ././build-steps.d/1200_create-debian-packages
function_trace_result:
main (line number: 408)
main (line number: 404)
create-debian-packages (line number: 394)
get_tpo_packages (line number: 157)
errorhandlergeneral (line number: 323)
errorhandlerprocessshared (line number: 220)
errorhandlerretry (line number: 155)
errorhandlerprocessshared (line number: 170)
errorhandlerprocessshared (line number: 170)
errorhandlergeneral (line number: 323)
get_tpo_packages (line number: 157)
create-debian-packages (line number: 394)
main (line number: 404)
main (line number: 408)
last_failed_bash_command: test -f β€œ$gpg_temp_dir/pubring.gpg”
last_failed_exit_code: 1
ERROR in ././build-steps.d/1200_create-debian-packages detected!
############################################################

++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = INT β€˜]’
++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = TERM β€˜]’
++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = ERR β€˜]’
++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = β€˜NONE_(called_by_errorhandlerretry)’ β€˜]’
++ echo β€˜INFO: trap_signal_type_last: NONE_(called_by_errorhandlerretry), considering auto retry…’
INFO: trap_signal_type_last: NONE_(called_by_errorhandlerretry), considering auto retry…
++ β€˜[’ β€˜!’ 1 = 0 β€˜]’
++ β€˜[’ 2 = β€˜β€™ β€˜]’
++ β€˜[’ -n 1 β€˜]’
++ β€˜[’ -n 5 β€˜]’
++ local first
++ read -r first _
++ β€˜[’ test = error_ β€˜]’
++ β€˜[’ 2 -gt 1 β€˜]’
++ echo 'INFO: Auto retried (–retry-max) already 1 times. No more auto retry. ’
INFO: Auto retried (–retry-max) already 1 times. No more auto retry.
++ unset whonix_build_auto_retry_counter
++ ignore_error=false
++ answer=
++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = ERR β€˜]’
++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = β€˜NONE_(called_by_errorhandlerretry)’ β€˜]’
++ echo 'INFO: whonix_build_non_interactive: ’
INFO: whonix_build_non_interactive:
++ β€˜[’ β€˜β€™ = true β€˜]’
++ β€˜[’ -t 0 β€˜]’
++ echo β€˜INFO: stdin connected to terminal, using interactive error handler.’
INFO: stdin connected to terminal, using interactive error handler.
++ echo 'ERROR in ././build-steps.d/1200_create-debian-packages detected!
Please have a look above (the block within ###…), note the command that failed, last_failed_exit_code and its output (further above).

  • Please enter c and press enter to ignore the error and continue building. (Recommended against!)
  • Please press r and enter to retry.
  • Please press s and enter to open an chroot interactive shell.
  • Please press enter to cleanup and exit.’
    ERROR in ././build-steps.d/1200_create-debian-packages detected!
    Please have a look above (the block within ###…), note the command that failed, last_failed_exit_code and its output (further above).
  • Please enter c and press enter to ignore the error and continue building. (Recommended against!)
  • Please press r and enter to retry.
  • Please press s and enter to open an chroot interactive shell.
  • Please press enter to cleanup and exit.
    ++ read -p 'Answer? ’ answer
    Answer? ++ error_handler_do_retry=
    ++ interactive_chroot_shell=
    ++ β€˜[’ β€˜β€™ = continue β€˜]’
    ++ β€˜[’ β€˜β€™ = c β€˜]’
    ++ β€˜[’ β€˜β€™ = s β€˜]’
    ++ β€˜[’ β€˜β€™ = shell β€˜]’
    ++ β€˜[’ β€˜β€™ = r β€˜]’
    ++ β€˜[’ β€˜β€™ = retry β€˜]’
    ++ ignore_error=false
    ++ interactive_chroot_shell=false
    ++ return 0
    ++ errorhandlermaybeexit ERR
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ false = true β€˜]’
    ++ abort_or_continue=Aborted
    ++ rm --force /etc/apt/sources.list.d/whonix_temp.list
    ++ rm --force /var/run/package_manager_lock
    ++ β€˜[’ false = true β€˜]’
    ++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = INT β€˜]’
    ++ β€˜[’ β€˜NONE_(called_by_errorhandlerretry)’ = TERM β€˜]’
    ++ trap - EXIT
    ++ echo β€˜INFO: Now exiting from ././build-steps.d/1200_create-debian-packages (because error was detected, see above) with exit code 1.’
    INFO: Now exiting from ././build-steps.d/1200_create-debian-packages (because error was detected, see above) with exit code 1.
    ++ exit 1
    ++ error_handler_whonix_build_one
    ++ true β€˜ERROR in ./help-steps/whonix_build_one’
    ++ true β€˜BASH_COMMAND: β€œ./$whonix_build_one_build_step_current”’
    ++ true β€˜whonix_build_one_build_step_current: ./build-steps.d/1200_create-debian-packages’
    ++ true β€˜args: --flavor whonix-gateway --target root --build’
    ++ true β€˜INFO: Now exiting from ./help-steps/whonix_build_one (because error was detected, see above).’
    ++ exit 1
  • exithandler
  • local exit_code=1
  • β€˜[’ β€˜!’ 1 = 0 β€˜]’
  • exit 1
    ++ error_handler_build_main
    ++ true β€˜ERROR in ./whonix_build’
    ++ true β€˜BASH_COMMAND: ./help-steps/whonix_build_one --flavor whonix-gateway $build_args’
    ++ true β€˜INFO: Now exiting from ./whonix_build (because error was detected, see above).’
    ++ exit 1
  • exithandler
  • local exit_code=1
  • β€˜[’ β€˜!’ 1 = 0 β€˜]’
  • exit 1
Technical Information

System: Debian Stretch 9.2 (also tested with Debian 8.9 Jessie)
Whonix: 13.0.0.1.4-stable

Error also related here.

Questions:

  • Is this expected?
  • How to fix it?
  • If possible, could you please explain?
  • Is this issue a dumb misunderstanding of the guide?

Thanks and sorry for bad english :slight_smile:

https://www.gnupg.org/faq/whats-new-in-2.1.html#keybox:

If no pubring.gpg is found, gpg defaults to the new keybox format and creates a pubring.kbx keybox file.

Edit the build file or wait for @Patrick to do it.

(Nice [details] tag. Very cool!)

Thanks for the reply!

I will wait for @Patrick do it, i’m not sure what exactly i should change.

Are you sure you build on Debian jessie? Because Whonix 14 for Debian stretch is not ready yet.

Perhaps you have package gpg2 installed but gpg not?

Whonix 14 will be compatible with Debian stretch / gpg kbx but let’s hope physical isolation will sill work since it is a very very low development priority.

Hello @Patrick!

I tested in both Jessie (8.9) and Stretch (9.2), i got the same problem in both. Right now i’m running the Stretch.

The return of the command gpg --version says it’s 2.1.18, i will try to install an older version then, if don’t work i will try again in Jessie considering the gpg version.

Thanks and good luck in the development :slight_smile:

I figured out the problem, but first i will explain what i have done.

First i tried downgrade the gpg (2.1.18, package gpgv2) to the older version (1.4.18, package gpgv1), i wasn’t even able to uninstall gpgv2 then i just installed gpgv1 , which not solved my problem.

Again i installed Debian Jessie (8.9) following the guide recommendations. Again not solved, but this time i noticed something, in the guide there’s a instruction which says:

echo β€œdeb http://ftp.us.debian.org/debian stable main” >> /etc/apt/sources.list

But according with Debian wiki the Jessie version is the oldstable and the Stretch version is the stable.

Knowing that i reinstalled Debian Jessie but instead of ignoring the mirror and the aditional packages, i selected the us ftp mirror and installed the system default utilities, debian default display manager and kde (since the --gui option is kde), and worked!

I got the /root/.dpkg.cfg permission denied warning listed in expected warnings. I also got the unsupported virtualizer option, since it’s physical isolation i guess there’s no problem change to the option 1 in the configuration file at the line WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER="0" as mentioned in whonixcheck.

After all this it worked normally, i just need to configure the second interface.

Thanks for the help!

2 Likes

Thanks! I just now fixed the wiki.

This is a bug in whonixcheck. Could you please run the following command and post the exact output here?

echo "'$(systemd-detect-virt)'"

Well, the output was simply 'none' :confused:

I have no idea why that doesn’t work.

https://github.com/Whonix/whonixcheck/blob/Whonix13/usr/lib/whonixcheck/check_virtualizer.bsh#L28

Please run the following command and post the output here.

whonixcheck --debug --function check_virtualizer

Here:

Output
  • CURL_VERBOSE=
  • shift
  • :
  • case $1 in
  • FUNCTION=check_virtualizer
  • β€˜[’ check_virtualizer = β€˜β€™ β€˜]’
  • shift 2
  • :
  • case $1 in
  • break
  • preparation
  • whonixcheck_run_function msgdispatcher_init
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running msgdispatcher_init, because whonixcheck_skip_functions does not include it.’
  • eval msgdispatcher_init
    ++ msgdispatcher_init
    ++ output_tool=/usr/lib/msgcollector/msgcollector
    ++ output_general=output_func_general
    ++ output_x=output_func_x
    ++ output_cli=output_func_cli
    ++ msgdispatcher_run_check
    ++ msgdispatcher_pid_check x
    ++ local pid_file pid
    ++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
    +++ whoami
    ++ who_ami=user
    ++ β€˜[’ cli = x β€˜]’
    ++ β€˜[’ x = x β€˜]’
    ++ pid_file=/var/run/msgcollector/user/msgdispatcher_pidx
    ++ [[ -f /var/run/msgcollector/user/msgdispatcher_pidx ]]
    +++ cat /var/run/msgcollector/user/msgdispatcher_pidx
    ++ pid=2527
    ++ kill -0 2527
    ++ msgdispatcher_running_x=true
    ++ msgdispatcher_pid_check cli
    ++ local pid_file pid
    ++ β€˜[’ user = β€˜β€™ β€˜]’
    ++ β€˜[’ cli = cli β€˜]’
    ++ pid_file=/var/run/msgcollector/user/msgdispatcher_pidcli
    ++ [[ -f /var/run/msgcollector/user/msgdispatcher_pidcli ]]
    ++ return 4
  • whonixcheck_run_function input_detection
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running input_detection, because whonixcheck_skip_functions does not include it.’
  • eval input_detection
    ++ input_detection
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ -t 0 β€˜]’
    ++ CLI=true
    ++ GUI=false
    ++ input_auto=true
    ++ input_msg=β€˜

    Input Detection: INPUT_AUTO=true CLI=true GUI=false
    stdin connected to terminal. Using cli output. Not using gui output.
    Alternatively, if want to run from command line, but still use the graphical user interface for input, you could add to command line: --gui

    ’
    ++ β€˜[’ true = false β€˜]’
    ++ β€˜[’ false = false β€˜]’
    ++ output_x=true
  • β€˜[’ -n β€˜β€™ β€˜]’
  • verbose=0
  • β€˜[’ 0 = 1 β€˜]’
  • β€˜[’ β€˜β€™ = 1 β€˜]’
  • β€˜[’ -e /var/run/whonixcheck/whonixcheck_pid β€˜]’
  • local oldpid
    ++ cat /var/run/whonixcheck/whonixcheck_pid
  • oldpid=9386
  • β€˜[’ β€˜!’ 9386 = β€˜β€™ β€˜]’
  • β€˜[’ 0 = 1 β€˜]’
  • β€˜[’ β€˜β€™ = 1 β€˜]’
  • lastpid=9386
  • process_killer_helper
    ++ type -t error_handler
  • β€˜[’ function = function β€˜]’
  • trap error_handler ERR
  • β€˜[’ 9386 = β€˜β€™ β€˜]’
  • local ps_p_exit_code
  • ps_p_exit_code=0
  • ps -p 9386
  • ps_p_exit_code=1
  • true
  • β€˜[’ β€˜!’ 1 = 0 β€˜]’
  • return 0
  • unset lastpid
  • rm --force /var/run/whonixcheck/whonixcheck_done
  • rm --force /var/run/whonixcheck/whonixcheck_recently_run
  • sudo -u user touch /var/run/whonixcheck/whonixcheck_running
  • echo 9963
  • sudo -u user tee /var/run/whonixcheck/whonixcheck_pid
  • sync
  • β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
  • β€˜[’ :0 = β€˜β€™ β€˜]’
  • display=:0
  • local my_tty
  • local my_tty_exit_code
  • my_tty_exit_code=0
    ++ tty
  • my_tty=/dev/pts/0
  • β€˜[’ β€˜!’ 0 = 0 β€˜]’
  • β€˜[’ /dev/pts/0 = β€˜β€™ β€˜]’
  • user_name=user
  • WHONIX_HOMEPAGE=https://www.whonix.org
    ++ mktemp --directory
  • TEMP_DIR=/tmp/tmp.Ufp06G9Qto
  • export TEMP_DIR
  • get_local_whonix_version
  • β€˜[’ -f /usr/share/anon-gw-base-files/gateway β€˜]’
  • whonix_deb_package_name=whonix-gateway-packages-dependencies
  • whonix_deb_package_version=β€˜Could not detect Whonix debian version. (Code: 1) Please report this bug!’
  • whonix_deb_package_version_detection_success=false
  • local dpkg_query_exit_code
  • dpkg_query_exit_code=0
    ++ dpkg-query --show β€˜β€“showformat=${Version}’ whonix-gateway-packages-dependencies
  • whonix_deb_package_version=3:3.4.2-1
  • β€˜[’ 0 = 0 β€˜]’
  • whonix_deb_package_version_detection_success=true
    ++ echo 3:3.4.2-1
    ++ awk -F : β€˜{ print $2 }’
  • whonix_deb_package_version=3.4.2-1
  • β€˜[’ 3.4.2-1 = β€˜β€™ β€˜]’
  • whonix_build_version=β€˜Could not read Whonix Build Version File. (Code: 3) Please report this bug!’
  • whonix_build_version_detection_success=false
  • local build_version_file
  • β€˜[’ -f /usr/share/whonix/build_version β€˜]’
  • β€˜[’ -f /var/lib/anon-dist/build_version β€˜]’
  • build_version_file=/var/lib/anon-dist/build_version
  • β€˜[’ /var/lib/anon-dist/build_version = β€˜β€™ β€˜]’
  • β€˜[’ -f /var/lib/anon-dist/build_version β€˜]’
    ++ cat /var/lib/anon-dist/build_version
  • whonix_build_version=13.0.0.1.4
  • whonix_build_version_detection_success=true
  • β€˜[’ 13.0.0.1.4 = β€˜β€™ β€˜]’
  • chmod 700 /tmp/tmp.Ufp06G9Qto
  • command -v qubesdb-read
  • qubes_detected=false
  • β€˜[’ -f /usr/share/anon-gw-base-files/gateway β€˜]’
  • VM=Whonix-Gateway
  • vm_lower_case_short=gateway
    ++ /usr/lib/anon-shared-helper-scripts/settings_echo
  • eval β€˜GATEWAY_IP=β€œ127.0.0.1”’ β€˜gateway_control_authenticate=β€œ1”’ β€˜gateway_control_port=β€œ9051”’
    ++ GATEWAY_IP=127.0.0.1
    ++ gateway_control_authenticate=1
    ++ gateway_control_port=9051
  • β€˜[’ -f /etc/apt/sources.list.d/whonix.list β€˜]’
  • whonix_codename=unknown
  • local i
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜β€™ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜β€™ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜β€™ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ deb = deb β€˜]’
  • whonix_codename=jessie
  • break
  • whonix_codename_uppercase=JESSIE
  • β€˜[’ β€˜β€™ = 1 β€˜]’
  • β€˜[’ 0 = 1 β€˜]’
  • manualrun=1
    ++ uname --machine
  • ARCH=i686
  • β€˜[’ false = true β€˜]’
  • start_menu_instructions_system_first_part=β€˜Start Menu β†’ Applications β†’ System ->’
  • persistent_changes_start_menu_instructions_first_part=β€˜Start Menu β†’ Applications β†’ System ->’
  • qubes_title_extra=
  • update_where=β€˜this machine’
  • passive_popup_title=β€˜[whonixcheck]’
  • β€˜[’ -n β€˜β€™ β€˜]’
  • silent=0
  • β€˜[’ β€˜β€™ = true β€˜]’
  • TITLE_X=β€˜whonixcheck | Whonix-Gateway’
    ++ date
  • TITLE_CLI=’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
  • TPO_PIN_CERT_FILE=/usr/share/torbrowser-launcher/torproject.pem
  • CURL_TPO_PIN_CERT=β€˜β€“cacert /usr/share/torbrowser-launcher/torproject.pem’
    ++ whoami
  • who_ami=user
  • output_func_general --icon /usr/share/icons/anon-icon-pack/whonix.ico
  • output_func --icon /usr/share/icons/anon-icon-pack/whonix.ico
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --icon /usr/share/icons/anon-icon-pack/whonix.ico
  • return 0
  • return 0
  • output_func_general --parenttty /dev/pts/0
  • output_func --parenttty /dev/pts/0
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --parenttty /dev/pts/0
  • return 0
  • return 0
  • output_func_general --whoami user
  • output_func --whoami user
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --whoami user
  • return 0
  • return 0
  • true --titlex β€˜whonixcheck | Whonix-Gateway’
  • output_func_cli --titlecli ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • true β€˜output_func_cli: injecting --onlyecho.’
  • output_func --onlyecho --titlecli ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --titlecli ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
  • return 0
  • output_func_general --lefttop
  • output_func --lefttop
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --lefttop
  • return 0
  • return 0
  • β€˜[’ 0 -ge 1 β€˜]’
  • β€˜[’ false = true β€˜]’
  • MSG=β€˜

    Input Detection: INPUT_AUTO=true CLI=true GUI=false
    stdin connected to terminal. Using cli output. Not using gui output.
    Alternatively, if want to run from command line, but still use the graphical user interface for input, you could add to command line: --gui

    ’
  • β€˜[’ 0 -ge 1 β€˜]’
  • shopt -s nullglob
  • local i
  • for i in β€˜/etc/whonix.d/*.conf’
  • bash -n /etc/whonix.d/30_whonixcheck_default.conf
  • source /etc/whonix.d/30_whonixcheck_default.conf
    ++ WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER=1
    ++ WHONIXCHECK_DISABLE_SOCKS_PORT_TEST=0
    ++ WHONIXCHECK_NO_EXIT_ON_TRANS_PORT_DETECTION_FAILURE=0
    ++ WHONIXCHECK_DISABLE_TRANS_PORT_TEST=0
    ++ WHONIXCHECK_NO_EXIT_ON_IP_FORWARDING_DETECTION=0
    ++ whonixcheck_unwanted_package+=’ popularity-contest ’
    ++ whonixcheck_unwanted_package+=’ canonical-census ’
    ++ whonixcheck_unwanted_package+=’ unity-lens-shopping ’
    ++ whonixcheck_unwanted_package+=’ unity-scope-video-remote ’
    ++ whonixcheck_unwanted_package+=’ unity-scope-musicstores ’
    ++ whonixcheck_unwanted_package+=’ bts ’
    ++ whonixcheck_unwanted_package+=’ wnpp-check ’
    ++ whonixcheck_unwanted_package+=’ chrony ’
    ++ whonixcheck_unwanted_package+=’ ntp ’
    ++ whonixcheck_unwanted_package+=’ ntpdate ’
    ++ whonixcheck_expected_nonfree_package+=’ virtualbox-guest-dkms ’
    ++ whonixcheck_expected_nonfree_package+=’ virtualbox-guest-utils ’
    ++ whonixcheck_expected_nonfree_package+=’ virtualbox-guest-x11 ’
    ++ whonixcheck_expected_nonfree_package+=’ firmware-linux ’
    ++ whonixcheck_expected_nonfree_package+=’ firmware-linux-nonfree ’
    ++ date +%s
  • TIME_START=1512064476
  • whonixcheck_run_function root_check
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running root_check, because whonixcheck_skip_functions does not include it.’
  • eval root_check
    ++ root_check
    ++ β€˜[’ β€˜!’ β€˜β€™ = 0 β€˜]’
    +++ id -u
    ++ β€˜[’ 1000 β€˜!=’ 0 β€˜]’
    ++ local β€˜MSG=

    Root Check Result: Ok, not running as root.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
  • whonixcheck_run_function uwt_tool
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running uwt_tool, because whonixcheck_skip_functions does not include it.’
  • eval uwt_tool
    ++ uwt_tool
    ++ ret=0
    ++ command -v curl.anondist-orig
    ++ β€˜[’ 0 = 0 β€˜]’
    ++ CURL=curl.anondist-orig
    ++ ret=0
    ++ command -v apt-get.anondist-orig
    ++ β€˜[’ 0 = 0 β€˜]’
    ++ APT_GET=apt-get.anondist-orig
  • whonixcheck_run_function pin_tpo_ssl_cert
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running pin_tpo_ssl_cert, because whonixcheck_skip_functions does not include it.’
  • eval pin_tpo_ssl_cert
    ++ pin_tpo_ssl_cert
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ local β€˜MSG=

    Pin torproject.org certificate: disabled.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
    ++ CURL_TPO_PIN_CERT=
    ++ true 'CURL_TPO_PIN_CERT: ’
  • whonixcheck_run_function function_manual_run
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running function_manual_run, because whonixcheck_skip_functions does not include it.’
  • eval function_manual_run
    ++ function_manual_run
    ++ β€˜[’ check_virtualizer = none β€˜]’
    ++ β€˜[’ check_virtualizer = β€˜β€™ β€˜]’
    ++ check_virtualizer
    ++ β€˜[’ -n β€˜β€™ β€˜]’
    ++ whonixcheck_virt_detection_tool=systemd-detect-virt
    ++ command -v systemd-detect-virt
    +++ systemd-detect-virt
    ++ whonixcheck_virtualizer_detected=β€˜Failed to check for virtualization: Permission denied’
    ++ true
    ++ local β€˜MSG=

    Check Virtualizer Result (debug): qubes_detected: false, continuing.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = β€˜β€™ β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = none β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = oracle β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = kvm β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = xen β€˜]’
    ++ β€˜[’ 1 = 1 β€˜]’
    ++ local β€˜MSG=

    Check Virtualizer Result: Unsupported Virtualizer Failed to check for virtualization: Permission denied detected, but WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER is set, continuing.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
    ++ return 0
    ++ cleanup
    ++ true cleanup…
    ++ touch /var/run/whonixcheck/whonixcheck_done
    ++ sync
    ++ SIGNAL_TYPE=NONE
    ++ cd …
    ++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
    ++ EXIT_CODE=0
    ++ ex_funct
    ++ β€˜[’ β€˜!’ NONE = NONE β€˜]’
    ++ trap - SIGTERM
    ++ trap - SIGINT
    ++ trap - SIGUSR2
    ++ maybe_kill_apt_get_update
    ++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
    ++ return 0
    ++ command -v process_killer_helper
    ++ process_killer_helper
    +++ type -t error_handler
    ++ β€˜[’ function = function β€˜]’
    ++ trap error_handler ERR
    ++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
    ++ return 0
    ++ lastpid=
    ++ process_killer_helper
    +++ type -t error_handler
    ++ β€˜[’ function = function β€˜]’
    ++ trap error_handler ERR
    ++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
    ++ return 0
    ++ cleanup_files
    ++ β€˜[’ β€˜β€™ = false β€˜]’
    ++ β€˜[’ -d /tmp/tmp.Ufp06G9Qto β€˜]’
    ++ rm --recursive /tmp/tmp.Ufp06G9Qto
    ++ rm --force /var/run/whonixcheck/whonixcheck_running
    ++ rm --force /var/run/whonixcheck/whonixcheck_waiting
    ++ local command_v_output_exit_code
    ++ command_v_output_exit_code=0
    ++ command -v output_func
    ++ β€˜[’ 0 = 0 β€˜]’
    ++ local output_status_exit_code
    ++ output_status_exit_code=0
    ++ output_func_general --identifier whonixcheck --status --messagecli
    ++ output_func --identifier whonixcheck --status --messagecli
    ++ β€˜[’ -n user β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --identifier whonixcheck --status --messagecli
    ++ return 1
    ++ return 1
    ++ output_status_exit_code=1
    ++ true
    ++ β€˜[’ β€˜!’ 1 = 1 β€˜]’
    ++ β€˜[’ β€˜!’ β€˜β€™ = β€˜β€™ β€˜]’
    ++ β€˜[’ NONE = SIGUSR2 β€˜]’
    ++ β€˜[’ β€˜β€™ = 0 β€˜]’
    ++ true β€˜No progress bar open. No need to send progress 100 to close progress bar.’
    ++ β€˜[’ β€˜whonixcheck | Whonix-Gateway’ = β€˜β€™ β€˜]’
    ++ β€˜[’ ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’ = β€˜β€™ β€˜]’
    ++ true --titlex β€˜whonixcheck | Whonix-Gateway’
    ++ output_func_cli --titlecli ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ true β€˜output_func_cli: injecting --onlyecho.’
    ++ output_func --onlyecho --titlecli ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
    ++ β€˜[’ -n user β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --titlecli ’ | Whonix-Gateway | Thu Nov 30 17:54:35 UTC 2017’
    ++ return 0
    ++ β€˜[’ β€˜!’ NONE = NONE β€˜]’
    ++ true --messagex --done
    ++ output_func_cli --messagecli --done
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ true β€˜output_func_cli: injecting --onlyecho.’
    ++ output_func --onlyecho --messagecli --done
    ++ β€˜[’ -n user β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --messagecli --done
    ++ return 0
    ++ β€˜[’ 0 = β€˜β€™ β€˜]’
    ++ exit 0

About the code, don’t you think you should use the comparison operator == instead of the initialization operator = ?

This is the cause. I wonder why this doesn’t happen to me.

systemd-detect-virt is not allowed in whonixcheck’s apparmor profile. Could you please try the following patch?

https://github.com/Whonix/whonixcheck/commit/708534df6ac9cd76c00b4d0c5ece0ef785e43686

Added but seems like failed:

++ whonixcheck_virt_detection_tool=systemd-detect-virt
++ command -v systemd-detect-virt
+++ systemd-detect-virt
++ whonixcheck_virtualizer_detected=β€˜Failed to check for virtualization: Permission denied’

Full Log
  • CURL_VERBOSE=
  • shift
  • :
  • case $1 in
  • FUNCTION=check_virtualizer
  • β€˜[’ check_virtualizer = β€˜β€™ β€˜]’
  • shift 2
  • :
  • case $1 in
  • break
  • preparation
  • whonixcheck_run_function msgdispatcher_init
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running msgdispatcher_init, because whonixcheck_skip_functions does not include it.’
  • eval msgdispatcher_init
    ++ msgdispatcher_init
    ++ output_tool=/usr/lib/msgcollector/msgcollector
    ++ output_general=output_func_general
    ++ output_x=output_func_x
    ++ output_cli=output_func_cli
    ++ msgdispatcher_run_check
    ++ msgdispatcher_pid_check x
    ++ local pid_file pid
    ++ β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
    +++ whoami
    ++ who_ami=user
    ++ β€˜[’ cli = x β€˜]’
    ++ β€˜[’ x = x β€˜]’
    ++ pid_file=/var/run/msgcollector/user/msgdispatcher_pidx
    ++ [[ -f /var/run/msgcollector/user/msgdispatcher_pidx ]]
    +++ cat /var/run/msgcollector/user/msgdispatcher_pidx
    ++ pid=2524
    ++ kill -0 2524
    ++ msgdispatcher_running_x=true
    ++ msgdispatcher_pid_check cli
    ++ local pid_file pid
    ++ β€˜[’ user = β€˜β€™ β€˜]’
    ++ β€˜[’ cli = cli β€˜]’
    ++ pid_file=/var/run/msgcollector/user/msgdispatcher_pidcli
    ++ [[ -f /var/run/msgcollector/user/msgdispatcher_pidcli ]]
    ++ return 4
  • whonixcheck_run_function input_detection
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running input_detection, because whonixcheck_skip_functions does not include it.’
  • eval input_detection
    ++ input_detection
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ β€˜[’ -t 0 β€˜]’
    ++ CLI=true
    ++ GUI=false
    ++ input_auto=true
    ++ input_msg=β€˜

    Input Detection: INPUT_AUTO=true CLI=true GUI=false
    stdin connected to terminal. Using cli output. Not using gui output.
    Alternatively, if want to run from command line, but still use the graphical user interface for input, you could add to command line: --gui

    ’
    ++ β€˜[’ true = false β€˜]’
    ++ β€˜[’ false = false β€˜]’
    ++ output_x=true
  • β€˜[’ -n β€˜β€™ β€˜]’
  • verbose=0
  • β€˜[’ 0 = 1 β€˜]’
  • β€˜[’ β€˜β€™ = 1 β€˜]’
  • β€˜[’ -e /var/run/whonixcheck/whonixcheck_pid β€˜]’
  • local oldpid
    ++ cat /var/run/whonixcheck/whonixcheck_pid
  • oldpid=6802
  • β€˜[’ β€˜!’ 6802 = β€˜β€™ β€˜]’
  • β€˜[’ 0 = 1 β€˜]’
  • β€˜[’ β€˜β€™ = 1 β€˜]’
  • lastpid=6802
  • process_killer_helper
    ++ type -t error_handler
  • β€˜[’ function = function β€˜]’
  • trap error_handler ERR
  • β€˜[’ 6802 = β€˜β€™ β€˜]’
  • local ps_p_exit_code
  • ps_p_exit_code=0
  • ps -p 6802
  • ps_p_exit_code=1
  • true
  • β€˜[’ β€˜!’ 1 = 0 β€˜]’
  • return 0
  • unset lastpid
  • rm --force /var/run/whonixcheck/whonixcheck_done
  • rm --force /var/run/whonixcheck/whonixcheck_recently_run
  • sudo -u user touch /var/run/whonixcheck/whonixcheck_running
  • echo 7511
  • sudo -u user tee /var/run/whonixcheck/whonixcheck_pid
  • sync
  • β€˜[’ β€˜β€™ = β€˜β€™ β€˜]’
  • β€˜[’ :0 = β€˜β€™ β€˜]’
  • display=:0
  • local my_tty
  • local my_tty_exit_code
  • my_tty_exit_code=0
    ++ tty
  • my_tty=/dev/pts/0
  • β€˜[’ β€˜!’ 0 = 0 β€˜]’
  • β€˜[’ /dev/pts/0 = β€˜β€™ β€˜]’
  • user_name=user
  • WHONIX_HOMEPAGE=h t t p s : / / w w w . w h o n i x . o r g
    ++ mktemp --directory
  • TEMP_DIR=/tmp/tmp.xYSbUuVJmz
  • export TEMP_DIR
  • get_local_whonix_version
  • β€˜[’ -f /usr/share/anon-gw-base-files/gateway β€˜]’
  • whonix_deb_package_name=whonix-gateway-packages-dependencies
  • whonix_deb_package_version=β€˜Could not detect Whonix debian version. (Code: 1) Please report this bug!’
  • whonix_deb_package_version_detection_success=false
  • local dpkg_query_exit_code
  • dpkg_query_exit_code=0
    ++ dpkg-query --show β€˜β€“showformat=${Version}’ whonix-gateway-packages-dependencies
  • whonix_deb_package_version=3:3.4.2-1
  • β€˜[’ 0 = 0 β€˜]’
  • whonix_deb_package_version_detection_success=true
    ++ echo 3:3.4.2-1
    ++ awk -F : β€˜{ print $2 }’
  • whonix_deb_package_version=3.4.2-1
  • β€˜[’ 3.4.2-1 = β€˜β€™ β€˜]’
  • whonix_build_version=β€˜Could not read Whonix Build Version File. (Code: 3) Please report this bug!’
  • whonix_build_version_detection_success=false
  • local build_version_file
  • β€˜[’ -f /usr/share/whonix/build_version β€˜]’
  • β€˜[’ -f /var/lib/anon-dist/build_version β€˜]’
  • build_version_file=/var/lib/anon-dist/build_version
  • β€˜[’ /var/lib/anon-dist/build_version = β€˜β€™ β€˜]’
  • β€˜[’ -f /var/lib/anon-dist/build_version β€˜]’
    ++ cat /var/lib/anon-dist/build_version
  • whonix_build_version=13.0.0.1.4
  • whonix_build_version_detection_success=true
  • β€˜[’ 13.0.0.1.4 = β€˜β€™ β€˜]’
  • chmod 700 /tmp/tmp.xYSbUuVJmz
  • command -v qubesdb-read
  • qubes_detected=false
  • β€˜[’ -f /usr/share/anon-gw-base-files/gateway β€˜]’
  • VM=Whonix-Gateway
  • vm_lower_case_short=gateway
    ++ /usr/lib/anon-shared-helper-scripts/settings_echo
  • eval β€˜GATEWAY_IP=β€œ127.0.0.1”’ β€˜gateway_control_authenticate=β€œ1”’ β€˜gateway_control_port=β€œ9051”’
    ++ GATEWAY_IP=127.0.0.1
    ++ gateway_control_authenticate=1
    ++ gateway_control_port=9051
  • β€˜[’ -f /etc/apt/sources.list.d/whonix.list β€˜]’
  • whonix_codename=unknown
  • local i
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜β€™ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜β€™ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜##’ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ β€˜β€™ = deb β€˜]’
  • read -r i
  • local first second third fourth
  • read -r first second third fourth _
  • β€˜[’ deb = deb β€˜]’
  • whonix_codename=jessie
  • break
  • whonix_codename_uppercase=JESSIE
  • β€˜[’ β€˜β€™ = 1 β€˜]’
  • β€˜[’ 0 = 1 β€˜]’
  • manualrun=1
    ++ uname --machine
  • ARCH=i686
  • β€˜[’ false = true β€˜]’
  • start_menu_instructions_system_first_part=β€˜Start Menu β†’ Applications β†’ System ->’
  • persistent_changes_start_menu_instructions_first_part=β€˜Start Menu β†’ Applications β†’ System ->’
  • qubes_title_extra=
  • update_where=β€˜this machine’
  • passive_popup_title=β€˜[whonixcheck]’
  • β€˜[’ -n β€˜β€™ β€˜]’
  • silent=0
  • β€˜[’ β€˜β€™ = true β€˜]’
  • TITLE_X=β€˜whonixcheck | Whonix-Gateway’
    ++ date
  • TITLE_CLI=’ | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017’
  • TPO_PIN_CERT_FILE=/usr/share/torbrowser-launcher/torproject.pem
  • CURL_TPO_PIN_CERT=β€˜β€“cacert /usr/share/torbrowser-launcher/torproject.pem’
    ++ whoami
  • who_ami=user
  • output_func_general --icon /usr/share/icons/anon-icon-pack/whonix.ico
  • output_func --icon /usr/share/icons/anon-icon-pack/whonix.ico
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --icon /usr/share/icons/anon-icon-pack/whonix.ico
  • return 0
  • return 0
  • output_func_general --parenttty /dev/pts/0
  • output_func --parenttty /dev/pts/0
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --parenttty /dev/pts/0
  • return 0
  • return 0
  • output_func_general --whoami user
  • output_func --whoami user
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --whoami user
  • return 0
  • return 0
  • true --titlex β€˜whonixcheck | Whonix-Gateway’
  • output_func_cli --titlecli ’ | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • true β€˜output_func_cli: injecting --onlyecho.’
  • output_func --onlyecho --titlecli ’ | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017’
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --titlecli ’ | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017’
  • return 0
  • output_func_general --lefttop
  • output_func --lefttop
  • β€˜[’ -n user β€˜]’
  • β€˜[’ β€˜β€™ = true β€˜]’
  • /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --lefttop
  • return 0
  • return 0
  • β€˜[’ 0 -ge 1 β€˜]’
  • β€˜[’ false = true β€˜]’
  • MSG=β€˜

    Input Detection: INPUT_AUTO=true CLI=true GUI=false
    stdin connected to terminal. Using cli output. Not using gui output.
    Alternatively, if want to run from command line, but still use the graphical user interface for input, you could add to command line: --gui

    ’
  • β€˜[’ 0 -ge 1 β€˜]’
  • shopt -s nullglob
  • local i
  • for i in β€˜/etc/whonix.d/*.conf’
  • bash -n /etc/whonix.d/30_whonixcheck_default.conf
  • source /etc/whonix.d/30_whonixcheck_default.conf
    ++ WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER=0
    ++ WHONIXCHECK_DISABLE_SOCKS_PORT_TEST=0
    ++ WHONIXCHECK_NO_EXIT_ON_TRANS_PORT_DETECTION_FAILURE=0
    ++ WHONIXCHECK_DISABLE_TRANS_PORT_TEST=0
    ++ WHONIXCHECK_NO_EXIT_ON_IP_FORWARDING_DETECTION=0
    ++ whonixcheck_unwanted_package+=’ popularity-contest ’
    ++ whonixcheck_unwanted_package+=’ canonical-census ’
    ++ whonixcheck_unwanted_package+=’ unity-lens-shopping ’
    ++ whonixcheck_unwanted_package+=’ unity-scope-video-remote ’
    ++ whonixcheck_unwanted_package+=’ unity-scope-musicstores ’
    ++ whonixcheck_unwanted_package+=’ bts ’
    ++ whonixcheck_unwanted_package+=’ wnpp-check ’
    ++ whonixcheck_unwanted_package+=’ chrony ’
    ++ whonixcheck_unwanted_package+=’ ntp ’
    ++ whonixcheck_unwanted_package+=’ ntpdate ’
    ++ whonixcheck_expected_nonfree_package+=’ virtualbox-guest-dkms ’
    ++ whonixcheck_expected_nonfree_package+=’ virtualbox-guest-utils ’
    ++ whonixcheck_expected_nonfree_package+=’ virtualbox-guest-x11 ’
    ++ whonixcheck_expected_nonfree_package+=’ firmware-linux ’
    ++ whonixcheck_expected_nonfree_package+=’ firmware-linux-nonfree ’
    ++ date +%s
  • TIME_START=1512131025
  • whonixcheck_run_function root_check
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running root_check, because whonixcheck_skip_functions does not include it.’
  • eval root_check
    ++ root_check
    ++ β€˜[’ β€˜!’ β€˜β€™ = 0 β€˜]’
    +++ id -u
    ++ β€˜[’ 1000 β€˜!=’ 0 β€˜]’
    ++ local β€˜MSG=

    Root Check Result: Ok, not running as root.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
  • whonixcheck_run_function uwt_tool
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running uwt_tool, because whonixcheck_skip_functions does not include it.’
  • eval uwt_tool
    ++ uwt_tool
    ++ ret=0
    ++ command -v curl.anondist-orig
    ++ β€˜[’ 0 = 0 β€˜]’
    ++ CURL=curl.anondist-orig
    ++ ret=0
    ++ command -v apt-get.anondist-orig
    ++ β€˜[’ 0 = 0 β€˜]’
    ++ APT_GET=apt-get.anondist-orig
  • whonixcheck_run_function pin_tpo_ssl_cert
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running pin_tpo_ssl_cert, because whonixcheck_skip_functions does not include it.’
  • eval pin_tpo_ssl_cert
    ++ pin_tpo_ssl_cert
    ++ β€˜[’ β€˜β€™ = true β€˜]’
    ++ local β€˜MSG=

    Pin torproject.org certificate: disabled.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
    ++ CURL_TPO_PIN_CERT=
    ++ true 'CURL_TPO_PIN_CERT: ’
  • whonixcheck_run_function function_manual_run
  • case $whonixcheck_skip_functions in
  • true β€˜INFO: Running function_manual_run, because whonixcheck_skip_functions does not include it.’
  • eval function_manual_run
    ++ function_manual_run
    ++ β€˜[’ check_virtualizer = none β€˜]’
    ++ β€˜[’ check_virtualizer = β€˜β€™ β€˜]’
    ++ check_virtualizer
    ++ β€˜[’ -n β€˜β€™ β€˜]’
    ++ whonixcheck_virt_detection_tool=systemd-detect-virt
    ++ command -v systemd-detect-virt
    +++ systemd-detect-virt
    ++ whonixcheck_virtualizer_detected=β€˜Failed to check for virtualization: Permission denied’
    ++ true
    ++ local β€˜MSG=

    Check Virtualizer Result (debug): qubes_detected: false, continuing.

    ’
    ++ β€˜[’ 0 -ge 1 β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = β€˜β€™ β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = none β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = oracle β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = kvm β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = xen β€˜]’
    ++ β€˜[’ 0 = 1 β€˜]’
    ++ β€˜[’ β€˜Failed to check for virtualization: Permission denied’ = vmware β€˜]’
    ++ local VMWARE_TEXT=
    ++ local VMWARE_LINK=
    ++ local 'MSG=

    Virtualizer Failed to check for virtualization: Permission denied unsupported by Whonix developers! Whonixcheck aborted!
    (qubes_detected: false)

Using Virtualizer Failed to check for virtualization: Permission denied together with Whonix is recommended against, because it is rarely tested. [1] [2] [3]

It could be made possible, but would require more Whonix contributors.

It may already work, but is highly experimental.

This might endanger your anonymity. Do not proceed unless you know what you are doing.

If you wish to ignore this warning and to continue whonixcheck anyway, you can set

WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER="1"
in /etc/whonix.d/30_whonixcheck_default.conf.

Recommended action:

- Shut down.

- Read Whonix documentation [4].

- Use Whonix with a supported virtualizer or Physical Isolation [5].

Footnotes:

[1] h t t p s : / / w w w . w h o n i x . o r g / w i k i / L e a k T e s t s

[2] h t t p s : / / w w w . w h o n i x .o r g / w i k i /T e s t

[3] h t t p s : / / w w w . w h o n i x . o r g / w i k i / P r o t o c o l - L e a k - P r o t e c t i o n _ a n d _ F i n g e r p r i n t i n g - P r o t e c t i o n

[4] h t t p s : / / w w w . w h o n i x . o r g / w i k i / D o c u m e n t a t i o n

[5] h t t p s : / / w w w . w h o n i x . o r g / w i k i / P h y s i c a l _ I s o l a t i o n



' ++ true --messagex --typex error --message '

Virtualizer Failed to check for virtualization: Permission denied unsupported by Whonix developers! Whonixcheck aborted! (qubes_detected: false)

Using Virtualizer Failed to check for virtualization: Permission denied together with Whonix is recommended against, because it is rarely tested. [1] [2] [3]

It could be made possible, but would require more Whonix contributors.

It may already work, but is highly experimental.

This might endanger your anonymity. Do not proceed unless you know what you are doing.

If you wish to ignore this warning and to continue whonixcheck anyway, you can set

WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER="1"
in /etc/whonix.d/30_whonixcheck_default.conf.

Recommended action:

- Shut down.

- Read Whonix documentation [4].

- Use Whonix with a supported virtualizer or Physical Isolation [5].

Footnotes:

[1] h t t p s : / / w w w . w h o n i x . o r g / w i k i / L e a k T e s t s

[2] h t t p s : / / w w w . w h o n i x . o r g / w i k i / T e s t

[3] h t t p s : / / w w w . w h o n i x . o r g / w i k i / P r o t o c o l - L e a k - P r o t e c t i o n _ a n d _ F i n g e r p r i n t i n g - P r o t e c t i o n

[4] h t t p s : / / w w w . w h o n i x . o r g / w i k i / D o c u m e n t a t i o n

[5] h t t p s : / / w w w . w h o n i x . o r g / w i k i / P h y s i c a l _ I s o l a t i o n



' ++ output_func_cli --messagecli --typecli error --message '

Virtualizer Failed to check for virtualization: Permission denied unsupported by Whonix developers! Whonixcheck aborted! (qubes_detected: false)

Using Virtualizer Failed to check for virtualization: Permission denied together with Whonix is recommended against, because it is rarely tested. [1] [2] [3]

It could be made possible, but would require more Whonix contributors.

It may already work, but is highly experimental.

This might endanger your anonymity. Do not proceed unless you know what you are doing.

If you wish to ignore this warning and to continue whonixcheck anyway, you can set

WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER="1"
in /etc/whonix.d/30_whonixcheck_default.conf.

Recommended action:

- Shut down.

- Read Whonix documentation [4].

- Use Whonix with a supported virtualizer or Physical Isolation [5].

Footnotes:

[1] h t t p s : / / w w w . w h o n i x . o r g / w i k i / L e a k T e s t s

[2] h t t p s : / / w w w . w h o n i x . o r g / w i k i / T e s t

[3] h t t p s : / / w w w . w h o n i x . o r g / w i k i / P r o t o c o l - L e a k - P r o t e c t i o n _ a n d _ F i n g e r p r i n t i n g - P r o t e c t i o n

[4] h t t p s : / / w w w . w h o n i x . o r g / w i k i / D o c u m e n t a t i o n

[5] h t t p s : / / w w w . w ho n i x . o r g / w i k i / P h y s i c a l _ I s o l a t i o n



' ++ '[' '' = true ']' ++ true 'output_func_cli: injecting --onlyecho.' ++ output_func --onlyecho --messagecli --typecli error --message '

Virtualizer Failed to check for virtualization: Permission denied unsupported by Whonix developers! Whonixcheck aborted! (qubes_detected: false)

Using Virtualizer Failed to check for virtualization: Permission denied together with Whonix is recommended against, because it is rarely tested. [1] [2] [3]

It could be made possible, but would require more Whonix contributors.

It may already work, but is highly experimental.

This might endanger your anonymity. Do not proceed unless you know what you are doing.

If you wish to ignore this warning and to continue whonixcheck anyway, you can set

WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER="1"
in /etc/whonix.d/30_whonixcheck_default.conf.

Recommended action:

- Shut down.

- Read Whonix documentation [4].

- Use Whonix with a supported virtualizer or Physical Isolation [5].

Footnotes:

[1] h t t p s : / / w w w .w h o n i x . o r g /wiki/LeakTests

[2] ht t p s : / / w w w . wh o n i x . o r g / w i ki/Test

[3] h t t p s : / / w w w . wh o n i x . o r g / w i k i / Pr o t o c o l -Leak-Protection_and_Fingerprinting-Protection

[4] h t t p s : / / w w w . w h o n i x . o r g / w i k i / D o c u m e n t a t i o n

[5] ht t p s : / / w ww . w h o n i x . o r g /w i ki/Physical_Isolation



' ++ '[' -n user ']' ++ '[' '' = true ']' ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --messagecli --typecli error --message '

Virtualizer Failed to check for virtualization: Permission denied unsupported by Whonix developers! Whonixcheck aborted! (qubes_detected: false)

Using Virtualizer Failed to check for virtualization: Permission denied together with Whonix is recommended against, because it is rarely tested. [1] [2] [3]

It could be made possible, but would require more Whonix contributors.

It may already work, but is highly experimental.

This might endanger your anonymity. Do not proceed unless you know what you are doing.

If you wish to ignore this warning and to continue whonixcheck anyway, you can set

WHONIXCHECK_NO_EXIT_ON_UNSUPPORTED_VIRTUALIZER="1"
in /etc/whonix.d/30_whonixcheck_default.conf.

Recommended action:

- Shut down.

- Read Whonix documentation [4].

- Use Whonix with a supported virtualizer or Physical Isolation [5].

Footnotes:

[1] ht tps :/ / w w w . w h o n i x . o r g / w i ki/LeakTests

[2] ht tps :/ /ww w. whonix . o rg/wiki/Test

[3] h t t p s: / /w w w .w honix . org/ wiki/Protocol-Leak-Protection_and_Fingerprinting-Protection

[4] ht t ps : / / w w w . w h o n i x . o r g /w i k i / Do c u m e n ta t i on

[5] ht tps :/ / w w w . who ni x. o r g/ wi k i/Physical_Isolation



' ++ return 0 ++ EXIT_CODE=1 ++ cleanup 1 ++ true cleanup... ++ touch /var/run/whonixcheck/whonixcheck_done ++ sync ++ SIGNAL_TYPE=NONE ++ cd .. ++ '[' 1 = '' ']' ++ ex_funct ++ '[' '!' NONE = NONE ']' ++ trap - SIGTERM ++ trap - SIGINT ++ trap - SIGUSR2 ++ maybe_kill_apt_get_update ++ '[' '' = '' ']' ++ return 0 ++ command -v process_killer_helper ++ process_killer_helper +++ type -t error_handler ++ '[' function = function ']' ++ trap error_handler ERR ++ '[' '' = '' ']' ++ return 0 ++ lastpid= ++ process_killer_helper +++ type -t error_handler ++ '[' function = function ']' ++ trap error_handler ERR ++ '[' '' = '' ']' ++ return 0 ++ cleanup_files ++ '[' '' = false ']' ++ '[' -d /tmp/tmp.xYSbUuVJmz ']' ++ rm --recursive /tmp/tmp.xYSbUuVJmz ++ rm --force /var/run/whonixcheck/whonixcheck_running ++ rm --force /var/run/whonixcheck/whonixcheck_waiting ++ local command_v_output_exit_code ++ command_v_output_exit_code=0 ++ command -v output_func ++ '[' 0 = 0 ']' ++ local output_status_exit_code ++ output_status_exit_code=0 ++ output_func_general --identifier whonixcheck --status --messagecli ++ output_func --identifier whonixcheck --status --messagecli ++ '[' -n user ']' ++ '[' '' = true ']' ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --identifier whonixcheck --status --messagecli ++ return 1 ++ return 1 ++ output_status_exit_code=1 ++ true ++ '[' '!' 1 = 1 ']' ++ '[' '!' '' = '' ']' ++ '[' NONE = SIGUSR2 ']' ++ '[' '' = 0 ']' ++ true 'No progress bar open. No need to send progress 100 to close progress bar.' ++ '[' 'whonixcheck | Whonix-Gateway' = '' ']' ++ '[' ' | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017' = '' ']' ++ true --titlex 'whonixcheck | Whonix-Gateway' ++ output_func_cli --titlecli ' | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017' ++ '[' '' = true ']' ++ true 'output_func_cli: injecting --onlyecho.' ++ output_func --onlyecho --titlecli ' | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017' ++ '[' -n user ']' ++ '[' '' = true ']' ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --titlecli ' | Whonix-Gateway | Fri Dec 1 12:23:45 UTC 2017' ++ return 0 ++ '[' '!' NONE = NONE ']' ++ true --messagex --done ++ output_func_cli --messagecli --done ++ '[' '' = true ']' ++ true 'output_func_cli: injecting --onlyecho.' ++ output_func --onlyecho --messagecli --done ++ '[' -n user ']' ++ '[' '' = true ']' ++ /usr/lib/msgcollector/msgcollector --identifier whonixcheck --whoami user --onlyecho --messagecli --done ++ return 0 ++ '[' 1 = '' ']' ++ exit 1

Whitespaced some links to avoid the new users limit.

I also created a test script:

Script

#!/bin/bash

check_virtualizer() {
[ -n β€œ$whonixcheck_virt_detection_tool” ] || whonixcheck_virt_detection_tool=β€œsystemd-detect-virt”

if command -v β€œ$whonixcheck_virt_detection_tool” >/dev/null 2>&1 ; then
whonixcheck_virtualizer_detected=β€œ$(”$whonixcheck_virt_detection_tool" 2>&1)" || true
else
MSG=β€œ

Check Virtualizer Result: $whonixcheck_virt_detection_tool not available. Skipping test.

”
$output_x ${output_opts[@]} --messagex --typex β€œwarning” --message β€œ$MSG”
$output_cli ${output_opts[@]} --messagecli --typecli β€œwarning” --message β€œ$MSG”
fi
echo β€œ$whonixcheck_virtualizer_detected”
if [ β€œ$whonixcheck_virtualizer_detected” = β€œβ€ ] || [ β€œ$whonixcheck_virtualizer_detected” = β€œnone” ]; then
## Not running in a Virtual Machine (or none detected).
echo β€œinside if”
MSG=β€œ

Check Virtualizer Result: No Virtualizer detected, probably running on bare metal, continuing.

”
if [ β€œ$verbose” -ge β€œ1” ]; then
$output_x ${output_opts[@]} --messagex --typex β€œinfo” --message β€œ$MSG”
$output_cli ${output_opts[@]} --messagecli --typecli β€œinfo” --message β€œ$MSG”
fi
fi
echo β€œ$MSG”
}

It works as expected, nvm.