我正在尝试运行cryptsetup benchmark --cipher
./proc/crypto
/proc/crypto
我通过执行以下操作获得了列表:
cd ./Documents/; cat /proc/crypto | grep "name" | cut -c 16- | tee ciphers.txt
现在,我正在尝试找到一种方法将每个密码一个接一个地传递到cryptsetup
.我的第一次尝试很简单cat ciphers.txt | cryptsetup benchmark --cipher
,但现在我想我可能需要将我创建的列表转换为 .CSV 文件并通过循环传递它for
。
有没有一种方法可以使用ciphers.txt
我创建的列表,而不需要太多的努力,就可以传递到cryptsetup
?
答案1
您的问题与 dm_crypt 无关。这是一个简单的shell编程问题。
首先,你承诺 虐待猫。而不是cat /proc/crypto | grep "name"
,只需写grep name /proc/crypto
(不需要引号)。
您还可以将 grep 和 cut 组合成一个sed
命令。不一定更容易阅读:sed -n '/^name/s/.*: //p' /proc/crypto
但需要一个命令而不是两个命令。默认情况下-n
阻止sed
打印行。该程序找到以“name”开头的行,并删除该行的第一部分,直到冒号后面的空白。p
确保随后将其打印出来。
现在我们来解答您的问题。我知道该--cipher
选项需要一个密码。这意味着您必须运行cryptsetup benchmark
多次,每个密码运行一次。这需要一个循环,例如:
for cipher in $(<cipher.txt)
do cryptsetup benchmark --cipher "$cipher"
done
由于某些密码名称包含特殊字符(例如括号),因此引号是必需的。
如果您不需要该文件cipher.txt
,您可以一次性完成所有这些操作:
for cipher in $(grep name /proc/crypto | cut -c 16-)
do cryptsetup benchmark --cipher "$cipher"
done