Um problema de citação. Isso é o que acontece:
"sudo /usr/localcw/bin/eksh -c 'cd $DEST; sed -i "/Logmon/ s/^/#/" nrds.cfg'"
^ double quoting starts ends here^ starts anew^ ends^
Por causa disso, sshd no lado remoto é executado:
sudo /usr/localcw/bin/eksh -c 'cd $DEST; sed -i /Logmon/ s/^/#/ nrds.cfg'
eksh fica:
cd $DEST; sed -i /Logmon/ s/^/#/ nrds.cfg
então agora a expressão # 1 para sed é apenas /Logmon/ . Para corrigir isso, você deve evitar as aspas duplas que devem chegar ao lado remoto, assim:
"sudo /usr/localcw/bin/eksh -c 'cd \"$DEST\" && sed -i \"/Logmon/ s/^/#/\" nrds.cfg'"
Existem algumas melhorias extras:
- Também cito
$DESTpara garantir que você recebacd "<local value of $DEST>"no lado remoto, em vez decd <local value of $DEST>. Isso não faz diferença no seu caso particular agora, quando o valor é/usr/local/nrdp/clients/nrds/; mas se você alterou esse caminho para, por exemplo,/foo/bar baz/, então, ele quebraria sua invocação "% de coquetel"cd. -
&&garante quesedseja executado apenas secdfor bem-sucedido (não sei se funciona emeksh, o que quer que seja; no entanto, ele funciona em muitos shells). Se por algum motivocdfalhar,sednão atuará no diretório inicial. Novamente, isso provavelmente nunca vai bater em você, ainda é uma boa prática geral.