python permissão negada escrevendo saída para arquivo

0

Eu quero executar um arquivo python em /var/www/html :

sudo python myFile.py

O que funciona bem.

Agora, quero gravar a saída em log.txt .

Então, eu digito:

sudo python myFile.py >> log.txt

No entanto, recebo o seguinte erro:

-bash: log.txt: Permission denied

Embora eu tenha alterado as permissões do log.txt:

sudo chmod u+x log.txt

E ls -l log.txt retorna:

-rwxr--r-- 1 www-data www-data 0 Feb 3 16:04 log.txt

Como posso corrigir isso?

    
por black 03.02.2017 / 19:27

2 respostas

2

O problema aqui sudo python myFile.py >> log.txt é que você executa sudo python myFile.py como root, mas seu shell ainda está sendo executado como seu usuário comum, o que significa que o redirecionamento >> não funcionará se você não tiver permissão para gravar o log.txt

Como George observou corretamente, você deve fazer sudo bash -c "python myFile.py >> log.txt" . Como alternativa, se o seu myFile.py não exigir privilégios de root, você poderá fazer python myFile.py | sudo tee log.txt

    
por Sergiy Kolodyazhnyy 03.02.2017 / 19:55
1

Duas opções que consigo pensar:

  1. sudo bash -c "python myFile.py >> log.txt" ou

  2. sudo chmod u+x myFile.py e, em seguida, sudo ./myFile.py >> log.txt

por George Udosen 03.02.2017 / 19:43