首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取特定主机的IP地址

获取特定主机的IP地址
EN

Stack Overflow用户
提问于 2020-05-18 09:30:59
回答 2查看 301关注 0票数 0

我想找到其他系统的IP地址。例如,我正在从服务器wevrs1234执行我的代码,我想要服务器apvrs1234的IP地址并将其存储在变量中。请帮我拿这个。

代码语言:javascript
复制
ip = IPSocket.getaddress(Socket.gethostname)

是我到目前为止的密码。

根据建议,我已经编写了这段代码,但是出错了。请找到我的密码

代码语言:javascript
复制
 publish_vm = node['aem_dispatcher_cookbook']['publish'].to_s
  nodes = search(:node, 'hostname:publish_vm')
 node.default['aem_dispatcher_cookbook']['ip_address'] = 'nodes.first['ipaddress']'

  template node['aem_dispatcher_cookbook']['owner']['home'] + '/conf.d/publish_farm.any' do
    source   'publish_farm.any.erb'
    owner    node['aem_dispatcher_cookbook']['owner']['user']
    group    node['aem_dispatcher_cookbook']['owner']['group']
    mode     '0755'
    variables(
      publish_host: node['aem_dispatcher_cookbook']['publish'],
      publish_port: node['aem_dispatcher_cookbook']['publish_port'],
      ip_addr: node['aem_dispatcher_cookbook']['ip_address']
    )
  end

错误

代码语言:javascript
复制
[2020-05-20T06:09:52-05:00] DEBUG: Node wevrd64501.uhc.com loading cookbook aem_dispatcher_cookbook's attribute file /root/.chef/local-mode-cache/cache/cookbooks/aem_dispatcher_cookbook/attributes/default.rb

================================================================================
Recipe Compile Error in /root/.chef/local-mode-cache/cache/cookbooks/aem_dispatcher_cookbook/recipes/default.rb
================================================================================

SyntaxError
-----------
/root/.chef/local-mode-cache/cache/cookbooks/aem_dispatcher_cookbook/recipes/default.rb:333: syntax error, unexpected tIDENTIFIER, expecting keyword_end
...ess'] = 'nodes.first['ipaddress']'
...                      ^~~~~~~~~

System Info:
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-21 08:02:12

代码语言:javascript
复制
publish_vm = node['aem_dispatcher_cookbook']['publish'].to_s
  ruby_block 'get_ip_from_publish' do
    block do
      Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)
      command1 = "nslookup #{publish_vm} |grep '^Address' | awk '{print $2}'| tail -1"
      command_out = shell_out(command1)
      node.run_state['master_ip'] = command_out.stdout
    end
    action :run
  end

这段代码帮助我获得所需主机的ip地址。

票数 0
EN

Stack Overflow用户

发布于 2020-05-18 18:54:33

你给这个问题加上了厨师和厨师食谱的标签,所以我知道你想在菜谱里得到另一个机器的IP地址。如果另一台机器也在Chef注册,最简单的是search。您可以通过某些属性搜索Chef上注册的任何计算机,比如主机名。

代码语言:javascript
复制
nodes = search(:node, 'hostname:<another_vm_hostname>')
p nodes.first['ipaddress']

更新

你的第三行有个错误。不要用引号包围nodes.first['ipaddess']

代码语言:javascript
复制
 node.default['aem_dispatcher_cookbook']['ip_address'] = nodes.first['ipaddress']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61866524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档