Bash 스크립트 - 사용자 입력 자동화(키 저장소 비밀번호)

Bash 스크립트 - 사용자 입력 자동화(키 저장소 비밀번호)

이 질문은 이전에 요청된 적이 있지만 거의 해결 방법만 제공되었다는 것을 알고 있습니다. 아직 내 문제를 해결하지 못했습니다.

jarsigner를 사용한 후 내 키 저장소의 비밀번호를 묻는 메시지가 표시 .sh됩니다 . apk이제 보안의 이 부분이 작동하지 않으므로 어떻게 이를 달성할 수 있는지 궁금합니다(내 파일의 비밀번호를 제거 .keystore하거나 일반 텍스트로 비밀번호를 입력).

완전한 명령:

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore keyForApk.keystore 
  apk/android-release-unsigned.apk alias_name

그런 다음 다음과 같은 메시지가 표시됩니다.

Enter Passphrase for keystore:

이제 jarsigner 명령 다음에 이 명령을 동적으로 입력할 수 있는 명령은 무엇입니까?

답변1

당신이 사용할 수있는예상되는비밀번호를 자동으로 입력하는 유틸리티입니다. 실행 프로그램 스크립트를 만듭니다 auto-jar.sh.

#! /usr/bin/expect

# Wait for finish forever after send password
set timeout -1
# Put your jarsigner command here
spawn jarsigner ...
expect "Enter Passphrase for keystore: "
send "your jar password\r"
# Wait for jarsigner command finish
expect eof
# Return relevant exit code of jarsigner command
# , useful if you want continue next command only after signed successfully with `&&`
foreach {pid spawnid os_error_flag exit_code} [wait] break
exit "$exit_code"

그런 다음 실행 가능 chmod +x auto-jar.sh하게 만들고 ./auto-jar.sh.expect auto-jar.sh

답변2

mysqldump암호를 원하지만 이를 스크립트에 하드코딩하고 싶지 않습니다. 이는 암호를 변경할 때 무엇보다도 유지 관리 관점에서 고통스러울 수 있습니다.

Docker-Compose "비밀" 파일을 사용하여 Git 외부에서 MariaDB 루트 비밀번호를 유지하므로 cat이를 확장 변수에 넣기만 하면 사용자에게 입력하라는 메시지를 표시하지 않고 명령이 실행됩니다.

mysqldump -h192.168.2.2 -p"$(cat /docker-compose-dir/mariadb_root_pswd.txt)" -uroot wordpressDBname > /backupsDirectory/wordpressDBname_`date +%Y%m%d-%H:%M:%S`.sql

이 솔루션은 또한 내 bash 스크립트에서 루트 비밀번호를 유지합니다. Ubuntu 20.04 LTS 사용 및mariadb-client

관련 정보