0

我 ssh 进入一台机器。我做了一个发送命令。我想将所有这些输出捕获到一个变量中。

我试过了

output=$(send "rpm -i mypkg.rpm\r")

但它不起作用。任何想法?

错误信息

")": no such variablean't read "(send ""rpm -i mypkg.rpm
while executing
"output=$(send "rpm -i mypkg.rpm\r")"
4

2 回答 2

1

user000001 所述,您有一个空格字符,后面的空格字符=在 bash 中不起作用,因为 bash 会将其解释为带有参数的命令。
但是在 ssh 会话中捕获命令输出有什么意义呢?很可能你想从你的客户端机器上得到它,所以这里是代码:

output=$(ssh myhost 'rpm -i mypkg.rpm')

如果您以这种方式执行某些程序,它们会发疯,那是因为没有终端。-t您可以通过使用带有 ssh 的标志来强制分配伪 tty 。

您已更新您的问题:

"output=$(send "rpm -i mypkg.rpm\r")"- 这里的问题是你的报价。您可以通过混合不同类型的报价来解决这个问题。例如:

"output=$(send 'rpm -i mypkg.rpm\r')"
于 2013-09-10T18:32:31.837 回答
0

在其中创建变量的语法Expect例如是: set output "some content"

要使用最后一个命令运行设置变量output,您可以执行以下操作:

send "rpm -i mypkg.rpm\r"          // send the command
expect '#'                         // wait for the prompt
set output $expect_out(buffer);    // store the output in 'output' variable

我认为这种Bash语法在这里行不通(output=$( command )

于 2017-05-22T20:58:49.223 回答