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

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

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

我正在尝试创建自己的.sh文件,它将生成一个apk.使用 jarsigner 后,它会要求输入我的密钥库的密码。现在这部分的安全性并没有发挥作用,所以我只是想知道,我怎样才能(删除我的文件的密码.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“秘密”文件将 MariaDB root 密码保留在 Git 之外,因此我只是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

该解决方案还可以使 root 密码远离我的 bash 脚本。使用 Ubuntu 20.04 LTS 和mariadb-client

相关内容