commands
está en desuso y debe reemplazarse con llamadas subprocess
. Un reemplazo para commands.getoutput()
essubprocess.Popen().communicate()
:
import subprocess
import shlex
command = shlex.split('/bin/ls -l -a -h')
process = subprocess.Popen(command, stdout=subprocess.PIPE)
stdout, stderr = process.communicate()
bandit
probablemente seguirá generando un problema de baja gravedad porque todavía usa subprocess
, que no es seguro en sí mismo como cualquier cosa que invoque un shell, pero esto es inevitable. Vea la advertencia restante como un recordatorio sobre una posible inseguridad en su código -dependiendo de lo que realmente esté llamando en un shell, debe hacer la verificación usted mismo -¿es un comando codificado en una constante de cadena, o un entrada del usuario, o algo variable dependiendo del código de llamada? En cualquier caso, siempre se aconseja hacer la higienización,Python tiene el módulopipes
para eso.
Предположим, что исходный файл содержал:
$ cat file
managedScripts.Rel_Tag_St_bit("${env.templo_directory}/version.txt")
methods.mavenWithGoals("deploy -DaltDeploymentRepository=)
Вы можете изменить его с помощью:
$ sed -e '/Rel_Tag_St_bit/a\'$'\nmethods.mavenWithGoals("mvn so:s -f abc/pom.xml")\n' file
managedScripts.Rel_Tag_St_bit("${env.templo_directory}/version.txt")
methods.mavenWithGoals("mvn so:s -f abc/pom.xml")
methods.mavenWithGoals("deploy -DaltDeploymentRepository=)
То есть используется оболочка (bash,ksh,zsh )C -строки $'...'
для введения новых строк.