выполнение команды на удаленном хосте ssh перестало работать при запущении в скрипте

Ситуация:
Мой Компьютер работает на Kubuntu 14.04. Я - Администратор Дома Студентов с некоторым Netgear-APs. Идея состоит в том, чтобы иметь сценарий, перезагружающий их всех одним сценарием. (ssh-ключ не возможен),

Проблема короче говоря:
команда ssh на хосте хорошо работает от оболочки. Но не, если выполнено сценарием.

Описание:
У меня есть Сценарий на моем Компьютере: "path/to/localScript"

#!/bin/bash

echo "Hello mister"
reboot

теперь, если я ввожу следующее непосредственно в мою оболочку

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

Я получаю вывод

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

и AP на самом деле перезагрузки! Я попробовал другие команды (как ping)-> все хорошо работали. Теперь я хочу сделать точно то же самое, но в сценарии (таким образом, я могу позже добавить все другие APS также ;)), Таким образом, я попробовал сценарий "rebootThemAll"

#!/bin/bash

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

Я получаю вывод

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

и... ничего больше не происходит. Снова я вижу свою входную подсказку на строке оболочки так остановки сценария. Я также попробовал больше чем 1 AP, чтобы видеть, отменяет ли та ошибка мой сценарий, но это не сделало. Для большего количества APS вывод похожи на это

 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
......

но сценарий не будет работать. Это не показывает "Привет господин", и они не перезагружают..

У кого-либо есть идея?

0
задан 25 June 2015 в 21:12

2 ответа

Я мог решить эту проблему с помощью -T опция "Disable pseudo-terminal allocation". и при помощи scriptfiles без #!/bin/bash строка, поэтому только что запущенная с

echo "check" 
reboot
0
ответ дан 4 October 2019 в 02:15

Попробуйте это:

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

кажется, что команда необходима в случае, когда нет никакого терминала вообще.

(найденный здесь)

1
ответ дан 4 October 2019 в 02:15

Другие вопросы по тегам:

Похожие вопросы: