
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 -s
discussã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.