我试图编写一个shell脚本,在远程服务器上创建一些目录,然后使用scp将文件从本地计算机复制到远程服务器上。以下是我目前掌握的情况:
[email protected]<&书信电报;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。