openssh-serverがインストールされているかどうかはどうすればわかりますか?

openssh-serverがインストールされているかどうかはどうすればわかりますか?

私はインストールスクリプトを使用します。以下は2つのインストールコマンドです。

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"
}

したがって、デフォルトでインストールされているプログラムを検索し、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"
}

openssh-serverマイコンピュータにインストールされているプログラム名は何ですか?インストールされていることを確認する方法は?

答え1

openssh-serverインストール/usr/sbin/sshd、あなたはそれを見つける必要があります。パッケージは必ずしも同じ名前のバイナリをインストールする必要はなく、パッケージがインストールするバイナリが必ずしもすべてのユーザーのパスにある必要はありません。したがって、明示的に:

[ -x /usr/bin/sshd ] || sudo apt install -y openssh-server

dpkg -Lパッケージがインストールされると、パッケージがインストールされているファイルが何であるかがわかります。次のコマンドを使用してバイナリを一覧表示できます。

dpkg -L openssh-server | grep bin/

apt-file listパッケージを最初にインストールしなくても、パッケージとしてインストールされたファイルが表示されます。

記述子として、「which」を使わないのはなぜですか?それでは何を使うべきですか?スクリプトに役立つ資料を提供します。

答え2

私は何をしますか?:

if ! type -p sshd &>/dev/null; then
    sudo apt-get install -y openssh-server
fi

答え3

以下は、同様のケースについて私が書いた小さなスクリプトを修正したものです。

#!/bin/bash

prompt_confirm() {
    while true; do
            read -r -n 1 -p "${1:-} [y/n]: " REPLY
            case ${REPLY} in
                    [yY]) echo ; return 0 ;;
                    [nN]) echo ; return 1 ;;
                    *) printf " \033[31m %s \n\033[0m" "Incorrect input, please type y (yes) ou n (no)."
            esac
    done
}

# Check if openssh-server is installed
if ! command -v sshd &> /dev/null
then
    echo -e "\nThe openssh-server is not installed."
    if prompt_confirm "Would you like to install it now?";
    then
            apt install -y openssh-server
    else
            echo -e "\nOk, quitting.\n"
            exit
    fi
fi

もちろん、y / nプロンプトなしでチェック部分を使用することもできます。

command -vシステムでコマンドが使用可能かどうかをテストするための推奨方法です。

関連情報