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
'

もう質問はありません。

おすすめ記事