遇到bash问题。基本上有两个Redhat节点,WS01和DEV01。我想在DEV01上运行的WS01脚本通过read -p
请求某些信息提示。 Expect没有安装,也不可能(不幸的是)。
当我进入......
ssh root@DEV01 /path/to/script.sh
它返回(BoKS消息)
no terminal authorization granted
如果我......
ssh -tt root@DEV01 /patch/to/script.sh
它返回
TERM: not defined
Illegal variable name
但是,当通过常规ssh会话运行时,脚本运行正常。已检查的字词为echo $TERM
,并且在两个系统上都设置为vt100
。两个系统上的默认shell都是csh
,所以我认为它是默认的。试图在ssh命令中添加调用bash的变体,但所有内容都显示相同的结果。
该ssh命令的其他变体(感觉像I'已经尝试了大部分)不幸的是也给出了相同的结果。
也试过
ssh -tt root@DEV01 "$(< script.sh)"
基本上我可以在互联网上找到的任何东西,但仍然没有。此时我的头撞在墙上。
最终我只需要一种方法来运行本地机器上的bash脚本,到远程主机上,并允许交互式shell在用户提示时输入数据。在此先感谢您的帮助。
答案 0 :(得分:0)
大多数情况下,脚本会尝试操纵显示脚本输出的终端。在您的情况下,是您从中将终端切换到脚本的终端。例如,在终端上重写先前写入的输出。诸如ncurses
之类的Linux软件包带有诸如tput
之类的功能,可让您重写终端输出。
当处理动作要显示进度并在处理完成以显示该动作成功后替换该行时,这将很有用。
示例:假设正在进行文件复制。而且您的终端可能会显示
file copy in progress ...
,该行将在操作结束时被替换或附加到
file copy completed!
您需要从ssh脚本文件中删除终端操作行,或者提供必要的权限(在许多情况下是不可能的)。