2014-08-27 4 views
0

У меня есть сценарий bash, где я использую ssh для подключения к другому серверу и выполнения некоторых команд там. Я нашел некоторые сайты, что ошибка (Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.) - это дружеское сообщение, но мой скрипт bash «застревает». После появления этого сообщения другие команды не выполняются. Другие форумы сказали использовать ssh -t, чтобы подавить сообщение, но оно не работает для меня. Мой код выглядит примерно так:Как избавиться от «отсутствия доступа к tty (Bad file descriptor)» в bash?

. 
. 
. 
stty -echo 
sshpass "pwd" ssh -o StrictHostKeyChecking=no [email protected] 'su -lc "rm -rf tmp"' 2>/dev/null 
stty echo 
. 
. 
. 

Причина, почему я использую stty-echo потому, что мне нужно, чтобы переключить пользователей на корень и пароль отображается на терминале (который я не хочу). Я получаю сообщение об ошибке (Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.) после ввода пароля для root на сервере подключения (ip: 1.1.1.1).

Любые предложения? Дайте мне знать, если потребуется дополнительное объяснение. Благодаря! (Моя версия Баш является GNU Баш версии 3.2.51 (1))

EDIT

Сообщение об ошибке я получаю при удалении 2>/dev/null является:

Warning: no access to tty (Bad file descriptor). 
Thus no job control in this shell. 
stty: standard input: Invalid argument 
+0

С помощью опции '-t' избавиться от сообщения? – arco444

+0

@ arco444 Уже пробовал, не избавляется от проблемы – Alias

ответ

0

Вместо того, чтобы пытаться скрыть пароль, я бы предположил, что вы делаете ssh-соединения без пароля, добавляя свой открытый ключ ssh к целевому идентификатору/серверу. У вас должен иметь ключевую фразу для вашего ключа и использовать ssh-agent для ее предоставления при необходимости.

Смежные вопросы