Como executar isso no sudo?

Como executar isso no sudo?

Eu tenho essa linha que executo do 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 bem na versão Sudo1.7.2.

Agora eu tenho um novo servidor com SUSE Linux Enterprise Server 11 (x86_64). Não havia sudo, então instalei-o do repositório (versão Sudo1.6.9p17) Mas saiba que a sintaxe acima não funciona. Isso jogabin/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

Alguma ideia de como posso fazer isso funcionar?

Se eu executar /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"na conta db2inst1, tudo funcionará bem.

Responder1

Eu realmente não sei por que você está recebendo esse erro. Eu tenho um sistema com sudo 1.8.3 e a documentação diz claramente que algo como sudo -s "echo hi"deveria funcionar, mas não funciona.

A maneira como sempre fiz isso é fazer a mesma coisa -s [command], mas manualmente.

sudo sh -c 'echo hi'

ou no seu 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'\""

É mais compatível, pois a -sdiscussão nem sempre existiu (e infelizmente tenho algumas máquinas muito antigas em funcionamento).

Editar:
O que está acontecendo no erro que você está recebendo é que ele está procurando um executável que é literalmente nomeado db2 "update EDU.contact set MOBILE_PHONE = '123'"em um diretório chamado /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin(sim, ele procura db2 connect to PLC;como um diretório). Isto obviamente não existe.

informação relacionada