문제는 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
'
더 이상 질문이 없습니다.