如何知道 openssh-server 已经安装了?

Sae*_*ati 0 openssh apt

我使用安装脚本,这是我的两个安装命令:

function InstallChrome()
{
    if ( which google-chrome 1>/dev/null ); then
        echo "Chrome is installed"
        return
    fi

    echo "Installing Google Chrome ..."

    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O chrome
    sudo dpkg -i chrome

    echo "Installed Google Chrome"
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我会搜索安装的程序apt,如果它存在,我不会运行apt命令。

原因是它比让支票快得多apt

然而,这段代码不起作用:

function InstallSshServer()
{
    if ( which openssh-server 1>/dev/null ); then
        echo "SSH Server is installed"
        return;
    fi

    echo "Installing SSH Server ..."

    sudo apt install openssh-server -y

    echo "Installed SSH Server"
}
Run Code Online (Sandbox Code Playgroud)

我的机器上安装的程序的名称是什么openssh-server?如何检查它是否已经安装?

Ste*_*itt 5

openssh-server安装/usr/sbin/sshd,你应该寻找它。软件包\xe2\x80\x99 不一定安装同名的二进制文件,并且它们安装的二进制文件\xe2\x80\x99 不一定位于所有用户\xe2\x80\x99 路径上。因此,明确地:

\n
[ -x /usr/bin/sshd ] || sudo apt install -y openssh-server\n
Run Code Online (Sandbox Code Playgroud)\n

dpkg -L如果安装了给定的软件包,它将告诉您该软件包安装了哪些文件。二进制文件可以列出

\n
dpkg -L openssh-server | grep bin/\n
Run Code Online (Sandbox Code Playgroud)\n

apt-file list将显示包安装的文件,而无需先安装它。

\n

顺便说一句,为什么不使用“which”呢?那该用什么呢?将为您的脚本提供有用的阅读。

\n