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.shexpect 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スクリプトでrootパスワードを保持します。 Ubuntu 20.04 LTSの使用とmariadb-client

関連情報