我正在使用 fabric 进行一些系统管理自动化,我希望能够监控给定机器上需要升级的软件包数量。这是我首次登录机器时可以看到的相同信息,即此部分:
35 packages can be updated.
22 updates are security updates.
是否有一个我可以运行的命令(最好不用sudo
)来提供这些信息?
我已经看过 apt-python 绑定,但它们似乎有很高的学习曲线,并且它们似乎也发生了很多变化——我想要一些至少可以像 lucid 一样工作的东西,而不需要在不同的 Ubuntu 版本上做不同的事情。
答案1
要获得该输出,您可以使用命令
sudo /usr/lib/update-notifier/update-motd-updates-available
或者,如果你不想使用sudo
,
cat /var/lib/update-notifier/updates-available
解释
该login
应用显示在文件中找到的输出/etc/motd
,这是一个符号链接/var/run/motd
。
mounted-varrun
最后一个文件由服务(参见)更新/etc/init/mounted-varrun.conf
,调用中的所有脚本/etc/update-motd.d/
,特别是
/etc/update-motd.d/90-updates-available
进而调用脚本
/usr/lib/update-notifier/update-motd-updates-available
该脚本执行各种操作,最后将输出写入文本文件
/var/lib/update-notifier/updates-available
编辑
关于问题的重启部分,运行此命令
/usr/lib/update-notifier/update-motd-reboot-required
如果不需要重新启动,则不会有任何输出。
答案2
为什么你不能运行它?
/usr/lib/update-notifier/apt-check --human-readable
这就是 /usr/lib/update-notifier/update-motd-updates-available 收集信息的操作,至少在我使用的 Ubuntu 版本(12.10)中是这样的。
答案3
当我在最小 docker 容器内搜索用于检查更新的脚本方法时,我发现了一条注释/usr/lib/update-notifier/apt-check
:
apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst
这允许脚本更新检查,而无需安装程序update-notifier-common
包
答案4
您可以使用check_apt
来自monitoring-plugins-basic
(纳吉奥斯),其优点是根据是否有可用更新来获取不同的返回代码:
$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1
返回代码含义如下:
0
--> 没有可用于升级的软件包1
--> 非关键软件包可供升级2
--> 有重要更新可用
参考: