不同发行版的脚本

  • 本文关键字:脚本 linux perl bash
  • 更新时间 :
  • 英文 :


>第一次来这里,我是一个新手,我很抱歉我的英语不好和我的错误:)

我需要使用 perl(或 bash)编写一个安装脚本,但我无法找到一种方法让它在不同的 linux 发行版中运行。特别是,如果尚未安装 httpd 和 mysql,此脚本应安装它们。我可以使用很多if-else,但我想知道是否存在任何自动化系统可以为我做到这一点,即使我找不到任何东西。例:

伪代码

//find httpd if is installed, if not it will try to install
try(service httpd status) ..
else try (service apache2 status)
if (not_installed) { 
   try yum install httpd
   else try apt-get install apache2
   else try pacman ....
}

我在想类似于自动工具的东西。它存在吗?

谢谢大家,再见:)

'$^O'' 变量将报告您使用的操作系统,请参阅文档 perlports 平台部分了解其工作原理

perl 还有一个 Config 模块,它包含了 perl 编译时计算出的所有信息 - 使用类似于 autotools 的方法

配置手册页中的此示例程序显示了哪些信息可用

        use Config;
       if ($Config{usethreads}) {
           print "has thread supportn"
       }
       use Config qw(myconfig config_sh config_vars config_re);
       print myconfig();
       print config_sh();

       config_vars(qw(osname archname));

顺便说一下,puppet 擅长在不同的平台上安装软件包和不同的配置路径。 虽然它使用Ruby,所以可能不适合你的工具链的其余部分

您可以使用 chkconfig --list 来查找已安装的服务。

可以做这样的事情:

#!/bin/bash
chkmysql=`chkconfig --list | grep mysql | wc -l`
chkhttp=`chkconfig --list | grep http | wc -l`
if [[ chkmysql > 0 ]]
then
        echo "mysql is installed"
else
        echo "mysql is not installed"
        #write code to install mysql
fi
if [[ chkhttp > 0 ]]
then
        echo "http is installed"
else
        echo "http is not installed"
        #write code to install httpd service
fi

由于您没有运行一次性安装,因此我假设您处于某种系统管理员角色。 你看过linux kickstarts吗? 启动允许您完全按照您想要的方式获取系统,然后对其进行映像以供以后远程安装。 这样,如果系统出现故障,就可以以最少的外部依赖关系快速恢复。 设置系统的自我修复方法的问题在于,它可能会导致更多问题,然后在无法正常工作时解决。 $0.02<</p>

div class="one_answers">

您可以使用 bash 内置的"type"来找出是否安装了给定的程序; 或具有相同名称的函数/别名。

if ! type PROGRAM >& /dev/null; then...

你可以解析/etc/issue 的内容来获取操作系统的名称。

if grep 'Arch Linux' /etc/issue >& /dev/null; then...

相关内容

  • 没有找到相关文章

最新更新