当前位置: 首页 > 面试题库 >

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

左丘曦
2023-03-14
问题内容

我试图编写一个Shell脚本,该脚本在远程服务器上创建一些目录,然后使用scp将文件从本地计算机复制到远程服务器上。这是我到目前为止的内容:

ssh -t user@server<<EOT
DEP_ROOT='/home/matthewr/releases'
datestamp=$(date +%Y%m%d%H%M%S)
REL_DIR=$DEP_ROOT"/"$datestamp
if [ ! -d "$DEP_ROOT" ]; then
    echo "creating the root directory"
    mkdir $DEP_ROOT
fi
mkdir $REL_DIR
exit
EOT

scp ./dir1 user@server:$REL_DIR
scp ./dir2 user@server:$REL_DIR

每当我运行它时,我都会收到以下消息:

Pseudo-terminal will not be allocated because stdin is not a terminal.

脚本将永远挂起。

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


问题答案:

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

从ssh联机帮助页:

-T      Disable pseudo-tty allocation.

-t      Force pseudo-tty allocation.  This can be used to execute arbitrary 
        screen-based programs on a remote machine, which can be very useful,
        e.g. when implementing menu services.  Multiple -t options force tty
        allocation, even if ssh has no local tty.


 类似资料:
  • 这一章,我们来讲讲如何使用python做一个伪终端.不过在这之前你需要先了解一点伪终端的意思,还有一些技巧.这个我们会在下面讲到: 伪终端其实就是命令终端(cmd.exe,/bin/sh)通过网络接口反弹给攻击者,或者是新建一个监听端口反弹一个终端给攻击者,值得注意的就是原终端对于标准的输入,输出是不做处理的(stdin/stdout/stderr),同样的反弹的shell也是不对它做处理的.(s

  • 我有一个伪终端从机,它给我一个资源暂时不可用的读/写错误(11)。我一直无法解决这个问题,但直到一周前我还不知道任何事情。所以,我可能漏掉了一些明显的东西。 根据我所了解的情况,这可能是由对非阻塞PTY调用引起的。但是,当我检查从pty的I之后的时,该值显示它是一个阻塞文件描述符。 我甚至尝试将视为非阻塞文件,使用来确定它何时就绪。但是,它只是每次都超时。 那么,如果设置为blocking,为什么

  • 功能介绍 获取终端分析报告数据,包括表格详情数据与趋势数据,所获取数据与 https://mtj.baidu.com 中报告数据一致 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey 此处仅列本接口特有参数,公共参数请参考报告级API说明 获取表格数据 参数名 参数类型 是否必须 描述 method string 是 t

  • 我一直在研究将jython嵌入到我的java程序中,以允许用户用Python编写脚本。但是,我希望将他们的python脚本的输出打印到程序中的java文本框中。但是我找不到嵌入jython引擎输出的方法:

  • 我有一个奇怪的行为。我已经设置了我的“项目解释器”,如果我执行我的脚本,它将与venv一起运行。另一个PyCharm中的集成终端工具不与venv一起运行。pip列表不会返回我venv的python模块。 我已经检查了我的设置,并选中了“激活虚拟环境”框。 如何强制终端与 venv 一起工作?我真的很想将缺少的模块安装到我的 venv 中,而不是其他地方。

  • 我已经为MySQL编写了一个新的docker compose文件 从MySQL: 端口公开 从PHP: 为了从PHP服务器访问MySQL,我添加了行docker-compose.yml作为“MySQL”服务名称 我的文件夹结构 这是命令,我用它来运行码头工人 我的跑步容器列表[Image-2] 这就是我在终端中访问的方式[Image-3] PHP脚本的结果是[图像-4] 这个配置的问题是,当您注意