Erro no comando zip. [RESOLVIDO]

1. Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 13/06/2013 - 09:56h

Senhores,

Venho novamente com um problema que não sei como resolver. Estou criando um script que irá enviar alguns arquivos por e-mail, usando o "sendEmail" para isso. O shell todo foi criado num servidor, testado exaustivamente, e tudo funcionava corretamente. Vou dar uma breve explicação do que faz:
Lê um arquivo cfg, contendo o nome de uma remessa;
Se o processamento que criou o arquivo cfg ocorreu ok, ele pega dois arquivo, sendo um relatório de inconsistências e um arquivo de retorno, cria um arquivo compactado com estes dois arquivos e envia por e-mail para o cliente;
Caso o processamento resulte em algum erro, ele manda somente o relatório, mas este é enviado zipado.

Este script foi testado num servidor, e estava funcionado corretamente. Porém, quando migrei ele para o servidor de produção, começou a apresentar o erro abaixo:


Estou no zip
/usr/bin/zip ERRO-PROCESSAMENTO-0000003.zip SC593.90001REL.0000003.TXT
zip warning: name not matched: ERRO-PROCESSAMENTO-0000003.zip
zip I/O error: Permission denied
zip error: Could not create output file (/usr/bin/zip.zip)
Passei do zip


O SO de ambos os servidores é o mesmo, um Red Hat 6, sendo ambos máquinas virtuais. O caminho do zip é o mesmo em ambos servidores, e quando rodo o comando zip manualmente, o processo funciona, mas no script não. Mesmo se rodar o script manualmente, ou na cron, o erro é o mesmo.

Nota.: Estou usando um usuário que não é o root.

Alguém tem ideia do que pode estar causando este problema?


  


