我已经分配了一个项目来编写某种脚本,该脚本将对Linux服务器实现执行完整性检查,以确定在部署源代码之前是否安装了许多依赖项。我需要检查PHP,Nginx,PostgreSQL等应用程序是否存在,并且可能确认这些应用程序的版本号。这些依赖关系是给定源代码能够在服务器上正常运行所必需的。
问题是,由于我使用Linux的新颖性,我不确定如何处理这个问题。我已经对此做了一些研究,并认为解决方案可能是结合使用正在运行的服务列表和命令,例如" chkconfig --list"使用" php -v"等命令ping各个应用程序。然后断言这些结果等同于我正在寻找的东西。
请原谅,如果这没有任何意义,我真的很陌生。那时我想我可以放置这些"测试"在shell脚本内部或者只要需要执行服务器上的测试就可以运行的东西。我将聚合我的断言的真/假结果,并输出是否基于此通过了理智检查。任何指导都将不胜感激。谢谢。
修订:代替shell脚本,我还以为我可以用Python编写它。有没有人知道任何允许查询系统服务的优秀Python库?
答案 0 :(得分:0)
如果您的目标系统由合理的人员管理,则软件将由包装系统管理。在Redhat,Fedora,CentOS或SUSE系统上将是RPM。在任何源自Debian的系统中,它将是APT。
因此,您的脚本可以检查这两个包装系统中的一个。虽然警告您可以在Debian系统上安装RPM,但仅仅存在RPM并不能告诉您系统类型。包也可以不同的名称命名。例如,SUSE的名称与Redhat略有不同。
因此,使用uname
和/或/etc/issue
来确定系统类型。然后,您可以使用rpm -q apache
或dpkg-query -s postgresql
来查找特定的软件包版本。
如果系统由lunatics管理,该软件将手工构建并安装在/ opt或/ usr / local或/ home / nginx中,版本将是未知的。在那种情况下祝你好运。