Bash 安装程序脚本似乎不接受 EOF 输入,而是卡住了

Bash 安装程序脚本似乎不接受 EOF 输入,而是卡住了

我已经在 stackoverflow 上发布了这个问题,并被礼貌地重定向到这个网站。我希望这次我找到了正确的地方 :D

我想自动化我的 Mint 安装。我的 Mint 安装的一个主要部分是使用 LUKS 分区加密整个磁盘。为了能够通过 Yubikey 解锁我的设备,我必须运行以下行:

yubikey-luks-enroll -d /dev/sda3 -s 7

您可以通过安装获得它,sudo apt install yubikey-luks并且它运行正常。但是,使用此处文档运行此命令不起作用。

运行上述命令时,系统会要求我两次输入密码,然后输入 LUKS 分区的密码:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7
setting disk to /dev/sda3.
setting slot to 7.
This script will utilize slot 7 on drive /dev/sda3.  If this is not what you intended, exit now!
Adding yubikey to initrd
Please enter the yubikey challenge password. This is the password that will only work while your yubikey is installed in your computer:
Please enter the yubikey challenge password again:
Please provide an existing passphrase. This is NOT the passphrase you just entered, this is the passphrase that you currently use to unlock your LUKS encrypted drive:

我想使用以下 bash 脚本来自动执行此步骤:

read PART
read -s DISKPWD
read -s PWD1
read -s PWD2

sudo yubikey-luks-enroll -d $PART -s 7 <<-EOF
$PWD1
$PWD2
$DISKPWD
EOF

不幸的是,这只会导致以下输出:

setting disk to /dev/sda3.
setting slot to 7.
This script will utilize slot 7 on drive /dev/sda3.  If this is not what you intended, exit now!
Adding yubikey to initrd

更糟糕的是终端卡住了 - 你可以输入内容,但没有任何效果。只需 CTRL + Z 即可。

使用其他安装程序脚本(例如 Anaconda 的脚本)时我也遇到了同样的问题。

我还尝试在不使用 here-document 的情况下在终端中运行该命令,效果很好。在终端中使用 here-document 运行该命令会导致与上述相同的错误。在 Bash 文件中删除 here-document 后,该命令即可正常工作。

如果有人想知道,我必须使用相同的凭据设置多个 Yubikey,这就是我想要自动化该过程的原因。

stackoverflow 上的一些用户建议这可能是因为安装程序使用终端输出而不是 std-in。如果这是真的,是否有类似 here-document 的终端输入函数?到目前为止我找不到它。

我不是经验丰富的 Linux 用户。也许这只是一个简单的错误或误解。我真的很想知道到底出了什么问题 :)

你好,133U

相关内容