在bash脚本中模拟keytool密码键盘输入
Simulate keytool password keyboard input in bash script
我有 100 个密钥库,例如"store15.jks" 个文件和一个 X.509 证书 "mycert.pem"。我需要找出 "store*.jks"、"mycert.pem" 被导入的位置。我想做的是制作一个脚本来迭代 100 次并执行命令
keytool -list -keystore store*.jks
我最初想到的是这样的简单脚本:
#!/bin/bash
for((i=1;i<100;i++))
do
cert="mycert.pem"
str="store"$i".jks"
OUTPUT="$(keytool -list -keystore $str)"
echo $OUTPUT
done
唉,在第一次迭代时,系统提示我输入密钥库密码,例如
Enter keystore password: //3 or 4 spaces after colon
这意味着我必须为每次迭代输入密码,并且必须有一种(好得多)更好的方法来执行此操作,即在提示输入密码时模拟键盘输入的方法。浏览 Stack Overflow,我发现了一些使用某些 "Expect" 脚本的示例,但它们要么是初级的,要么就是我无法做到正确,所以我未能组合 /bash 和 /expect。必须说我觉得有点奇怪,因为没有 /bash 技术来处理可能看起来很常见的任务。我将不胜感激任何帮助,更喜欢示例脚本。谢谢!
最简单的方法是使用 -storepass
选项,它允许您在命令行上传递密码。如果出于某种原因对您不起作用(也许您有较早的版本),这里有一个对我有用的 expect
脚本:
expect -c "spawn /usr/bin/keytool -list; expect \"assword:\" { exp_send \"the_password\r\"}; expect EOF {exit}"
首先,非常感谢你们两位,-storepass 非常有用!你让我很开心:)
我现在 post 我更新的解决问题的脚本:
#!/bin/bash
for((i=1;i<100;i++))
do
str="store"$i".jks"
sha="5A:6B:18"
OUTPUT="$(keytool -list -keystore $str -storepass mypass | grep $sha )"
echo $i
echo $OUTPUT
done
原题的答案是store74.jks。希望有一天这对某人有所帮助。
查看public键,现在需要密码;如果您可以输出一个简单的 "ENTER" 击键,那也应该足够了。
例如
echo "" |keytool -list -keystore key.jks
我有 100 个密钥库,例如"store15.jks" 个文件和一个 X.509 证书 "mycert.pem"。我需要找出 "store*.jks"、"mycert.pem" 被导入的位置。我想做的是制作一个脚本来迭代 100 次并执行命令
keytool -list -keystore store*.jks
我最初想到的是这样的简单脚本:
#!/bin/bash
for((i=1;i<100;i++))
do
cert="mycert.pem"
str="store"$i".jks"
OUTPUT="$(keytool -list -keystore $str)"
echo $OUTPUT
done
唉,在第一次迭代时,系统提示我输入密钥库密码,例如
Enter keystore password: //3 or 4 spaces after colon
这意味着我必须为每次迭代输入密码,并且必须有一种(好得多)更好的方法来执行此操作,即在提示输入密码时模拟键盘输入的方法。浏览 Stack Overflow,我发现了一些使用某些 "Expect" 脚本的示例,但它们要么是初级的,要么就是我无法做到正确,所以我未能组合 /bash 和 /expect。必须说我觉得有点奇怪,因为没有 /bash 技术来处理可能看起来很常见的任务。我将不胜感激任何帮助,更喜欢示例脚本。谢谢!
最简单的方法是使用 -storepass
选项,它允许您在命令行上传递密码。如果出于某种原因对您不起作用(也许您有较早的版本),这里有一个对我有用的 expect
脚本:
expect -c "spawn /usr/bin/keytool -list; expect \"assword:\" { exp_send \"the_password\r\"}; expect EOF {exit}"
首先,非常感谢你们两位,-storepass 非常有用!你让我很开心:)
我现在 post 我更新的解决问题的脚本:
#!/bin/bash
for((i=1;i<100;i++))
do
str="store"$i".jks"
sha="5A:6B:18"
OUTPUT="$(keytool -list -keystore $str -storepass mypass | grep $sha )"
echo $i
echo $OUTPUT
done
原题的答案是store74.jks。希望有一天这对某人有所帮助。
查看public键,现在需要密码;如果您可以输出一个简单的 "ENTER" 击键,那也应该足够了。 例如
echo "" |keytool -list -keystore key.jks