1

我正在编写一个 bash 文件来自动化一个过程。为此,我使用以下方法创建了一个新的密码加密密钥:

openssl ecparam -genkey -name secp256k1 | openssl ec -out key-file.pem -aes128 -passout: pass:foobar 

它与密码完美配合foobar。最终,我在脚本中使用了以下命令:

seth account create --nonce=0 --wait keyAliasName 

在 CMD 上它说:

输入密码以解锁 keyAliasName。

我试过了:

echo foobar | seth account create --nonce=0 --wait keyAliasName 

但这说:

错误:读取密码时出错。

如何解决这个错误?谢谢!

4

2 回答 2

1

我认为您的问题与以下主题更相关:如何在 bash 中自动输入,就像在这个线程中讨论的那样。

您正在尝试使用以下行输入密码(对吗?)foobarseth

echo foobar | seth account create --nonce=0 --wait keyAliasName 

seth提示“输入密码以解锁 keyAliasName ”,然后想要读取密码作为用户输入。

所以你可以做的是使用一个expect脚本:

#!/usr/bin/expect
spawn ./your_script.sh
expect "Enter passphrase to unlock keyAliasNam"
send "foobar\n"
interact
于 2018-07-23T12:47:33.440 回答
0

expect如果您的环境中有可用的方法,该方法可能会奏效。此答案扩展了您的问题的原因。这似乎是 Go 中ReadPassword()函数的x/crypto/ssh/terminal实现方式。

其他人也遇到了它:据报道,几周前仍然处于活动状态的 Go 存在问题:x/crypto/ssh/terminal: ReadPassword doesn't work on redirected stdin given in proper ioctl for device #19909。它包括一个简单的复制器,在“你做了什么?”部分。

对于本机bash方法,目前似乎没有任何解决方法,除了修改getPassword()sawtooth-seth函数中的代码以遵循此处提到的方法。

PS:如果您提供了确切的错误输出,则更容易找出问题:Error reading password而不是ERROR Reading the passphrase.

于 2018-07-23T21:57:56.360 回答