【问题标题】:Get Host name using IP address -Python [duplicate]使用IP地址获取主机名-Python [重复]
【发布时间】:2014-12-27 11:03:32
【问题描述】:

我正在尝试使用 ip 地址显示所有连接的机器名称,我可以通过检查连接来获取 IP 地址

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((addr,80))

我尝试过使用s.getsocknamesocket.gethostnames.getpeername 这些都返回了相似的结果

如果我需要显示名称,我应该怎么做?例如

192.168.1.1     - 192.168.1.1
192.168.1.50    - 192.168.1.50
192.168.1.113   - 192.168.1.113
192.168.1.114   - 192.168.1.114
192.168.1.139   - 192.168.1.139

我需要像这样显示这个

192.168.1.1     - tom123
192.168.1.50    - allec
192.168.1.113   - john-pc
192.168.1.114   - bob
192.168.1.139   - anny

我已经尝试使用 socket.gethostbyaddr("196.168.1.114") ——它给了我一个例外的说法

print socket.gethostbyaddr("196.168.1.114")

socket.herror: [Errno 1] 未知主机

【问题讨论】:

  • 顺便问一下,你是在客户端还是服务器端运行这个?这可能会有所作为
  • @PeterWood 我认为不是。在这种情况下,他们正在获取服务器的主机名。在这种情况下,他正在局域网上工作。
  • Python 从 IP 查找主机名,超时时间为 1 秒——我已经尝试过了,它正在爆炸并显示错误消息“未知主机名”
  • 你可以试试 nmap pastebin.com/2XUmEaj3
  • socket.herror: [Errno 1] Unknown host 这是我在使用 socket.gethostbyaddr("196.168.1.114") 后遇到的错误

标签: python sockets networking python-3.x


【解决方案1】:

我不知道这是否有帮助,但socket.getfqdn(IP_ADDRESS) 返回主机名。

【讨论】:

  • 我试过用这个getfqdn只会打印你传递的同一个主机ip,它不起作用,谢谢你的回复
  • @user3247425 你为什么不发布你的完整代码?那里可能有东西。还是全部都在那里?
  • - 但是在这里我已经得到了连接的 ipaddress -- 我剩下的代码全部用于获取那些连接的 ips(没有问题)- 从 ip 地址获取名称是我需要的正确的新
  • 如果您无法使用getfqdn 解决它,您的系统根本无法使用/etc/hosts 或DNS 解决它。
  • @ThiefMaster 我不明白你的意思。我只是建议了一种我知道并且我可能会为他工作的方法。不幸的是,它没有。
猜你喜欢
  • 2014-06-01
  • 2012-05-31
  • 1970-01-01
  • 2012-07-28
  • 2018-01-02
  • 2018-08-26
  • 2018-07-26
  • 2012-04-12
相关资源
最近更新 更多