Ситуация: Мой компьютер работает на Kubuntu 14.04. Я администратор дома студентов с некоторыми Netgear-AP. Идея состоит в том, чтобы сценарий перезагружал их все одним сценарием. (ssh-key невозможен)
Ситуация: Команда ssh на хосте отлично работает с оболочкой.
Описание: У меня есть скрипт на моем компьютере: «path / to / localScript»
#!/bin/bash
echo "Hello mister"
reboot
теперь, если я введу следующее непосредственно в my shell
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) -> все работало нормально. Теперь я хочу сделать то же самое, но внутри скрипта (так что я могу позже добавить все остальные точки доступа тоже;)) Поэтому я попробовал скрипт «rebootThemAll»
#!/bin/bash
echo " Rebooting AP 1"
sshpass -p '[MYPASSWORD]' ssh [USER]@[HOST] < PATH/TO/LOCALSCRIPT
Я получаю вывод [ ! d12]
Rebooting AP1
Pseudo-terminal will not be allocated because stdin is not a terminal.
и ... ничего больше не происходит. Снова я вижу приглашение на ввод строки оболочки, чтобы сценарий остановился. Я также попробовал более 1 AP, чтобы проверить, не отменяет ли эта ошибка мой скрипт, но это не так. Для большего количества точек доступа вывод выглядит так:
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
......
, но сценарий не запускается. Он не показывает «Привет, господин», и они не перезагружаются.
У любого есть идея?
Попробуйте следующее:
sshpass -p '[MYPASSWORD]' ssh [USER]@[HOST] 'bash -s' < PATH/TO/LOCALSCRIPT
Кажется, что команда нужна в случае, когда терминал вообще отсутствует.
(найдено здесь)