Executando o script .sh com resultados do Sudo em uma saída diferente

0

Estou vendo um comportamento muito estranho em um script em que estou trabalhando. O que eu tenho é um hook svn que é executado sempre que um commit é feito para um repositório svn. Ele executa um comando sqsh que gera outro script (checkout.sh) e, em seguida, executa o script gerado. Se eu apenas executar o script manualmente, obtenho um resultado assim para o script gerado:

/usr/bin/install -d /opt/www/targetRepo/svn/targetDir1; /usr/bin/svn checkout http://mysite.com/svn/sourceRepo/targetDir1 /opt/www/targetRepo/svn/targetDir1;
/usr/bin/install -d /opt/www/targetRepo/svn/targetDir2; /usr/bin/svn checkout http://mysite.com/svn/srcRepo/targetDir2 /opt/www/targetRepo/svn/targetDir2; 

Observe como cada linha termina com um ponto e vírgula.

Se eu executar o mesmo script, mas prefácio com /usr/bin/sudo -u myname

o script gerado substitui o ponto-e-vírgula no final de cada linha por um pipe '|' personagem. Como resultado, quando o script principal tenta realmente executar esse script gerado, ele falha com um erro de 'fim de arquivo inválido'.

Atualizar Aqui estão os scripts que estou tentando executar:

sudo-hook.sh

#!/bin/bash

/usr/bin/sqsh -o ./checkout.sh -w 999999 -h -S myserver -D mydb -U dbuser -P apassword -C "select distinct '/usr/bin/install -d /opt/www/targetRepo/svn/'+cast(p.id as varchar(32) )+'; /usr/bin/svn checkout http://mysite.com/svn/srcRepo/'+cast(p.id as varchar(32) )+' /opt/www/targetRepo/svn/'+cast(p.id as varchar(32) ) from frame_skus as sku join products as p on p.id=sku.frame_id join frame_colors as c on c.id=sku.color_id join frame_sizes as s on s.id=sku.size_id join value_options as cc on c.color_code_id=cc.id join product_files as img on img.product_id=p.id  and img.color_id=c.id and img.dtype='FRAME_IMAGE' join brands as b on p.brand_id=b.id and b.id=69;"
./checkout.sh

checkout.sh (o script gerado):

/usr/bin/install -d /opt/www/targetRepo/svn/31903; /usr/bin/svn checkout http://mysite.com/svn/31903 /opt/www/targetRepo/svn/31903|
/usr/bin/install -d /opt/www/targetRepo/svn/31904; /usr/bin/svn checkout http://mysite.com/svn/31904 /opt/www/targetRepo/svn/31904|
/usr/bin/install -d /opt/www/targetRepo/svn/31905; /usr/bin/svn checkout http://mysite.com/svn/31905 /opt/www/targetRepo/svn/31905|

Alguém por favor pode me dar uma ideia do que está acontecendo aqui?

    
por pbuchheit 28.04.2016 / 23:26

1 resposta

0

Ok, acho que encontrei o problema. Aparentemente, foi sqsh que estava adicionando aqueles '|' personagens. sqsh tem um sinalizador style (-m) e parece que se você não configurá-lo explicitamente, o padrão é o estilo 'bcp', que adiciona esses caracteres extras.

O que eu ainda gostaria de saber é por que o padrão é um estilo 'bcp' quando executado com o sudo, mas o padrão é outro 'horizontal' quando executado sem o sudo.

    
por 29.04.2016 / 17:46