o comando em execução no host remoto por ssh falha ao executar dentro do script

0

A situação:
Meu computador roda no Kubuntu 14.04. Eu sou o administrador de uma casa de estudantes com alguns Netgear-APs. A ideia é ter um script reiniciando todos eles por um script. (ssh-key não é posible)

O problema em resumo:
O comando ssh no host é executado bem a partir do shell. Mas não se for executado por um script.

Descrição:
Eu tenho um script no meu computador: "caminho / para / localScript"

#!/bin/bash

echo "Hello mister"
reboot

agora se eu digitar o seguinte diretamente no meu shell

    sshpass -p '[MYPASSWORD]' ssh [USER]@[HOST] < PATH/TO/LOCALSCRIPT

Eu recebo a saída

Pseudo-terminal will not be allocated because stdin is not a terminal.
Hello mister
Connection to HOST closed by remote host.

e o AP realmente é reiniciado! Eu tentei outros comandos (como ping) - > tudo funcionou bem. Agora eu quero fazer exatamente a mesma coisa, mas dentro de um script (então eu posso adicionar mais tarde todos os outros APs);)) Então eu tentei um script "rebootThemAll"

#!/bin/bash

echo " Rebooting AP 1"
sshpass -p '[MYPASSWORD]' ssh [USER]@[HOST] < PATH/TO/LOCALSCRIPT

Eu recebo a saída

 Rebooting AP1 
Pseudo-terminal will not be allocated because stdin is not a terminal.

e ... nada mais acontece. Mais uma vez vejo o meu prompt de entrada na linha da shell para que o script pare. Eu também tentei mais de 1 AP para ver se esse erro cancela o meu script, mas isso não aconteceu. Para mais APs, a saída se parece com isso

 Rebooting AP1
Pseudo-terminal will not be allocated because stdin is not a terminal.
 Rebooting AP2
Pseudo-terminal will not be allocated because stdin is not a terminal.
 Rebooting AP3
Pseudo-terminal will not be allocated because stdin is not a terminal.
 Rebooting AP4
......

mas o script não será executado. Não mostra o "Hello mister" e eles não estão reiniciando ..

Alguém tem uma ideia?

    
por derHugo 25.06.2015 / 20:12

2 respostas

0

Eu poderia resolver esse problema usando a opção -T "Desativar alocação pseudo-terminal". e usando o scriptfiles sem a linha #!/bin/bash , então comecei com

echo "check" 
reboot
    
por derHugo 27.07.2016 / 19:28
1

Tente isto:

sshpass -p '[MYPASSWORD]' ssh [USER]@[HOST] 'bash -s' < PATH/TO/LOCALSCRIPT

Parece que o comando é necessário no caso de não haver nenhum terminal.

(encontrado aqui)

    
por Velkan 27.06.2015 / 19:43