web-dev-qa-db-fra.com

Erreur paysage 16.06 security_update_db.sh

Je sais que les tâches cron ne fonctionnent pas via le proxy, mais lorsque j'essaie d'exécuter manuellement le fichier security_update_db.sh via la commande décrite ici https://help.landscape.canonical.com/LDS/ValidationGuide =

Sudo -u landscape bash -x /opt/canonical/landscape/scripts/update_security_db.sh

Le fichier est téléchargé, mais je reçois une erreur lorsque le script se déplace a transféré la partie téléchargée.

+ output='  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100 11.1M  100 11.1M    0     0   355k      0  0:00:32  0:00:32 --:--:--  315k'
+ '[' 0 -ne 0 ']'
+ mv -f /var/lib/landscape/usndb.pickle.bz2-new /var/lib/landscape/usndb.pickle.bz2
+ cd /opt/canonical/landscape
+ set -o pipefail
+ bzcat /var/lib/landscape/usndb.pickle.bz2
+ ./process-usns /dev/stdin
+ pipe_to_syslog update-security-db
+ tag=update-security-db
++ get_logger_arguments
++ echo /dev/log
++ grep -q :
++ '[' -n /dev/log ']'
++ '[' /dev/log '!=' /dev/log ']'
++ echo ''
+ args=
+ logger -s -p user.error -t update-security-db
<11>Feb  3 22:11:31 update-security-db: Traceback (most recent call last):
<11>Feb  3 22:11:31 update-security-db:   File "./process-usns", line 7, in <module>
<11>Feb  3 22:11:31 update-security-db:     canonical.landscape.scripts.usn.run()
<11>Feb  3 22:11:31 update-security-db:   File "/opt/canonical/landscape/canonical/landscape/scripts/batch.py", line 66, in __call__
<11>Feb  3 22:11:31 update-security-db:     code = self.run()
<11>Feb  3 22:11:31 update-security-db:   File "/opt/canonical/landscape/canonical/landscape/scripts/usn.py", line 40, in run
<11>Feb  3 22:11:31 update-security-db:     changeset = update_from_usn_tool_db(db)
<11>Feb  3 22:11:31 update-security-db:   File "/opt/canonical/landscape/canonical/landscape/model/package/usn.py", line 195, in update_from_usn_tool_db
<11>Feb  3 22:11:31 update-security-db:     added=added_package_usns_map, removed=removed_package_usns_map)
<11>Feb  3 22:11:31 update-security-db:   File "/opt/canonical/landscape/canonical/landscape/model/package/client.py", line 38, in query
<11>Feb  3 22:11:31 update-security-db:     return self._query(method, params)
<11>Feb  3 22:11:31 update-security-db:   File "/opt/canonical/landscape/canonical/landscape/model/package/client.py", line 60, in _query
<11>Feb  3 22:11:31 update-security-db:     raise PackageSearchRequestError(loads(error.body)["Error"])
<11>Feb  3 22:11:31 update-security-db:   File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
<11>Feb  3 22:11:31 update-security-db:     return _default_decoder.decode(s)
<11>Feb  3 22:11:31 update-security-db:   File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
<11>Feb  3 22:11:31 update-security-db:     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
<11>Feb  3 22:11:31 update-security-db:   File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
<11>Feb  3 22:11:31 update-security-db:     raise ValueError("No JSON object could be decoded")
<11>Feb  3 22:11:31 update-security-db: ValueError: No JSON object could be decoded
+ '[' 1 -ne 0 ']'
+ alert_admin update_security_db.sh
+ echo 'Error running /opt/canonical/landscape/scripts/update_security_db.sh: 0'
Error running /opt/canonical/landscape/scripts/update_security_db.sh: 0
+ echo 'Check out the syslog output for script update_security_db.sh.'
Check out the syslog output for script update_security_db.sh.
+ exit 1
+ release_lock update_security_db.sh
+ get_distributed_lock update_security_db.sh --release
+ local command=/opt/canonical/landscape/get-distributed-lock
+ /opt/canonical/landscape/get-distributed-lock update_security_db.sh --release
+ rm -f /var/lock/update_security.lock

La sortie de /var/log/landscape-server/security_update_db.log ne fait que répéter cela:

