
Я пытаюсь создать программное обеспечение для дешифрования для моего NAS, чтобы оно автоматически монтировало все диски и дешифровывало их.
Но мне нужно знать, sudo cryptsetup luksOpen /dev/blahblahblah dev0
существует ли он после попытки его открыть.
Как это обнаружить в Bash? Я пробовал:
if [ -e /dev/mapper/dev0 ]; then
Но это, похоже, не сработало. Есть у кого-нибудь идеи?
Вот весь код:
fail="true"
LUKS_PASSWORD1=""
while [ $fail="true" ]; do
echo -n " Password > "
read LUKS_PASSWORD1
echo "";
for dev in "${!devs[@]}"; do
echo "Opening ${devs[$dev]} to $dev"
echo $LUKS_PASSWORD1 | sudo cryptsetup luksOpen $dev ${devs[$dev]} -d - &
done;
wait
if [[ -e /dev/mapper/dev0 ]]; then
[[ -e /dev/mapper/dev0 ]] && echo "true"
ssh -i /home/user/.ssh/another-machine [email protected] -t 'play "/images/voices/Shuuten Douji/databasesunlocked.mp3"; wait; exit;';
fail="false"
else
ssh -i /home/user/.ssh/another-machine [email protected] -t 'play "/images/voices/Shuuten Douji/that was incorrect, but please try again.mp3"; wait; exit;';
fi
done
решение1
Пытатьсяtest -e /dev/mapper/dev0 && run_some_command
Было бы полезно, если бы вы показали, что было после then
и почему это не удалось.
решение2
Как ни странно, все заработало, даже после 10 часов биения головой о стену, когда я добавил вторую скобку в оператор IF.. Так что да, лол. Спасибо всем!