Tengo esta linea que ejecuto desde php
sudo -u db2inst1 -s -- "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
funciona bien en la versión Sudo1.7.2.
Ahora tengo un nuevo servidor con SUSE Linux Enterprise Server 11 (x86_64)
. No había sudo así que lo instalé desde el repositorio (versión Sudo1.6.9p17) Pero sepa que la sintaxis anterior no funciona. arrojabin/bash: /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'": No such file or directory
¿Alguna idea de cómo puedo hacer que esto funcione?
Si ejecuto /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"
la cuenta db2inst1, todo funciona bien.
Respuesta1
Realmente no estoy muy seguro de por qué aparece este error. Tengo un sistema con Sudo 1.8.3 y la documentación dice claramente que algo así como sudo -s "echo hi"
debería funcionar, pero no es así.
La forma en que siempre he hecho esto es hacer lo mismo -s [command]
, pero manualmente.
sudo sh -c 'echo hi'
o en tu caso
sudo -u db2inst1 sh -c "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
Es más compatible, ya que el -s
argumento no siempre ha existido (y desafortunadamente tengo algunas máquinas muy antiguas en funcionamiento).
Editar:
Lo que sucede en el error que recibe es que está buscando un ejecutable que literalmente se nombra db2 "update EDU.contact set MOBILE_PHONE = '123'"
en un directorio llamado /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin
(sí, lo busca db2 connect to PLC;
como un directorio). Esto obviamente no existe.