【问题标题】:run a remote bash script with arguments with ssh使用 ssh 运行带有参数的远程 bash 脚本
【发布时间】:2016-05-04 03:42:56
【问题描述】:

我无法使用参数运行位于“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/addautomaps。

我看到了错误,

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

我还看到参数也没有正确传递。 我也尝试过使用“ssh -t ...”,但这不起作用。

【问题讨论】:

  • 试试这个:ssh koliwada@admin script -c "~/bin/addautomaps $groupentry $homeentry $ticket" /dev/null
  • @anishsane:你能解释一下你的答案背后的理由吗?
  • 我的错。来自man scriptThe inner shell of script is always interactive。所以作为-c 传递的命令在交互式shell 中运行。
  • 内容丰富!那么失败的原因是bash env 变量没有被正确读取呢?
  • 您需要引用远程 shell 命令中的参数以及 ssh 的整个字符串。有关类似问题,请参阅我的回答 here。那应该解决“正确通过”的问题(假设我理解你的意思)。至于tput 问题,如果您不关心彩色/风格化/等,您可能会忽略此警告。 tput 可能用于创建的输出。

标签: linux bash shell ssh tput


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多