饲料需要一些变量

时间:2017-04-05 09:58:45

标签: bash expect

我想在cryptsetup中使用expect。它可以是任何程序而不是cryptsetup。我使用设备,虚拟设备名称和密码提供cryptsetup。

#!/bin/bash 

read -p "Device: `echo $'\n> '`" DEV
read -p "Virtual Device: `echo $'\n> '`" VIRTUAL
read -p "Password: `echo $'\n> '`" PSWD

expect -c exec /sbin/cryptsetup luksOpen /dev/$DEV $VIRTUAL
expect "Enter passphrase for /dev/sdc1:"
send $PSWD

我也尝试过' spawn'但它也不起作用。 任何想法都非常受欢迎!感谢人们。

2 个答案:

答案 0 :(得分:1)

您可以通过使用以下代码代替最后三行代码来克服 expect 依赖性:

echo $PSWD | cryptsetup luksOpen /dev/$DEV $VIRTUAL

答案 1 :(得分:0)

我理解你的问题和评论,你需要这样的东西:

#!/bin/bash 

read -p "Device: `echo $'\n> '`" DEV
read -p "Virtual Device: `echo $'\n> '`" VIRTUAL

/sbin/cryptsetup luksOpen /dev/$DEV $VIRTUAL

mount  /dev/mapper/$VIRTUAL /mnt/$DEV

cryptsetup会询问您密码,您将输入密码。这个mount将运行之后。就这样。并且您不需要期望和任何变量来存储密码。