Ситуация:
Мой Компьютер работает на 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
......
но сценарий не будет работать. Это не показывает "Привет господин", и они не перезагружают..
У кого-либо есть идея?
Я мог решить эту проблему с помощью -T
опция "Disable pseudo-terminal allocation". и при помощи scriptfiles без #!/bin/bash
строка, поэтому только что запущенная с
echo "check"
reboot
Попробуйте это:
sshpass -p '[MYPASSWORD]' ssh [USER]@[HOST] 'bash -s' < PATH/TO/LOCALSCRIPT
кажется, что команда необходима в случае, когда нет никакого терминала вообще.