问题出在 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
如果我将选项 -q 添加到 ssh 命令中,我会得到
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
'
不再有问题了。