2016-04-28 118 views
1

我无法运行位于具有参数的“admin”服务器上的远程shell脚本。使用ssh参数运行远程bash脚本

ssh [email protected] "~/bin/addautomaps $groupentry $homeentry $ticket" 

“groupentry” 和 “homeentry” 是如下

user1:*:52940:OWNER-user1 
user1  -rw,intr,hard,rsize=32768,wsize=32768 basinas01:/ifs/basinas01/home/& 

脚本位于在管理服务器〜/斌/ addautomaps。

我看到错误,

tput: No value for $TERM and no -T specified 

我也看到了同样的参数不正确传递。 我也尝试过使用“ssh -t ...”但这不起作用。

+0

试试这个: 'ssh koliwada @ admin script -c“〜/ bin/addautomaps $ groupentry $ homeentry $ ticket”/ dev/null' – anishsane

+0

@anishsane:你能解释一下你的答案背后的基本原理吗? – Inian

+1

我的不好。从'man script':'脚本的内壳总是交互式的'。所以以'-c'传递的命令在交互式shell中运行。 – anishsane

回答

0

以相反的顺序回答您的问题(或者最严重至最不严重的问题)。

您的参数(包含空格)没有被正确传递的问题是,当您在本地引用命令字符串时,不是在它们实际由远程计算机运行时引用它们。

这就是你正在生成一个单一的字符串与扩大的变量,但没有任何东西告诉远程系统不要拆分空间上的扩展值。

解决方法是,您需要引用远程shell命令中的参数以及ssh的整个字符串。

我的回答here可能有助于解释一些(这是一个类似的问题)。

tput“问题”可能只是一个警告,如果您不关心彩色/程式化/等等,您可能会忽略它。输出tput可能被用来创建。你也可以尝试在ssh ... "export TERM=dumb; ..."之类的远程端强制$TERM的值,或者类似的东西来使其静音。