Minha pergunta original está aqui: https://stackoverflow.com/questions/50164551/starting-a-process-with-a-shell-possible-injection-detected-security-issue
Não recebi nenhuma resposta lá, então poste aqui.
Eu só quero saber uma alternativa para
import commands
commands.getoutput()
a biblioteca de comandos.
Existe uma maneira de fazer isso usando algo como os ou subprocess?
commands
está obsoleto e deve ser substituído porsubprocess
chamadas. Uma substituição paracommands.getoutput()
ésubprocess.Popen().communicate()
:bandit
provavelmente ainda apresentará um problema de baixa gravidade porque você ainda usa osubprocess
que não é seguro per se como qualquer coisa que invoque um shell, mas isso é inevitável. Veja o aviso restante como um lembrete sobre uma possível insegurança em seu código - dependendo do que você realmente está chamando em um shell, você deve fazer a verificação você mesmo - é um comando codificado em uma constante de string, ou uma entrada do usuário, ou algo variável dependendo do código de chamada? De qualquer forma é sempre aconselhado fazer a sanitização, Python tempipes
módulo para isso.A maneira "padrão" seria
subprocess
, de acordo com a resposta de hoefling, mas algumas maneiras mais modernas estão disponíveis se você não se importar em usar bibliotecas externas.O emissário foi preterido pelo delegante e aqui está sua aparência:
Eu instalei com:
Deixe o código restante igual, ele funcionará como está