Variavel em branco [RESOLVIDO]

1. Variavel em branco [RESOLVIDO]

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 21/07/2014 - 07:51h

Bom dia

Estou rodando um script que obtem um valor numa variavel que e atribuido ao executar o sshpass. Rodo ele como root e tbm www-data dando um su no termial e funciona normalmente o valor da variavel vem. Mas quando executo ele em cgi pela web a variavel fica vazia sendo que outras variaveis aparecem normal na pagina so nao aparece a desse comando e nao da erro algum no /var/log/apache/error.log
Segue script

#!/bin/bash
echo Content-type: text/html
echo

VALOR=$(sshpass -p 1212 ssh -o StrictHostKeyChecking=no admin@10.100.110.1 ':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]')

cat <<FIM

<body>
<html>
<h1> valor da variavel: $VALOR</h1>
<br>
</body>
</html>

FIM



  


2. Re: Variavel em branco [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 21/07/2014 - 09:48h

Para retornar a saida de uma "pergunta" é recomendavel usar nomeVariavel=`AkiVaiAsCoisas`
Ex:

pastaAgora=`pwd`

echo "Voce esta na pasta $pastaAgora"

Espero ter ajudado

Te +



3. mais testes

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 21/07/2014 - 10:14h

fiz mais uns testes aqui e conclui que: quanto o comando que esta sendo executado na variavel $VALOR retornar rapido da certo. Mais esse comando ai pesquisa alguma coisa la dentro atraves do ssh que as vezes demora para responder pois tem muitos itens, ai a variavel fica em branco mais quando o tem pouco itens no equipamento ai sim volta rapido e da certo

Sera que tem um jeito da variavel esperar mais tempo o resultado ? Isso so acontece quanto executo via web
atravez de cgi no console sempre da certo.






4. Re: Variavel em branco [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 21/07/2014 - 10:45h

ricardo.ron escreveu:

Bom dia

Estou rodando um script que obtem um valor numa variavel que e atribuido ao executar o sshpass. Rodo ele como root e tbm www-data dando um su no termial e funciona normalmente o valor da variavel vem. Mas quando executo ele em cgi pela web a variavel fica vazia sendo que outras variaveis aparecem normal na pagina so nao aparece a desse comando e nao da erro algum no /var/log/apache/error.log
Segue script

#!/bin/bash
echo Content-type: text/html
echo

VALOR=$(sshpass -p 1212 ssh -o StrictHostKeyChecking=no admin@10.100.110.1 ':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]')

cat <<FIM

<body>
<html>
<h1> valor da variavel: $VALOR</h1>
<br>
</body>
</html>

FIM



Não tem por quê apontar erro no log de erros do Apache: ainda que o comando executado pelo SSH falhe, o script, em si, não vai falhar, podendo no máximo ter uma variável com valor diferente do que você esperava.

Não sei que comandos são esses que você está passando para o SSH. Não tem cara de comando do shell. O que você especificou como shell do usuário "admin" na máquina 10.100.110.1?

Por fim, por que usar o sshpass? Você não pode fazer a autenticação com chave pública do SSH?


5. Re: Variavel em branco [RESOLVIDO]

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 21/07/2014 - 11:50h

Bom dia

é um comando de mikrotik ou seja routeOS que extrai nessa em $VALOR=bound da pra fazer por chaves mais teria que colocar em todos os equipamentos essa chave. Vou fazer aqui agora um teste com chaves c consegui
ja ta blz mais queira fazer mesmo com o sshpass

Vou Postar aqui o resultado no console


root@cache-eserv:/script/cgi# bash -v tt6.sh


#!/bin/bash
echo Content-type: text/html
Content-type: text/html
echo



exec 2>&1
set -x
COMANDO=':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]'
+ COMANDO=':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]'
VALOR=$(sshpass -p senha ssh -o StrictHostKeyChecking=no admin@10.100.110.1 "$COMANDO")
sshpass -p senha ssh -o StrictHostKeyChecking=no admin@10.100.110.1 "$COMANDO")
sshpass -p senha ssh -o StrictHostKeyChecking=no admin@10.100.110.1 "$COMANDO"
++ sshpass -p '1212' ssh -o StrictHostKeyChecking=no admin@10.100.110.1 ':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]'
+ VALOR=$'bound\r'

cat <<FIM

<body>
<html>
<h1> valor da variavel: $VALOR</h1>
<br>
</body>
</html>
FIM
+ cat

<body>
<html>
</h1> alor da variavel: bound
<br>
</body>
</html>

Olhe o resultado no console a variavel VALOR da certo Agora olha no cgi via web

http://192.168.88.10/shell/tt6.sh

+ COMANDO=':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]' ++ sshpass -p 'senha' ssh -o StrictHostKeyChecking=no admin@10.100.110.1 ':put [ip dhcp-server lease get [/ip dhcp-server lease find address=10.100.115.40] status;]' + VALOR= + cat
valor da variavel:

A variavel fica sem valor




6. Re: Variavel em branco [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 21/07/2014 - 11:58h

Voce disse que se esperar ele funciona , entao o comando para isso é sleep

ex



#!/bin/bash

echo "Aguarde 3 Segundos"

sleep 3

echo

echo "Voce Esperou 3 Segundos"



Ve se isso te ajuda em algo

e eu nao consegui acessar aquele link , deve ser porque é seu ip local,sei la,mas tenta com o sleep , pode ajudar :)


7. Re: Variavel em branco [RESOLVIDO]

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 21/07/2014 - 12:07h

Po tentei ja. Mas teria que ser enquanto a variavel resolve
vlw


8. Re: Variavel em branco [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/07/2014 - 12:22h

Amigo pelo o que falou suponho que a conexão está fechando antes do retorno do comando executado remotamente. então uma solução para isso seria usar o comando com uma opção do ssh(cliente) -o que permite deixar a conexão aberta mesmo sem atividade ou colocar dentro do arquivo de configuração do cliente ssh.

A opção é: ServerAliveInternal N. onde N é número em segundos que o client ssh irá enviar pacotes para deixar a conexão aberta. então inclua essa opção no arquivo de configuração do cliente ssh /etc/ssh/ssh_config ou passe via linha de comando.

no arquivo ficaria para enviar pacotes a cada 30 segundos, isso iria manter a conexão aberta tempo o suficiente para os comandos executados no servidor ssh remoto serem finalizados.

ServerAliveInternal 30 



9. Re: Variavel em branco [RESOLVIDO]

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 21/07/2014 - 13:13h

Tentei a sua opcao ssh -o ServerAliveInterval=100 mas continua vindo zerada a variavel. Pelo console da tudo certo tanto como root como www-data mais quando rodo pelo cgi os comandos que demoram nao vem so vem os rapidos e interessante que quando do f5 na pagina vai muito rapido no terminal demora um pouco pra responder o comando. Sera que no cgi é mais rapido e nao pega a variavel ? ja tentei por sleep antes e depois mas o sleep tinha que ser na variavel ela teria que esperar mais um pouco sei la to chutando



10. Re: Variavel em branco [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/07/2014 - 13:40h

ricardo.ron escreveu:

Tentei a sua opcao ssh -o ServerAliveInterval=100 mas continua vindo zerada a variavel. Pelo console da tudo certo tanto como root como www-data mais quando rodo pelo cgi os comandos que demoram nao vem so vem os rapidos e interessante que quando do f5 na pagina vai muito rapido no terminal demora um pouco pra responder o comando. Sera que no cgi é mais rapido e nao pega a variavel ? ja tentei por sleep antes e depois mas o sleep tinha que ser na variavel ela teria que esperar mais um pouco sei la to chutando


O que é cgi?


11. Re: Variavel em branco [RESOLVIDO]

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 21/07/2014 - 13:53h

cgi é common gateway interface e a forma de executar script shell pelo navegador




12. Re: Variavel em branco [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/07/2014 - 14:21h

Cara quanto tempo em média demora para o comando executado no servidor ssh remoto terminar ?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts