複数ホスト(Ubuntu)のパッケージ管理でアップデートがあるかをリモートから把握する
非常に適当なので間違ってても知らん。
Ubuntuのみ (Debianにはない) 少なくとも 12.04 LTS には、 /usr/lib/update-notifier/apt-check というツールがあり、"(update);(sec-update)" という組を返す。--human-readableとかちょびちょびオプションがある
(追記: update-notifier-common というパッケージに収録されており、Debian Squeeze, Debian Wheezy, Ubuntu 12.04 LTS での存在は確認した)
すげー適当に書いたPython3で以下のような感じでリストアップできる。呼び出すところ自体よりはPython3自体にハマった。
apt系のツールで一発で出るもんだと思ったんだけど。
(追記: update-notifier-common というパッケージに収録されており、Debian Squeeze, Debian Wheezy, Ubuntu 12.04 LTS での存在は確認した)
すげー適当に書いたPython3で以下のような感じでリストアップできる。呼び出すところ自体よりはPython3自体にハマった。
#!/usr/bin/python3
import subprocess
# Must be Ubuntu machines.
hosts = ['hansode.example.com']
for host in hosts:
p = subprocess.Popen(['ssh', host, '/usr/lib/update-notifier/apt-check'],
stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
(updates, sec_updates) = p.stderr.read().decode('utf-8').split(';')
print('%s: %s updates, %s security updates' % (host, updates, sec_updates))
pass
なお、pub_key を入れておかないともちろんパスワード聞かれる。cronから叩くのならこんなことはしないほうが良いような気がする。apt系のツールで一発で出るもんだと思ったんだけど。