Arrays 刀子ssh cloud.public_ipv4 json数组出现问题

Arrays 刀子ssh cloud.public_ipv4 json数组出现问题,arrays,json,chef-infra,google-compute-engine,knife,Arrays,Json,Chef Infra,Google Compute Engine,Knife,命令: knife ssh name:node-name "some-command" -VV -a cloud.public_ipv4 输出: ....... DEBUG: Chef::HTTP calling Chef::HTTP::JSONToModelOutput#handle_response DEBUG: Chef::HTTP calling Chef::HTTP::JSONInput#handle_response DEBUG: Adding ["node-ip-address"

命令:

knife ssh name:node-name "some-command" -VV -a cloud.public_ipv4
输出:

.......
DEBUG: Chef::HTTP calling Chef::HTTP::JSONToModelOutput#handle_response
DEBUG: Chef::HTTP calling Chef::HTTP::JSONInput#handle_response
DEBUG: Adding ["node-ip-address"]
DEBUG: establishing connection to ["node-ip-address"]:22
WARNING: Failed to connect to ["node-ip-address"] -- SocketError: getaddrinfo: Name or service not known

在GCE中,您可以向一个实例添加几个静态外部IP,这样json输出就像一个数组:

"public_ipv4": ["10.0.0.1", "10.0.0.2", "...."]
如果只有一个外部ip,则应如下所示:

"public_ipv4": ["10.0.0.1"]
因此,ssh命令将“public_ipv4”作为一个数组从json获取

如何删除方括号和引号以成功连接


Thx提前。

您是否已确定节点属性“cloud.public\u ipv4”返回有效的IP地址,其次是它是否可路由

检查值,如下所示:

knife search node "name:node-name" -a cloud.public_ipv4

cloud.public\u ipv4属性的原因是数组,而cloud\u v2.public\u ipv4不是数组,请使用它获取不带[“”]的外部ip地址。解决了

knife ssh name:* "some command" -a cloud_v2.public_ipv4

有胶水吗?。。我认为,括号和引号是错误的原因
DEBUG:建立到[“节点ip地址”]的连接:22
应该是
DEBUG:建立到节点ip地址的连接:22
Couse of cloud.public_ipv4属性是数组,而cloud_v2.public_ipv4不是数组,使用它获取不带[“”]的外部ip地址。解决了<代码>ssh名称:““some command”-cloud_v2.public_ipv4”在GCE中,您可以将多个静态外部ip添加到一个实例中,这样json输出就像一个数组:
“public_ipv4”:[“10.0.0.1”、“10.0.0.2”和“…”
如果只有一个外部ip,它应该是这样的
“public_ipv4”:[“10.0.0.1”]
So
ssh
命令以数组形式从json获取“
public\u ipv4
[“”]