paulo1205
(usa Ubuntu)
Enviado em 26/10/2012 - 19:48h
Xi! Eu não tinha reaparado que você nem sequer colocou o comando de invocação do Cobol na mesma linha que o ssh. Desse modo, é claro que não vai funcionar, pois ele ficou para ser executado no lado do cliente.
Nesse caso, a primeira coisa que você deve fazer é transformar seu script para fazer com que a execução se dê na máquina remota.
#!/bin/bash -
# Executa Atualização de clientes na máquina remota.
exec ssh -t 192.168.1.1 sh -c \''cd /cadastro && runcbl slc204'\'
# ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# | | | | |
# | | | | +-- comando a ser executado remotamente
# | | | +-- endereço da máquina remota
# | | +-- opção que forca a alocação de um terminal
# | +-- invocação do cliente ssh
# +-- chamo o ssh atraves de exec porque é o único propósito do script,
# de modo a economizar um processo e ter o código de retorno do ssh
# devolvido diretamente a que tiver chamado o script.
#fim
Como você pode ver, o script acabou se tornando um único comando. Talvez você até ache conveniente transformá-lo em um
alias (sem a palavra-chave
exec , obviamente).
Se isso não for suficiente, pode ser que o problema seja uma das coisas que eu comentei antes. Nesse caso, você deveria criar um script no servidor para se encarregar de preparar o ambiente para a execução do Cobol e, depois de estar tudo certo nesse ambiente, chamar propriamente o Cobol. No lado do cliente, o script só teria de ser alterado para invocar o script criado, em lugar do
sh -c ... que eu mostrei acima.
Um exemplo de script no lado so servidor seria o seguinte.
#!/bin/bash -
# Valores sentados de variável PATH e da máscara de criação de arquivos são
# importantes para a segurança. Todo script deveria preocupar-se com isso.
export PATH=/bin:/usr/bin:/diretorio/de/instalacao/do/cobol
umask 022
# Ajusta outras variávels, se necessário (o exemplo abaixo é puramente
# hipotético -- certamente não faz sentido).
export COBOL_ENVIRONMENT="um valor qualquer"
# Como o diretorio do Cobol foi adicionado a PATH, o runcbl provavelmente
# estará visível para este shell.
cd /cadastro
exec runcbl slc204