Python version 2.7 - utilização do comando service no Linux(Ubuntu 15.10)

206 views
Skip to first unread message

Glaucio Fonseca

unread,
Jan 6, 2016, 8:54:48 AM1/6/16
to Python Brasil
Salve galera acompanha a lista tem um tempo porém acredito eu que este seja meu primeiro post rsrsrs.
eu tenho o seguinte código, para a finalização de alguns processos.

#!/usr/bin/python


import os


s
= ["apache2", "bluetooth", "mysql", "postgresql"]


for i in s:
    os
.system("sudo service stop %s " %i)

Porém em minha saída e apresentado o seguinte error:

sudo: nenhum tty presente e nenhum programa de askpass especificado
sudo
: nenhum tty presente e nenhum programa de askpass especificado
sudo
: nenhum tty presente e nenhum programa de askpass especificado
sudo
: nenhum tty presente e nenhum programa de askpass especificado


Fazendo minhas pesquisas pelo google, descobri que posso solucionar este problema editando o arquivo /etc/sudoers ou sudo vizudo,
acrescentando a seguinte linha ao arquivo bastando eu apenar remover o sinal de % da linha caso ela exista, se não existir basta eu adicioná-la:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL

Pelo que entendi desta linha que no caso meu usuário estando no grupo de admin(que neste caso já se encontra),
eu dando um sudo algumprogra ele simplesmente vai passar diretamente sem pedir a senha de root, me corrijam se eu estiver errado.
É por questões de segurança, eu não queria isso acontece-se neste meu pequeno programinha.

Quem puder me ajudar ficarei grato obrigado

Abraços.

Linux - Junior Polegato

unread,
Jan 6, 2016, 9:21:14 AM1/6/16
to python...@googlegroups.com
Olá!

        Ao executar `os.system("sudo service stop %s " %i o sudo precisa perguntar uma senha, isso se não estiver no sudoers autorizado, e como no caso o programa embutido que pergunta a senha é especifico para perguntar essa senha num terminal, onde não mostra os mesmo no terminal, vai dar esse erro.

        Se não estiver rodando num terminal, vai precisar especificar o programa que vai perguntar a senha e rodar com "SUDO_ASKPASS=<caminho/do/programa/que/pede/senha> sudo -A ...", aí tem alternativas como criar um script em bash para fazer "echo <sua_senha>" ou "zenity --password", usar ssh-askpass, colocar no sudores autorização para o usuário e comando específico, como "junior ALL=NOPASSWD: /usr/sbin/service apache2 stop", bom, o caminho é esse...

--

[]'s

Junior Polegato

Glaucio Fonseca

unread,
Jan 6, 2016, 10:00:51 AM1/6/16
to Python Brasil
Obrigado Junior, irei desenvolver e postarei o resultado.

Welton Vaz

unread,
Jan 6, 2016, 10:12:38 AM1/6/16
to python...@googlegroups.com
Prezado amigo,

vc tem que alterar tb a linha que chama os serviços:

#!/usr/bin/python

import os

= ["apache2", "bluetooth", "mysql", "postgresql"]

for i in s:

    os
.system("sudo service 
%s stop" %i)

Nas distribuições baseadas no DEBIAN:

service apache2 stop

como no código acima.


Enviado com MailTrack

Em 6 de janeiro de 2016 13:00, Glaucio Fonseca <glauciof...@gmail.com> escreveu:
Obrigado Junior, irei desenvolver e postarei o resultado.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Welton Vaz de Souza
TWITTER: http://twitter.com/Weltonvaz
BLOG: http://ghandybh.blogspot.com/
FACEBOOK: https://www.facebook.com/weltonv
Cel: (31)9327-0823
***********************************************************

 °v° NÃO USE DROGAS,
/(_)\ USE GNU/LINUX
 ^ ^

Glaucio Fonseca

unread,
Jan 6, 2016, 10:19:57 AM1/6/16
to Python Brasil
Hum Welton bem notado obrigado, nem tinha reparado.

Valeu.

Glaucio Fonseca

unread,
Jan 6, 2016, 10:47:36 AM1/6/16
to Python Brasil
Obrigado Júnior, resolvi como você informou bastou eu executar direto pelo meu terminal linux. Nem se quer testei isso antes rsrsrs
e ao Welton por reparar o pequeno error na sintaxe do comando.

Abraços.

Marcelo Valle (BLOOMBERG/ LONDON)

unread,
Jan 7, 2016, 5:52:18 AM1/7/16
to python...@googlegroups.com
Soh uma coisa, acho uma ma pratica voceh chamar `sudo comando` de dentro do python. 
Voce deveria executar soh `comando`:

    os.system("service %s stop" %i)

Se o usuario que estiver rodando seu script tiver permissoes de acesso, ele conseguirah acessar. Do contrario, o seu script pode rodar com `sudo`.
Colocando `sudo` dentro do comando chamado pelo seu script voceh estah limitando o usuario do seu script, obrigando o mesmo a ter as mesmas permissoes que voceh tem no seu computador.
Entenda: uma coisa eh a configuracao do seu computador outra eh o codigo do seu script. Idealmente, uma nao deveria se misturar com a outra, a nao ser que isso seja explicitamente desejado.

[]s


<< ideas don't deserve respect >>

Glaucio Fonseca

unread,
Jan 10, 2016, 3:08:06 PM1/10/16
to Python Brasil, mvalle...@bloomberg.net
Valeu mano, vou alterar isso.
Reply all
Reply to author
Forward
0 new messages