SSH를 통해 원격으로 명령을 실행하여 "stdin: is not a tty"를 제거하세요.

SSH를 통해 원격으로 명령을 실행하여 "stdin: is not a tty"를 제거하세요.

문제는 Debian Jessie 서버에 있습니다.

아래 예와 같이 SSH를 사용하여 원격 명령을 실행합니다.

#! /bin/bash
ssh root@srv01  << 'STOP_SERVER'
    touch /tmp/testFile
STOP_SERVER

내가 원하지 않는 많은 출력을 얻는다는 점을 제외하면 이것은 잘 작동합니다. 민감한 정보를 별표로 대체하는 예는 다음과 같습니다.

root@home:~# ./test.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
Linux srv01.***.*** 3.14.32-xxxx-grs-ipv6-64 #5 SMP Wed Sep 9 17:24:34 CEST 2015 x86_64 GNU/Linux

server    : ***
ip        : ***
hostname  : srv01.***.***

stdin: is not a tty

스크립트를 다음과 같이 변경하면

#! /bin/bash
ssh root@srv01  << 'STOP_SERVER' >> /dev/null
    touch /tmp/testFile
STOP_SERVER

나는 다음과 같은 결과를 얻습니다.

root@home:~# ./test.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
stdin: is not a tty

SSH 명령에 -q 옵션을 추가하면

root@home:~# ./test.sh
stdin: is not a tty

여기서 다시 뜨는 방법을 몰라 막히게 됩니다 stdin: is not a tty.

출력을 /dev/null로 리디렉션하는 것을 피할 수 있었으면 좋겠습니다. 이것은 내가 보고 싶지 않은 로그인 메시지일 뿐입니다.

답변1

방금 해결책을 찾았습니다.

글을 쓰는 대신

#! /bin/bash
ssh root@srv01  << 'STOP_SERVER'
    date
    touch /tmp/testFile
STOP_SERVER

다음을 쓰세요

#! /bin/bash
ssh root@srv01  '
date
touch /tmp/testFile
'

더 이상 질문이 없습니다.

관련 정보