Ubuntu 쉘 스크립트에서 답변 지정

Ubuntu 쉘 스크립트에서 답변 지정

그래서 저는 net-tools, OpenSSH, Omada Controller 등과 같이 제게 맞는 표준 소프트웨어를 설치하기 위해 표준 쉘스크립트를 만들려고 합니다. TP Link Omada 컨트롤러 소프트웨어의 표준 .deb를 시작하려면 몇 가지 추가 명령을 올바르게 구성해야 하기 때문입니다. 그 중 하나가 명령입니다.

update-alternatives --config java

이렇게 하면 0, 1, 2의 세 가지 옵션이 있는 프롬프트가 표시됩니다. 답은 2여야 합니다. 항상, 또는 적어도 현재 출시된 버전에서는 그렇습니다.

이것이 현재 컨트롤러 스크립트에 있는 것입니다. 자동으로 설치하는 대신 사용자에게 설치를 원하는지 묻는 메시지를 표시하기 위해 이 모든 것을 "while" 문에 넣을 계획입니다. 모든 것이 원하는 대로 작동하면 printf를 제거할 수 있습니다.

#install omada controller
cd /tmp
apt -y install gdebi-core
apt -y install openjdk-8-jdk
printf ${RED}"----------------------------\n\nPress 2 in this next prompt\n\n----------------------------\n"${NC}
update-alternatives --config java
wget https://static.tp-link.com/2020/202012/20201211/omada_v4.2.8_linux_x64.deb
export JAVA_HOME=/usr/lib/jvm/default-java
echo $JAVA_HOME
gdebi omada_v4.2.8_linux_x64.deb

이것을 쉘 스크립트에 넣는 방법이 있습니까? CLI에서 스크립트가 실행되는 것과 동일한 줄에 답변을 지정하는 방법을 본 적이 있지만 이는 제가 원하는 것이 아닙니다. 완전히 자동화하고 설치 중에 기존 프롬프트 중 일부를 사용하고 언급된 패키지를 설치하라는 프롬프트를 표시하고 싶습니다.

답변1

--configue이 대화형 옵션을 두 가지 자동 옵션, 즉 --query--set: 으로 분할 할 수 있습니다 .

update-alternatives --query <package>

--install대체 패키지를 설치/제거하려면 및 옵션을 사용할 수 있습니다 --remove.

구성된 패키지 표시update-alternatives

우선순위 설정:

update-alternatives --set <package> <PATH>

명령 gdebi은 다음과 같이 실행될 수 있습니다.

LANG=en_US.UTF-8 yes |gdebi omada_v4.2.8_linux_x64.deb

답변2

를 사용하여 프롬프트에 응답할 수 있습니다 expect. Bash에서 다양한 Expect 스크립트를 호출할 수 있고 Bash에서 Expect 명령을 구현할 수 있습니다.

기대가 설치되어 있으면 그것을 얻을 수도 있습니다 autoexpect. 그러면 기대 스크립트가 생성되어 bash 스크립트에서 호출할 수 있습니다.

이를 실행하면 autoexpect update-alternatives --config java프로세스가 정상적으로 시작되고 모든 질문에 답할 수 있습니다. 프로세스가 완료되면 autoexpect는 설치 중에 사용자가 작성한 답변을 사용하여 프롬프트에 자동으로 응답하는 예상 스크립트를 생성합니다.

답변3

글쎄, 나는 성공했다! 아니면 적어도 내가 요청한 부분. 여전히 전체 명령 시퀀스를 테스트해야 하지만 괜찮습니다. 감사합니다! 아래는 내가 지금 가지고 있는 것이고 예상한 것은 예상대로 작동합니다. (말장난 의도)

관련 정보