#!/bin/bash
ssh -t $SSH "
some
commands
"
Откуда приходит сообщение «соединение с xx.xxx.xx.xxx закрыто»? Я не могу остановить это даже с результатом = ssh ...
если вы добавите -o LogLevel=QUIET
в командную строку SSH, это сообщение должно исчезнуть:
ssh -o LogLevel=QUIET -t $SSH "
some
commands
"
Вы также можете добавить его в файл ~/.ssh/config
в виде строки с надписью LogLevel QUIET
Это исходит от SSH. Вы видите это, потому что вы дали ключ -t
, который заставляет SSH выделить псевдотерминал для соединения. Традиционно SSH отображает это сообщение, чтобы прояснить, что вы больше не взаимодействуете с оболочкой на удаленном хосте, что обычно является вопросом, когда SSH имеет выделенный псевдо-терминал.
Как упоминала Фрэн, это происходит из-за ключа -t. Вы можете скрыть сообщение, добавив:
2> /dev/null
Ваш код будет выглядеть так:
#!/bin/bash ssh -t $SSH " some commands " 2> /dev/null
Это перенаправляет STDERR в /dev /null. Помните, что все сообщения об ошибках, которые могут появиться, также будут перенаправлены в /dev /null и поэтому будут скрыты от просмотра.
Не могу прокомментировать ответ Фрэн, который является правильным.
Просто хотел добавить, что ваш фрагмент кода выглядит как скрипт, что означает, что вы, скорее всего, вызываете удаленный контент, который не зависит от интерактивного экрана (в отличие, например, от mc
или top
которые не имеют смысла без клавиатуры и экрана - поэтому вы будете не использовать эти программы в скриптах).
Так что вам явно лучше без терминала. Это означает, что замените флаг -t на флаг -T. Более длинный синтаксис, который я предпочитаю в скриптах, чтобы сделать их более понятными и читаемыми, будет: -o 'RequestTTY no'
против -o 'RequestTTY yes'
.
И в то же время забудьте про решение -o LogLevel=QUIET
предложенное Лео - оно также скрывает сообщения об ошибках. Если ваш сценарий сталкивается с какими-то неблагоприятными обстоятельствами, вы не поймете, что пошло не так. В сценариях вы, вероятно, захотите использовать -o LogLevel=ERROR
- это подавляет баннер удаленного компьютера, если он есть, но пропускает сообщения об ошибках.