在ssh中禁止显示“警告:无法访问tty”


0

我有一个简短的简单脚本,它可以编译.c文件并在运行的远程服务器上运行它tcsh,然后将控制权交还给我的机器(这是在学校,我需要我的程序在实验室计算机上可以正常工作,但要对其进行编辑等在我的机器上)。它以这种方式运行命令:

ssh -T user@server << EOF
cd cs4400/$dest
gcc -o $efile $file
./$efile
EOF

到目前为止,它工作正常,但是每次我这样做时都会发出警告:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

我知道从技术上讲这不是问题,但超级烦人。我正在尝试做功课,检查程序的输出等,这使一切变得混乱,我讨厌它。

我在计算机上运行此版本的ssh:

OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012

服务器上的该版本的tcsh:

tcsh 6.17.00 (Astron) 2009-07-10 (x86_64-unknown-linux)

服务器上的此版本的ssh:

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

Answers:


0

tcsh您的脚本中似乎没有什么是特定的,因此请规避它。例:

ssh -T user@server "/bin/bash -ec 'cd cs4400/$dest ; gcc -o $efile $file ; ./$efile'"

健全性检查:“ ;”应替换为&&
斯科特

1
@Scott考虑了这一点,但决定首先保留原始语义。但是您是对的,因此我加了-eset -o errexit),在这种情况下,它几乎相同。
丹尼尔·贝克

0

-TSSH选项禁用本地环境变量的转发。因此,您的TERM变量不存在或未定义,在这种情况下ssh无法分配正确的伪终端(pty),这通常意味着您无法使用命令行完成和命令行编辑控件等。您可以尝试纠正这种情况与: TERM=vt100 ssh -T user@server ...

还要使用set和检查环境变量set -o

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.