Bash 脚本 - 自动输入用户输入(密钥库的密码)

Iva*_*o18 5 shell bash centos shell-script user-input

我知道以前有人问过这个问题,但几乎只提供了解决方法。还没有解决我的问题。

我正在尝试创建自己的.sh文件,该文件将生成一个apk. 使用 jarsigner 后,它要求输入我的密钥库的密码。现在这部分的安全性对 atm 不起作用,所以我只是想知道,我怎样才能(删除我的.keystore文件的密码或以纯文本形式输入密码)实现这一目标?

完整命令:

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore keyForApk.keystore 
  apk/android-release-unsigned.apk alias_name
Run Code Online (Sandbox Code Playgroud)

然后它提示我以下内容:

Enter Passphrase for keystore:
Run Code Online (Sandbox Code Playgroud)

现在我可以通过哪个命令在 jarsigner 命令之后动态输入它?

anl*_*lar 3

您可以使用Expect实用程序来自动输入密码。创建启动器脚本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"
Run Code Online (Sandbox Code Playgroud)

然后chmod +x auto-jar.sh使其可执行并使用./auto-jar.sh. 或者运行为expect auto-jar.sh.