Feb  3 16:11:38 update-security-db ERR  Traceback (most recent call last):
Feb  3 16:11:38 update-security-db ERR    File "./process-usns", line 7, in <module>
Feb  3 16:11:38 update-security-db ERR      canonical.landscape.scripts.usn.run()
Feb  3 16:11:38 update-security-db ERR    File "/opt/canonical/landscape/canonical/landscape/scripts/batch.py", line 66, in __call__
Feb  3 16:11:38 update-security-db ERR      code = self.run()
Feb  3 16:11:38 update-security-db ERR    File "/opt/canonical/landscape/canonical/landscape/scripts/usn.py", line 40, in run
Feb  3 16:11:38 update-security-db ERR      changeset = update_from_usn_tool_db(db)
Feb  3 16:11:38 update-security-db ERR    File "/opt/canonical/landscape/canonical/landscape/model/package/usn.py", line 195, in update_from_usn_tool_db
Feb  3 16:11:38 update-security-db ERR      added=added_package_usns_map, removed=removed_package_usns_map)
Feb  3 16:11:38 update-security-db ERR    File "/opt/canonical/landscape/canonical/landscape/model/package/client.py", line 38, in query
Feb  3 16:11:38 update-security-db ERR      return self._query(method, params)
Feb  3 16:11:38 update-security-db ERR    File "/opt/canonical/landscape/canonical/landscape/model/package/client.py", line 60, in _query
Feb  3 16:11:38 update-security-db ERR      raise PackageSearchRequestError(loads(error.body)["Error"])
Feb  3 16:11:38 update-security-db ERR    File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
Feb  3 16:11:38 update-security-db ERR      return _default_decoder.decode(s)
Feb  3 16:11:38 update-security-db ERR    File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
Feb  3 16:11:38 update-security-db ERR      obj, end = self.raw_decode(s, idx=_w(s, 0).end())
Feb  3 16:11:38 update-security-db ERR    File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
Feb  3 16:11:38 update-security-db ERR      raise ValueError("No JSON object could be decoded")
Feb  3 16:11:38 update-security-db ERR  ValueError: No JSON object could be decoded

J'ai une configuration de proxy et des variables d'environnement configurées avec des informations de proxy ajoutées à/etc/environment à /etc/apt/apt.conf à/etc/wgetrc ainsi qu'à ~/curlrc

Cela m’a permis de télécharger https://usn.ubuntu.com/usn-db/database.pickle.bz2 mais lorsqu’il tente de l’analyser, c’est là qu’il semble échouer. Toute personne capable de surmonter ce problème?

1
Chris C

J'ai trouvé une solution de contournement pour cela. Une fois que les scripts ont téléchargé le https://usn.ubuntu.com/usn-db/database.pickle.bz2 par proxy, le script est redirigé vers le service Web sur l'hôte local HTTP: POST http://localhost:9099/UpdateUsns HTTP/1.1.

Celui-ci échoue sur le proxy car le serveur proxy n'a pas accès à votre interface localhost. La solution consistait à désactiver le proxy uniquement pour cet appel. c'est à dire.

Modifier

/opt/canonical/landscape/canonical/landscape/model/package/client.py

et changer autour de la ligne 56

response = self.fetch(url, post=True, data=data, total_timeout=60")

à

response = self.fetch(url, post=True, data=data, total_timeout=60, proxy="")

acclamations/Thor

1
Thor Olason

Vérifiez si le rabbitmq est correct, car lorsqu’il est arrêté, vous obtenez également l’erreur 111 lorsqu’il tente de traiter le fichier téléchargé.

J'ai eu la même situation quand rabbitmq ne fonctionnait pas correctement et que rabbitmqctl status était visible.

Status of node rabbit@landscape
Error: unable to connect to node rabbit@landscape: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@landscape]

rabbit@landscape:
  * connected to epmd (port 4369) on landscape
  * epmd reports: node 'rabbit' not running at all
                  other nodes on landscape: ['rabbitmq-cli-55']
  * suggestion: start the node

Mais la commande rabbitmqctl start_app ne la démarrait pas et donnait une erreur:

Starting node rabbit@landscape
Error: unable to connect to node rabbit@landscape: nodedown

J'ai trouvé un rapport dans un forum où effacer les journaux de rabbitmq a fonctionné. J'ai essayé ce qui suit:

Sudo service rabbitmq-server stop
Sudo rm -rf /var/log/rabbitmq/*
Sudo service rabbitmq-server start

Après cela, je pouvais rabbitmqctl start_app et le nœud est venu. L'appel manuel du script update_security_db avec Sudo -u landscape bash -x /opt/canonical/landscape/scripts/update_security_db.sh fonctionne maintenant.

0
Kib

Comme solution alternative sans changer de source LDS, définissez (ou ajoutez) localhost sur la variable NO_PROXY dans /etc/environment:

HTTP_PROXY="..."
HTTPS_PROXY="..."
NO_PROXY="localhost"

Les trois variables seront extraites et exportées par /opt/canonical/landscape/scripts/landscape-env.py, auquel le script update_security_db.sh (ainsi que tous les autres scripts de travail cron) fait référence.

(Testé sur le serveur dédié Landscape 18.03.)

0
cflee