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?
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
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.
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.)