Linux 使用ssh运行带有参数的远程bash脚本

Linux 使用ssh运行带有参数的远程bash脚本,linux,bash,shell,ssh,tput,Linux,Bash,Shell,Ssh,Tput,我无法使用参数运行位于“admin”服务器上的远程shell脚本 ssh koliwada@admin "~/bin/addautomaps $groupentry $homeentry $ticket" “groupentry”和“homeentry”如下所示 user1:*:52940:OWNER-user1 user1 -rw,intr,hard,rsize=32768,wsize=32768 basinas01:/ifs/basinas01/home/& 该脚本位

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

ssh koliwada@admin "~/bin/addautomaps $groupentry $homeentry $ticket"
“groupentry”和“homeentry”如下所示

user1:*:52940:OWNER-user1
user1       -rw,intr,hard,rsize=32768,wsize=32768 basinas01:/ifs/basinas01/home/&
该脚本位于管理服务器中的~/bin/addautomap

我看到了错误

tput: No value for $TERM and no -T specified
我还看到参数的传递也不正确。
我也尝试过使用“ssh-t…”,但这不起作用。

以相反的顺序(或从最严重到最不严重)回答您的问题

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

也就是说,您正在生成一个扩展了变量的字符串,但没有任何信息告诉远程系统不要拆分空间上的扩展值

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

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


tput
“问题”可能只是一个警告,如果您不关心彩色化/样式化/等,
tput
可能用于创建的输出,则可以忽略该警告。您还可以尝试在远程端为
$TERM
强制一个值,如
ssh。。。“export TERM=dumb;…”
或类似的方法使其静音。

以相反的顺序(或从最严重到最不严重)回答您的问题

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

也就是说,您正在生成一个扩展了变量的字符串,但没有任何信息告诉远程系统不要拆分空间上的扩展值

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

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


tput
“问题”可能只是一个警告,如果您不关心彩色化/样式化/等,
tput
可能用于创建的输出,则可以忽略该警告。您还可以尝试在远程端为
$TERM
强制一个值,如
ssh。。。“export TERM=dumb;…”
或类似的方法使其静音。

试试这个:
sshkoliwada@adminscript-c“~/bin/addautomaps$groupentry$homeentry$ticket”/dev/null
@anishsane:你能解释一下你答案背后的理由吗?我的错。从
manscript
脚本的内部外壳始终是交互式的。因此,作为
-c
传递的命令在交互式shell中运行。信息量大!因此,失败的原因是没有正确读取bash
env
变量?您需要引用远程shell命令中的参数以及ssh的整个字符串。关于类似的问题,请参见我的答案。这应该可以解决“正确通过”的问题(假设我理解你的意思)。至于
tput
问题,如果您不关心彩色化/样式化/etc,
tput
可能用于创建的输出,您可能会忽略该警告。请尝试以下操作:
sshkoliwada@admin脚本-c“~/bin/addautomaps$groupentry$homeentry$ticket”/dev/null
@anishsane:你能解释一下你答案背后的理由吗?我的错。从
manscript
脚本的内部外壳始终是交互式的。因此,作为
-c
传递的命令在交互式shell中运行。信息量大!因此,失败的原因是没有正确读取bash
env
变量?您需要引用远程shell命令中的参数以及ssh的整个字符串。关于类似的问题,请参见我的答案。这应该可以解决“正确通过”的问题(假设我理解你的意思)。至于
tput
问题,如果您不关心
tput
可能用于创建的彩色化/样式化/等输出,您可能会忽略该警告。