Como anexar texto ao final de um arquivo como usuário root?

0

Então, estou tentando criar um script de instalação para minhas framboesas. A primeira coisa é fornecer um IP estático.

echo -e "Enter static IP"
read static_ip

echo -e "Enter DNS IP"
read dns_ip

echo -e ""
echo -e "The following settings will be set"

echo -e "\e[32mStatic IP:\e[0m\t${static_ip}"
echo -e "\e[32mDNS IP:\e[0m\t${dns_ip}"

sudo echo "interface wlan0" >> /etc/dhcpcd.conf
sudo echo "static ip_address=${static_ip}/24" >> /etc/dhcpcd.conf
sudo echo "static routers=${dns_ip}" >> /etc/dhcpcd.conf
sudo echo "static domain_name_servers=${dns_ip}" >> /etc/dhcpcd.conf

Mas continua dizendo "permissão negada", fiquei me perguntando o que estou fazendo de errado aqui?

    
por killstreet 08.06.2017 / 21:07

2 respostas

3

O redirecionamento ( >> ) é feito pelo shell; seu sudo afeta apenas echo .

Você pode usar esse truque:

echo "something" | sudo tee -a /output/file > /dev/null

Dessa forma, tee anexará o texto ao /output/file com as permissões adequadas.

EDIT (respondendo comentário): tee foi projetado para passar sua entrada e duplicá-la (em geral: multiplicar). Neste caso, uma cópia vai para o arquivo e a outra viaja ao longo do tubo. Como só precisamos do primeiro, redirecionamos a segunda cópia para /dev/null para que não apareça no console. Tudo o que vai para /dev/null desaparece.

    
por 08.06.2017 / 21:10
0

Você precisa executá-lo em um subshell para fazer o redirecionamento funcionar.

sudo sh -c echo "string" > > arquivo

[da sudo man page: examples]

    
por 08.06.2017 / 21:16

Tags