¿Cómo ejecutar esto en sudo?

¿Cómo ejecutar esto en sudo?

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 -sargumento 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.

información relacionada