下面是我想要自动化的与cryptsetup的简单交互:
cryptsetup luksFormat /dev/loop20
WARNING: Device /dev/loop20 already contains a 'crypto_LUKS' superblock signature.
WARNING!
========
This will overwrite data on /dev/loop20 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/loop20:
Verify passphrase: 以下expect脚本尝试执行此操作:
spawn cryptsetup luksFormat /dev/loop20
expect "yes): " { send "YES\n" }
expect ": "
send "passphrase\n"
expect ": "
send "passphrase\n"
expect eof虽然正确发送了YES,但它在密码提示符处挂起。除了在send命令中使用\n之外,我还尝试使用\r。
相同的脚本结构适用于ssh密码或sudo密码提示,所以我有点搞不懂这里的不同之处。我知道有一些“无预期”的方法,例如,echo passphrase | cryptsetup ...,但我真的很想了解潜在的问题以及是否有解决方案。
发布于 2021-04-19 16:08:58
meuh的评论是解决方案:我需要在密码提示符后等待一段时间。
所以这是可行的:
spawn cryptsetup luksFormat /dev/loop20
expect "yes): " { send "YES\n" }
expect ": "
sleep 1
send "passphrase\n"
expect ": "
sleep 1
send "passphrase\n"
expect eof谢谢!
https://stackoverflow.com/questions/67146611
复制相似问题