2. Re: Erro no comando zip. [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 13/06/2013 - 10:05h

Kra, preste atenção nesse erro:


zip error: Could not create output file (/usr/bin/zip.zip)


Ele tá tentando criar o zip dentro d /usr/bin. Coloque o caminho completo do arquivo criado. Ex.:


zip /tmp/arquivo.zip arquivo



3. Re: Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 13/06/2013 - 10:19h

Renato,

Já fiz isso sim, e a mensagem é a mesma. Até usei o comando pwd para ver onde eu estava, e a mensagem é a mesma. Segue abaixo:

Estou no zip
/usr/bin/zip /home/jboss/sisspc/lote/retorno/ERRO-PROCESSAMENTO-0000003.zip /home/jboss/sisspc/lote/retorno/SC593.90001REL.0000003.TXT
zip warning: name not matched: /home/jboss/sisspc/lote/retorno/ERRO-PROCESSAMENTO-0000003.zip
zip I/O error: Permission denied
zip error: Could not create output file (/usr/bin/zip.zip)
Passei do zip


Inclusive, estou tentando colocar o caminho absoluto do relatório, e mesmo assim a mensagem continua.

Edit.: No font, o comando está assim:


echo " " >> $LOG
echo "Local ..: "`pwd` >> $LOG
echo "Estou no zip" >> $LOG
echo "$ZIP $lotedir/retorno/$inconsistencia $lotedir/retorno/$rel" >> $LOG 2>&1
$ZIP $lotedir/retorno/$inconsistencia $lotedir/retorno/$rel >> $LOG 2>&1
echo "Passei do zip" >> $LOG
echo " " >> $LOG



4. Re: Erro no comando zip. [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 13/06/2013 - 11:41h

Tente assim:


zip -b /tmp /caminho/absoluto/arquivo.zip arquivos



5. Re: Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 27/03/2014 - 16:29h

Renato, desculpa não ter respondido antes. Mas tive problemas de saúde, e acabei por deixando de lado este script, até agora.

Bom, fiz todas as alterações conforme sugerido por você. O comando ficou assim:

/usr/bin/zip -b /tmp $lotedir/retorno/$ENTIDADE.zip $rel


Porém, ainda ocorre a mensagem de erro. Veja:


zip warning: name not matched: /home/jboss/sisspc/lote/retorno/SC522.zip
adding: SC522.REGISTROS.0000023.PDF (deflated 8%)
adding: SC522.90001REL.0000023.TXT (deflated 96%)
zip warning: new zip file left as: /tmp/ziYQ1K1b
zip I/O error: Permission denied
zip error: Could not create output file (was replacing the original zip file)


Ele chega a criar o arquivo temporário, porém não consegue gravar.
-rw-------. 1 jboss jboss 28K Mar 27 15:59 ziYQ1K1b

Mudei o caminho do arquivo criado para o /tmp, porém ocorre o mesmo erro.
Se eu faço o comando manualmente, dá certo. Criei um shell para testar, e também deu certo. O que pode ser este problema? Ocorre somente com o zip. O gzip compacta normalmente, porém eu preciso enviar dois arquivos em uma situação.
Alguém sabe o que pode ser o problema?


6. Re: Erro no comando zip. [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 27/03/2014 - 17:07h

Faça assim:

zip -b /tmp /caminho/absoluto/arquivo arquivos 



7. Re: Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 28/03/2014 - 11:11h

Renato,

Estou seriamente pensando em jogar fora este script, e criar um novo. Fiz conforme dito por você, tentei um POG (criei um shell que somente irá gerar o arquivo zipado), e mesmo assim não funciona. O problema, tenho 98% de certeza, está com o script. Se eu faço o comando manualmente, ou num outro script, funciona. Se eu disparo por este script, dá pau.

Bom, o script tem mais de 370 linhas de código (quase um programa), e ficará difícil de dar manutenção nisso dessa forma. Verei uma outra forma.

Valeu pelas dicas. Mas já queimei fosfato demais nisso tudo.


8. Use o Debug

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 28/03/2014 - 15:12h

Na segunda linha do script, coloque a seguinte linha:

set -x

Agora execute o script e poste a saída.


9. Re: Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 29/03/2014 - 10:05h

Ricardo,

O resultado do comando foi:


+ . /home/jboss/sisspc/conf/variaveis_global.cfg
++ homedir=/home/jboss/sisspc
++ export homedir
++ lotedir=/home/jboss/sisspc/lote
++ scriptdir=/home/jboss/sisspc/scripts
++ confdir=/home/jboss/sisspc/conf
++ logdir=/home/jboss/sisspc/log
++ canceldir=/cancelamentos
++ ccfdir=/ccf
++ cartasdir=/emissao-cartas
++ replicadir=/replicacao-spcbr
++ tmpdir=/home/jboss/sisspc/tmp
++ DESTDIR=/home/remessas.sisspc.homologacao
++ tempdir=/home/remessas.sisspc.homologacao/temporario
++ SENDEMAIL=/usr/local/bin/sendEmail
++ ZIP=/usr/bin/zip
++ GZIP=/usr/bin/gzip
++ remetente=remessa@blabla.org.br
++ HOST_REMESSA=sites1.blabla.org.br
++ HOST_REMESSA_SFTP=sisspc-sftp.blabla.org.br
++ export lotedir scriptdir confdir logdir canceldir ccfdir cartasdir replicadir tmpdir SENDEMAIL ZIP GZIP CC remetente HOST_REMESSA
++ date +%Y%m%d%H%M
+ data=201403290958
+ LOG=/home/jboss/sisspc/log/envia_remessa_todos.log
+ DESTDIR=/home/remessas.sisspc.homologacao
+ remetente=homologa.remessa@blabla.org.br
++ date '+%d/%m/%Y - %R'
+ echo '================================================================================
Iniciando envio de retorno e inconsistencias por e-mail em 29/03/2014 - 09:58
================================================================================

Relacao de variaveis global:
LOTEDIR .......: /home/jboss/sisspc/lote
HOMEDIR .......: /home/jboss/sisspc
SCRIPTDIR .....: /home/jboss/sisspc/scripts
CONFDIR .......: /home/jboss/sisspc/conf
LOGDIR ........: /home/jboss/sisspc/log
TMPDIR ........: /home/jboss/sisspc/tmp
SERVIDOR WEB ..: sites1.blabla.org.br
SERVIDOR SFTP .: sisspc-sftp.blabla.org.br
DESTDIR .......: /home/remessas.sisspc.homologacao
SENDEMAIL .....: /usr/local/bin/sendEmail
ZIP ...........: /usr/bin/zip
GZIP ..........: /usr/bin/gzip
REMETENTE .....: homologa.remessa@blabla.org.br'
++ date +%d%m%Y
+ ls /tmp/registros_processados_29032014.csv
+ '[' 0 '!=' 0 ']'
+ echo '========== Verificando Remessas com ERRO!!! =========='
++ cut -d/ -f7-7
++ ls /home/jboss/sisspc/lote/erros/SC522.REGISTROS.0000023
+ for arq in '`ls $lotedir/erros/*.REGISTROS.* |cut -d"/" -f7-7`'
+ cd /home/jboss/sisspc/lote/retorno
+ echo ----------------------------------------
++ echo SC522.REGISTROS.0000023
++ cut -d. -f1-1
+ ENTIDADE=SC522
++ echo SC522.REGISTROS.0000023
++ cut -d. -f2-2
+ SOCIO=REGISTROS
+ '[' REGISTROS == REGISTROS ']'
+ SOCIO=
++ echo SC522.REGISTROS.0000023
++ cut -d. -f3-3
+ REMESSA=0000023
+ TIPO=E
+ txt=SC522.90001REL.0000023.TXT
+ rel=SC522.REGISTROS.0000023.PDF
+ rem=SC522.REGISTROS.0000023
+ nome=SC522_INCONSISTENCIA
++ grep SC522 /home/jboss/sisspc/conf/atu_spcsc_todos.cfg
++ grep -v '^#'
++ grep '^E'
+ str=E#SFTP#SC522##XXXXXX#leandro.jacomini@blabla.org.br##PDF
++ echo E#SFTP#SC522##XXXXXX#leandro.jacomini@blabla.org.br##PDF
++ cut -d# -f2-2
+ SERVER=SFTP
++ echo E#SFTP#SC522##XXXXXX#leandro.jacomini@blabla.org.br##PDF
++ cut -d# -f5-5
+ NOMESOC=XXXXXX
+ DESTINO=leandro.jacomini@blabla.org.br
++ echo E#SFTP#SC522##XXXXXX#leandro.jacomini@fcdl-sc.org.br##PDF
++ cut -d# -f6-6
+ COMPACT=leandro.jacomini@blabla.org.br
+ echo 'Entidade .: SC522 - Socio ....: - Remessa ..: 0000023 - Servidor .: SFTP - Formato ..: - Destino ..: leandro.jacomini@blabla.org.br '
+ case $FORMATO in
+ /usr/sbin/zip -b /home/jboss/sisspc/tmp /home/jboss/sisspc/lote/retorno/SC522_INCONSISTENCIA.zip SC522.REGISTROS.0000023.PDF SC522.90001REL.0000023.TXT
zip warning: name not matched: /home/jboss/sisspc/lote/retorno/SC522_INCONSISTENCIA.zip
adding: SC522.REGISTROS.0000023.PDF (deflated 8%)
adding: SC522.90001REL.0000023.TXT (deflated 96%)
zip warning: new zip file left as: /home/jboss/sisspc/tmp/ziYK8LyN
zip I/O error: Permission denied
zip error: Could not create output file (was replacing the original zip file)
+ rm /home/jboss/sisspc/lote/retorno/SC522.zip
rm: cannot remove `/home/jboss/sisspc/lote/retorno/SC522.zip': No such file or directory
+ echo '============= Verificando Remessas OK!!! ============='
++ cut -d/ -f7-7
++ ls '/home/jboss/sisspc/lote/processados/*.REGISTROS.*'
ls: cannot access /home/jboss/sisspc/lote/processados/*.REGISTROS.*: No such file or directory
++ date '+%d/%m/%Y - %R'
+ echo '================================================================================'





10. Re: Erro no comando zip. [RESOLVIDO]

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 29/03/2014 - 23:19h

A linha do zip -b está errada. Veja se as pastas existem, e se podem ser escritas. Ou tente entrar na pasta antes de dar o comando.


11. Re: Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 31/03/2014 - 16:06h

Ricardo, estou tentando em várias pastas, todas pertencentes ao próprio usuário. O comando está correto, pois se utilizo o mesmo comando em outro script (ctrl C, ctrl V), ou manualmente, o processo funciona. O que parece que está ocorrendo é que o processo que está sendo executado o script não tem permissão para mover o arquivo temporário.
Para resolver este problema, fiz o seguinte, criei um diretório exclusivo para compactar, ele gera o arquivo temporário, e depois eu movo o conteúdo para o local correto. Desse jeito funciona. Eu sei que isso é um POG, mas foi a melhor alternativa. Funfou direitinho.

Valeu pela ajuda, e pela ajuda de todos que se dispuseram a auxiliar.


12. Re: Erro no comando zip. [RESOLVIDO]

Leandro Rubert Jacomini
leojaco25

(usa XUbuntu)

Enviado em 10/06/2014 - 15:38h

Resolvido o problema com uma mutreta. Copio os arquivos para uma pasta, e depois eu movo para o local de destino, usando o "sudo".






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts