Me desculpe se essa é uma pergunta desnecessária, mas eu já pesquisei na internet e, infelizmente, o comando é bastante complexo para minhas relações.
Estou tentando enviar uma senha para um comando sudo para executar um comando com direitos de root:
echo 'PASSWORD' | sudo -S [...]
Isso funciona para mim.
Mas, assim que preciso dos direitos de root para um comando que inclui um pipeline próprio, tenho problemas:
echo 'PASSWORD' | sudo -S printf '%s' "OTHER_PASSWORD" | cryptsetup --batch-mode --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 luksFormat /dev/sd* -
Portanto, tento usar um comando subshell:
echo 'PASSWORD' | sudo -S bash -c 'printf '%s' "OTHER_PASSWORD" | cryptsetup --batch-mode --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 luksFormat /dev/sd* -'
Infelizmente, as vírgulas invertidas não podem ser usadas, pois estão em conflito com elas no comando printf.
Para resolver esse problema, tentei vários colchetes. Este trabalhou:
echo 'PASSWORD' | sudo -S bash -c '(printf '%s' "OTHER_PASSWORD" | cryptsetup --batch-mode --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 luksFormat /dev/sd* -)'
Mas se eu quiser usar uma variável criada anteriormente, chego até mesmo a exportá-los para problemas:
export storage="/dev/sda"
echo 'PASSWORD' | sudo -S bash -c '(printf '%s' "OTHER_PASSWORD" | cryptsetup --batch-mode --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 luksFormat $storage -)'
ERROR: Device - doesn't exist or access denied.
Existe uma maneira fácil de resolver esse problema?