Como utilizar dialog para pegar a senha do root e em seguida executar um comando?

1. Como utilizar dialog para pegar a senha do root e em seguida executar um comando?

Paulo Henrique Diniz de Lima Alencar
pauloh_alc

(usa Debian)

Enviado em 18/08/2022 - 23:42h

Gostaria de pegar a senha do root utilizando o dialog e logo em seguida executar um comando que necessita da permissão do usuário root.

O comando seria o seguinte:

Step 1 - Pegar a senha através do dailog (estou conseguindo pegar a senha)
Step 2 - Executar a seguinte linha: echo "$password" | echo "$CRON_EXPRESSION" >> /var/spool/cron/crontabs/root

Porém estou com problemas, ao tentar canalizar a "password" no momento que eu executo os comandos presentes do lado direito do pipe "|", obtenho o seguinte
retorno:bash: /var/spool/cron/crontabs/root: Permission denied

Aparentemente a password não está sendo passada corretamente durante a canalização. Agora eu não se é porque estou utilizando esses dois echo(s) seguidos, ou se é por causa de outra coisa.

Adicional: o objetivo desse trecho de código (*) é o seguinte (adicionar uma expressão cron, já montada no final do arquivo /var/spool/cron/crontabs/root )
(*) echo "$CRON_EXPRESSION" >> /var/spool/cron/crontabs/root
Espero que esteja correto ou se existe uma forma mais interessante de fazer isso.


  


2. Re: Como utilizar dialog para pegar a senha do root e em seguida executar um comando?

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 23/08/2022 - 07:59h

Utilize o sudo -S.

Exemplo 1

#!/bin/bash

senha=$(dialog --inputbox "Informe sua senha" 10 25 --stdout)
echo $senha | sudo -S apt-get update


Outra forma, é esperar 1 segundo antes de enviar o comando, usando também o sudo -S.

Exemplo 2

#!/bin/bash

senha=$(dialog --inputbox "Informe sua senha" 10 25 --stdout)
echo $senha | sudo -S sleep 1 && sudo apt-get update


Atenciosamente,
Diego M. Rodrigues


3. Re: Como utilizar dialog para pegar a senha do root e em seguida executar um comando?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/08/2022 - 21:52h

pauloh_alc escreveu:

Gostaria de pegar a senha do root utilizando o dialog e logo em seguida executar um comando que necessita da permissão do usuário root.

O comando seria o seguinte:

Step 1 - Pegar a senha através do dailog (estou conseguindo pegar a senha)
Step 2 - Executar a seguinte linha: echo "$password" | echo "$CRON_EXPRESSION" >> /var/spool/cron/crontabs/root

Porém estou com problemas, ao tentar canalizar a "password" no momento que eu executo os comandos presentes do lado direito do pipe "|", obtenho o seguinte
retorno:bash: /var/spool/cron/crontabs/root: Permission denied

Aparentemente a password não está sendo passada corretamente durante a canalização. Agora eu não se é porque estou utilizando esses dois echo(s) seguidos, ou se é por causa de outra coisa.

Adicional: o objetivo desse trecho de código (*) é o seguinte (adicionar uma expressão cron, já montada no final do arquivo /var/spool/cron/crontabs/root )
(*) echo "$CRON_EXPRESSION" >> /var/spool/cron/crontabs/root
Espero que esteja correto ou se existe uma forma mais interessante de fazer isso.

Boa noite pauloh_alc,
algumas observações:
01 - Essa "canalização":
echo "$password" | echo "$CRON_EXPRESSION"
Não funciona, teste no terminal....

02 - Aqui no Debian, a senha para o "sudo", é a do usuário, e não a do root.
03 - Já que tem a senha do root, log como tal e execute o script.....
------------------------------------------------------------------
Para funcionar:
OIFS="$IFS";
IFS=""; #Se não alterar, vai quebrar os espaços....
txt="Um texto qualquer, para testes";
echo "$senha"|sudo -S bash -c 'echo '$txt' >> arq_root.txt'
IFS="$OIFS"

Testado e funcionando...

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts