【问题标题】:Remote SSH commands not working in Linux远程 SSH 命令在 Linux 中不起作用
【发布时间】:2015-05-20 09:21:43
【问题描述】:

不管为什么,我正在尝试编写一个脚本,让我可以向不同的地址发送命令。用户有一个共享密钥,因此无需登录。但这不起作用。

因此,以下将不起作用...

#!/bin/bash
ip=$1
shift
args="'$@'"
cmd="ssh user@$ip -C $args"
output=$($cmd)

如果我使用以下命令执行它:

./myscript.sh 10.0.1.2 /bin/ls -l /var

我收到“ls -l /var: No such file or directory”的错误

如果我运行该命令(ssh user@10.0.1.2 -C '/bin/ls -l /var'),它工作正常。

我做错了什么?这些是相同的 RHEL6 安装。

【问题讨论】:

  • 这是BashFAQ 50。您不能将带引号的命令放入字符串中。这是行不通的。更重要的是,您不需要这样做。如果您希望将参数作为单个单词直接使用"$@",或者使用"$*" 将参数作为单个“单词”获取。
  • 谢谢。它更多的是作为一个测试用例,因为我正在回显 $args 变量。但是感谢您的提醒。

标签: linux bash session ssh remote-execution


【解决方案1】:

显然,引号使 bash 感到困惑。以下作品...

ip=$1
shift
$(ssh -o ConnectTimeout=1 User@$ip "$@")

【讨论】:

    猜你喜欢
    • 2015-07-25
    • 2022-10-19
    • 2011-05-27
    • 1970-01-01
    • 2016-06-10
    • 2022-06-06
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多