首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >expect脚本无法将密码发送到cryptsetup

expect脚本无法将密码发送到cryptsetup
EN

Stack Overflow用户
提问于 2021-04-18 16:36:01
回答 1查看 59关注 0票数 0

下面是我想要自动化的与cryptsetup的简单交互:

代码语言:javascript
复制
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脚本尝试执行此操作:

代码语言:javascript
复制
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 ...,但我真的很想了解潜在的问题以及是否有解决方案。

EN

回答 1

Stack Overflow用户

发布于 2021-04-19 16:08:58

meuh的评论是解决方案:我需要在密码提示符后等待一段时间。

所以这是可行的:

代码语言:javascript
复制
spawn cryptsetup luksFormat /dev/loop20
expect "yes): " { send "YES\n" }
expect ": " 
sleep 1
send "passphrase\n"
expect ": "  
sleep 1
send "passphrase\n"
expect eof

谢谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67146611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档