Eu quero escrever a saída apenas do comando sudo em algum arquivo, ou seja, a linha que recebo no terminal depois de escrever sudo, ou seja
[sudo] password for user:
Se eu usar sudo ls > file
ou sudo ls 2> file
recebo o stdout e stderr respectivamente de todo o comando. Além disso, não consigo usar sudo > file
ou sudo 2> file
, receberei um erro de que devo usar algumas opções ou comandos após o sudo. Então, é possível alcançar?
Com
sudo -S
, osudo
utilitário gravará seu prompt no erro padrão e lerá a senha da entrada padrão. Você pode capturar a saída do erro padrão com2>filename
.Observe que você ainda precisa fornecer um comando para
sudo
executar e que o erro padrão desse comando também seria redirecionado para o arquivo, a menos que você faça algum malabarismo com o descritor de arquivo:Isso redirecionaria a saída de
sudo
parasudo.stderr
enquanto ainda permite que o comando executado grave no fluxo de erro padrão original. Fazemos isso abrindo o descritor de arquivo 3 como uma cópia do erro padrão e, em seguida, gravando explicitamente nesse descritor de arquivo em nosso comando. Para que isso funcione, temos que pedirsudo
para não fechar o descritor de arquivo 3 (o que faria por padrão). Isso pode exigir que um administrador tenha ativado aclosefrom_override
opção nosudoers
arquivo.Observe que provavelmente há preocupações sutis de segurança com o comando acima.