Certbot: 0.9.1 fails in non-interactive use (pythondialog, error opening terminal)

Created on 19 Oct 2016  ·  3Comments  ·  Source: certbot/certbot

Debian8 auto-updated box using the auto-updating script, I have a shell script + cronjob to update my cert @weekly
Oct 02 it ran successfully, Oct 09 it updated 0.8.1 -> 0.9.1 and died.

Upgrading certbot-auto 0.8.1 to 0.9.1...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...
Installation succeeded.
An unexpected error occurred:
Bug in pythondialog: expected an empty output from u'infobox', but got: u'Error opening terminal: unknown.\n'Please see the logfile 'certbot.log' for more details.

Logfile output:

2016-10-15 21:01:18,381:DEBUG:certbot.main:Root logging level set at 20
2016-10-15 21:01:18,420:DEBUG:certbot.main:Exiting abnormally:
Traceback (most recent call last):
  File "/root/.local/share/letsencrypt/bin/letsencrypt", line 11, in <module>
    sys.exit(main())
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/main.py", line 749, in main
    setup_logging(config)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/main.py", line 653, in setup_logging
    logger.info("Saving debug log to %s", log_file_path)
  File "/usr/lib/python2.7/logging/__init__.py", line 1160, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python2.7/logging/__init__.py", line 1279, in _log
    self.handle(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 1289, in handle
    self.callHandlers(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 1329, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 757, in handle
    self.emit(record)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/log.py", line 64, in emit
    self.width + self.PADDING_WIDTH)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/dialog.py", line 2675, in infobox
    kwargs)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/dialog.py", line 1765, in _widget_with_no_output
    widget_name, output))
PythonDialogBug

My main box is using the Debian-shipped binary package (0.8.1), so that's still functional, but my home box got hit, since I implemented it earlier (before Debian provided the package) - I imagine other users are probably also afflicted, but they might not have noticed. I certainly didn't for over a week.

Shell script in question:

#!/bin/sh
/letsencrypt/letsencrypt-auto certonly --webroot --renew-by-default -w /var/www/git-ssl-proof/ -d git.nikomo.eu
systemctl reload nginx

I'm too lazy to fix the problem for real, so I'm just going to switch to the Debian package, but I reckon other people might also get bit by this.

Most helpful comment

You can solve this problem by adding either -n/--noninteractive/--non-interactive or -q/--quiet to the command line. In our documentation, we recommend using --quiet when running the command non-interactively with systemd or cron.

All 3 comments

You can solve this problem by adding either -n/--noninteractive/--non-interactive or -q/--quiet to the command line. In our documentation, we recommend using --quiet when running the command non-interactively with systemd or cron.

Due to problems like this (as well as other motivating factors), we have completely removed dialog from the project so errors like this will be impossible in our future releases.

Well it's appening with certbot-0.9.3-r0 from armhf/Alpine.

certbot certonly \
    --domain $DOMAIN  \
    --email $EMAIL  \
    --authenticator standalone  \
    --agree-tos

--non-interactive fix the problem but it should not crash.

Was this page helpful?
0 / 5 - 0 ratings