openssh-server가 설치되었는지 어떻게 알 수 있나요?

openssh-server가 설치되었는지 어떻게 알 수 있나요?

저는 설치 스크립트를 사용합니다. 다음은 두 가지 설치 명령입니다.

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시스템에서 명령을 사용할 수 있는지 테스트하는 데 권장되는 방법입니다.

관련 정보