【问题标题】:Try to get client's computername in Django尝试在 Django 中获取客户端的计算机名
【发布时间】:2021-03-05 08:52:35
【问题描述】:

我想在内网的我的django项目中获取客户端的计算机名和计算机登录用户。所以我使用 wmi 和 ip 来获取该信息。但是有些 ip 无法通过 wmi 连接,并出现一个名为“RPC 服务器不可用”的错误。然后我尝试使用计算机名通过wmi连接进行测试,它工作。是什么导致了这个问题?我使用了 socket.getnamebyaddr 也得到了错误的计算机名。

'''

 import wmi
 ip = request.META.get('REMOTE_ADDR')
 try:
    conn = wmi.WMI(computer = ip,user = 'xx', password="xx")
    for each in conn.Win32_ComputerSystem():
        content = {
            'user':json.dumps(each.UserName),
            'comname':json.dumps(each.Name),
        }
        print(each.Name)
        print(each.UserName)

'''

【问题讨论】:

    标签: python sockets wmi


    【解决方案1】:

    使用 socket 模块代替 wmi。

    import socket
    
    hostname = socket.gethostname()
    ip_address = socket.gethostbyname(hostname)
    
    print(f"Hostname: {hostname}")
    print(f"IP Address: {ip_address}")
    

    更多信息可以找到here

    【讨论】:

    • 感谢您的回复。我使用了 socket.gethostbyaddr(),但有时它无法获得正确的主机名。也许 DNS 有问题?
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2018-11-17
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多