不会分配伪终端,因为stdin不是终端

我试图编写一个shell脚本,在远程服务器上创建一些目录,然后使用scp将文件从本地计算机复制到远程服务器上。以下是我目前掌握的情况:

[email protected]&lt&书信电报;EOT
DEP_ROOT='/home/matthewr/releases'
日期戳=$(日期+%Y%m%d%H%m%S)
REL_DIR=$DEP_ROOT/“$datestamp
如果[!-d“$DEP_ROOT”];然后
echo“创建根目录”
mkdir$DEP_ROOT
fi
mkdir$REL_DIR
出口
EOT
scp./[email protected]:$REL_DIR
scp./[email protected]:$REL_DIR

无论何时运行它,我都会收到以下消息:

不会分配伪终端,因为stdin不是终端。

剧本永远挂着

我的公钥在服务器上是可信的,我可以在脚本之外运行所有命令。有什么想法吗

尝试ssh-t-t(或简称ssh-tt)强制伪tty分配,即使stdin不是终端

另请参见:终止由bash脚本执行的SSH会话

从ssh手册页:

-T禁用伪tty分配。
-t强制伪tty分配。这可用于执行任意命令
远程机器上基于屏幕的程序非常有用,
e、 g.在实施菜单服务时。多个-t选项强制tty
分配,即使ssh没有本地tty。

发表评论