精华内容
下载资源
问答
  • WindowsAPI获取主机操作系统信息

    千次阅读 2017-07-13 09:43:55
    // 获取操作系统位数 int GetSystemBits() { SYSTEM_INFO si; SafeGetNativeSystemInfo(&si); if (si .wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || si .wProcessorArchitecture ==...
    VOID SafeGetNativeSystemInfo(__out LPSYSTEM_INFO lpSystemInfo)  
    {  
        if (NULL==lpSystemInfo) return;  
        typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);  
        LPFN_GetNativeSystemInfo fnGetNativeSystemInfo = (LPFN_GetNativeSystemInfo)GetProcAddress( GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo");;  
        if (NULL != fnGetNativeSystemInfo)  
        {  
            fnGetNativeSystemInfo(lpSystemInfo);  
        }  
        else  
        {  
            GetSystemInfo(lpSystemInfo);  
        }  
    }  
    // 获取操作系统位数 
    int GetSystemBits()    
    {    
        SYSTEM_INFO si;    
        SafeGetNativeSystemInfo(&si);    
        if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||    
            si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )    
        {    
            return 64;    
        }    
        return 32;    
    }    
    //获取操作系统版本
    char *GetVersionInfo()  
    {  
    
        OSVERSIONINFO osvi;  
        ZeroMemory(&osvi, sizeof(OSVERSIONINFO));  
        osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);  
        if (!GetVersionEx(&osvi)) {  
            return NULL;  
        }  
    
        //判断版本  
        if (osvi.dwMajorVersion == 5) {  
    
            switch (osvi.dwMinorVersion) {  
            case 0:  
                return "Windows 2000";  
            case 1:  
                return "Windows XP";  
            case 2:  
                return "Windows Server 2003";  
            default:  
                return "Unknown System";  
            }  
    
        }else if (osvi.dwMajorVersion == 6) {  
    
            switch (osvi.dwMinorVersion) {  
            case 0:  
                return "Windows Vista";  
            case 1:  
                return "Windows 7";  
            case 2:  
                return "Windows 8";  
            default:  
                return "Unknown System";  
            }  
    
        }else {  
            return "Unknown System";  
        }  
    }
    //获取进程列表
    void GetProcessList(){
     HANDLE pHandle;
     PROCESSENTRY32 proc;
     DWORD procId;
     char szLogBuffer[512]={0};
    
     pHandle = CreateToolhelp32Snapshot(0x2,0x0);
     if(pHandle==INVALID_HANDLE_VALUE){
      return;
     }
     proc.dwSize = sizeof(PROCESSENTRY32);
     while(Process32Next(pHandle,&proc)){
         printf("ProcessName : %S\r\n",proc.szExeFile);
     }
     CloseHandle(pHandle);
     return;
    }
    展开全文
  • 使用Python收集获取Linux系统主机信息

    千次阅读 2017-10-08 14:52:28
    使用 python 代码收集主机系统信息,主要:主机名称、IP、系统版本、服务器厂商、型号、序列号、CPU信息、内存等系统信息。 #!/usr/bin/env python #encoding: utf-8 ''' 收集主机的信息: 主机名称、IP、系统...
    使用 python 代码收集主机的系统信息,主要:主机名称、IP、系统版本、服务器厂商、型号、序列号、CPU信息、内存等系统信息。

    #!/usr/bin/env python
    #encoding: utf-8

    '''
    收集主机的信息:
    主机名称、IP、系统版本、服务器厂商、型号、序列号、CPU信息、内存信息
    '''

    from subprocess import Popen, PIPE
    import os,sys

    ''' 获取 ifconfig 命令的输出 '''
    def getIfconfig ():
    p = Popen([ 'ifconfig' ], stdout = PIPE)
    data = p.stdout.read()
    return data

    ''' 获取 dmidecode 命令的输出 '''
    def getDmi ():
    p = Popen([ 'dmidecode' ], stdout = PIPE)
    data = p.stdout.read()
    return data

    ''' 根据空行分段落 返回段落列表'''
    def parseData (data):
    parsed_data = []
    new_line = ''
    data = [i for i in data.split( '\n' ) if i]
    for line in data:
    if line[ 0 ].strip():
    parsed_data.append(new_line)
    new_line = line + '\n'
    else :
    new_line += line + '\n'
    parsed_data.append(new_line)
    return [i for i in parsed_data if i]

    ''' 根据输入的段落数据分析出ifconfig的每个网卡ip信息 '''
    def parseIfconfig (parsed_data):
    dic = {}
    parsed_data = [i for i in parsed_data if not i.startswith( 'lo' )]
    for lines in parsed_data:
    line_list = lines.split( '\n' )
    devname = line_list[ 0 ].split()[ 0 ]
    macaddr = line_list[ 0 ].split()[- 1 ]
    ipaddr = line_list[ 1 ].split()[ 1 ].split( ':' )[ 1 ]
    break
    dic[ 'ip' ] = ipaddr
    return dic

    ''' 根据输入的dmi段落数据 分析出指定参数 '''
    def parseDmi (parsed_data):
    dic = {}
    parsed_data = [i for i in parsed_data if i.startswith( 'System Information' )]
    parsed_data = [i for i in parsed_data[ 0 ].split( '\n' )[ 1 :] if i]
    dmi_dic = dict([i.strip().split( ':' ) for i in parsed_data])
    dic[ 'vender' ] = dmi_dic[ 'Manufacturer' ].strip()
    dic[ 'product' ] = dmi_dic[ 'Product Name' ].strip()
    dic[ 'sn' ] = dmi_dic[ 'Serial Number' ].strip()
    return dic

    ''' 获取Linux系统主机名称 '''
    def getHostname ():
    with open( '/etc/sysconfig/network' ) as fd:
    for line in fd:
    if line.startswith( 'HOSTNAME' ):
    hostname = line.split( '=' )[ 1 ].strip()
    break
    return { 'hostname' :hostname}

    ''' 获取Linux系统的版本信息 '''
    def getOsVersion ():
    with open( '/etc/issue' ) as fd:
    for line in fd:
    osver = line.strip()
    break
    return { 'osver' :osver}

    ''' 获取CPU的型号和CPU的核心数 '''
    def getCpu ():
    num = 0
    with open( '/proc/cpuinfo' ) as fd:
    for line in fd:
    if line.startswith( 'processor' ):
    num += 1
    if line.startswith( 'model name' ):
    cpu_model = line.split( ':' )[ 1 ].strip().split()
    cpu_model = cpu_model[ 0 ] + ' ' + cpu_model[ 2 ] + ' ' + cpu_model[- 1 ]
    return { 'cpu_num' :num, 'cpu_model' :cpu_model}

    ''' 获取Linux系统的总物理内存 '''
    def getMemory ():
    with open( '/proc/meminfo' ) as fd:
    for line in fd:
    if line.startswith( 'MemTotal' ):
    mem = int(line.split()[ 1 ].strip())
    break
    mem = '%.f' % (mem / 1024.0 ) + ' MB'
    return { 'Memory' :mem}

    if __name__ == '__main__' :
    dic = {}
    data_ip = getIfconfig()
    parsed_data_ip = parseData(data_ip)
    ip = parseIfconfig(parsed_data_ip)
    data_dmi = getDmi()
    parsed_data_dmi = parseData(data_dmi)
    dmi = parseDmi(parsed_data_dmi)

    hostname = getHostname()
    osver = getOsVersion()
    cpu = getCpu()
    mem = getMemory()
    dic.update(ip)
    dic.update(dmi)
    dic.update(hostname)
    dic.update(osver)
    dic.update(cpu)
    dic.update(mem)

    ''' 将获取到的所有数据信息并按简单格式对齐显示 '''
    for k,v in dic.items():
    print '%-10s:%s' % (k, v)
    展开全文
  • Facts是一个非常有用的组件,实现获取远程主机系统信息,包括主机名、IP地址、操作系统、分区信 息、硬件信息等,可以配合playbook实现更加个性化、灵活的功能需求,比如在httpd.conf模板中引用Facts的主机名信息...

    一 点睛

    Facts是一个非常有用的组件,实现获取远程主机的系统信息,包括主机名、IP地址、操作系统、分区信 息、硬件信息等,可以配合playbook实现更加个性化、灵活的功能需求,比如在httpd.conf模板中引用Facts的主机名信息作为ServerName参数的值。

    通过运行 ansible hostname -m setup 可获取Facts信息。

    二 实战

    获取192.168.0.101的Facts信息

    ansible 192.168.0.101 -m setup

    在模板文件中这样引用Facts信息

    {{ ansible_devices.sda.model }}
    {{ ansible_hostname }}

     

    展开全文
  • Qt-获取主机网络信息

    千次阅读 2017-10-16 09:24:57
    Qt 中提供了几个用于获取主机网络信息的类,包括QHostInfo、QHostAddress、QNetworkInterface以及QNetworkAddressEntry。 通过这几个类获得本机的主机名、IP地址和硬件地址等网络信息。 QHostInfo类:查询与特定主机...


    简述:

    Qt 中提供了几个用于获取主机网络信息的类,包括QHostInfoQHostAddressQNetworkInterface以及QNetworkAddressEntry

    通过这几个类获得本机的主机名IP地址硬件地址等网络信息。


    QHostInfo 类:查询与特定主机名相关联的主机的IP地址,或者与一个IP地址相关联的主机名

    QHostAddress 类:提供一个IP地址,可提供独立于平台和协议的方式来保存 IPv4IPv6 地址。

    QNetworkInterface 类:负责提供主机IP地址和网络接口的列表,表示了当前程序正在运行时与主机绑定的一个网络接口。

    QNetworkAddressEntry 类:存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码广播地址


    系统:Windows 7

    Qt 环境: qt-opensource-windows-x86-mingw530-5.7.0.exe



    1、 样例

    1 > 修改工程文件 .pro 


    本机网络信息是属于网络模块。获取本机网络信息,那就要使用Qt 提供的网络模块 QtNetwork,即在工程文件 .pro 中加入:


    QT       += network

    2 >  #include  头文件 .h


    只需要 #include 两个头文件即可


    #include <QHostInfo>
    #include <QNetworkInterface>

    3 > 范例


    void NetworkInformation::getHostInformation()
    {
    
        /***********************************************************/
        //QHostInfo 提供一系列有关网络信息的静态函数,可获取主机名、IP地址
        QString localHostName = QHostInfo::localHostName();         // 获取本机主机名
        qDebug() << "主机名: " << localHostName;
        qDebug() << endl;
    
        /***********************************************************/
        //根据主机名获取相关主机信息,包括IP地址。
        QHostInfo hostInfo = QHostInfo::fromName(localHostName);
        QList<QHostAddress> addrList = hostInfo.addresses();        // 获取本主机上的IP地址列表
        qDebug() << "本主机上的IP地址列表,总计: " << addrList.count() ;
    
        /***********************************************************/
        foreach (QHostAddress var, addrList) {
            qDebug() << var.toString(); //本机IP地址列表
        }
        qDebug() << endl;
    
        /***********************************************************/
        if(!addrList.isEmpty()) //获得的主机IP地址列表可能为空。
        {
            // 在不为空情况下使用第一个IP地址,可能IPv6,也可能IPv4
            qDebug() << "first ip addr:" << addrList.first().toString();
        }
        qDebug() << endl;
    
        /***********************************************************/
        QString ipAddress;
        //QList<QHostAddress> addrList = QNetworkInterface::allAddresses(); //仅仅获取IP地址列表
        for (int i = 0; i < addrList.size(); ++i) {
            if (addrList.at(i) != QHostAddress::LocalHost &&
                addrList.at(i).toIPv4Address()) { //是IPv4地址且非 QHostAddress::LocalHost
                ipAddress = addrList.at(i).toString();
                qDebug() << "first ipv4 addr:" << ipAddress;// 在不为空情况下使用第一个IPv4地址
                break;
            }
        }
        qDebug() << endl;
    
        /***********************************************************/
        // 获取本机的网络接口列表
        QList<QNetworkInterface> ifaceList = QNetworkInterface::allInterfaces();
        for (int i = 0; i < ifaceList.count(); i++){
            QNetworkInterface var = ifaceList.at(i);
            qDebug() << tr("########## 设备%1 ############").arg(i);
            qDebug() << tr("接口名称:") << var.humanReadableName();
            qDebug() << tr("设备名称:") << var.name();
            qDebug() << tr("硬件地址:") << var.hardwareAddress();
    
            /***********************************************************/
            // 读取一个IP地址的关联信息列表
            QList<QNetworkAddressEntry> entryList = var.addressEntries();
            //qDebug() << "IP地址的关联信息列表: ";
            //foreach(QNetworkAddressEntry entry, entryList){
                //qDebug() << "IP: " << entry.ip().toString();
                //qDebug() << "子网掩码:" << entry.netmask().toString();
                //qDebug() << "广播地址:" << entry.broadcast().toString();
            //}
    
            /***********************************************************/
            // 读取一个IPv4地址的关联信息列表
            //qDebug() << "IPv4地址的关联信息列表: ";
            foreach(QNetworkAddressEntry ipv4entry, entryList){
                if (ipv4entry.ip().toIPv4Address())
                {
                    qDebug() << "IP: " << ipv4entry.ip().toString();
                    qDebug() << "子网掩码:" << ipv4entry.netmask().toString();
                    qDebug() << "广播地址:" << ipv4entry.broadcast().toString();
                }
    
            }
        }
    
        /***********************************************************/
    }



    输出:





    2、 QHostInfo 详解


    1 > QHostInfo类 :查询与特定主机名相关联的主机的IP地址,或者与一个IP地址相关联的主机名


    2 > 有两种查询方式:


    A.  异步方式,找到主机就发射信号。

    此方式调用的 lookupHost() ,此函数有3个参数,分别是主机名或IP地址接收对象接收槽函数,并且返回一个查询ID

    若要中止查询,则可调用abortHostLookup() 函数,参数是查询ID


        static int lookupHost(const QString &name, QObject *receiver, const char *member);//异步方式查询
        static void abortHostLookup(int lookupId); //中止查询


    若查询成功,则调用接收槽函数。查询结果被存储到 QHostInfo对象中;可使用以下方式查看查询结果:

        QString hostName() const; //获取查询的主机名
        QList<QHostAddress> addresses() const; //获取主机的IP地址列表
        HostInfoError error() const;  //返回错误的类型
        QString errorString() const;  //返回查询错误描述


    例如:


    NetworkInformation::NetworkInformation(QWidget *parent)
        : QWidget(parent)
    {
         QHostInfo::lookupHost("www.baidu.com",
                               this, SLOT(printResult(QHostInfo)));
     }
     void NetworkInformation::printResult(QHostInfo result)
     {
         qDebug() << result.hostName(); //获取查询的主机名
         QList<QHostAddress> addrList = result.addresses(); //获取主机的IP地址列表
         if (!addrList.isEmpty())
         {
             for  (int i = 0; i < addrList.size(); i++)
             {
                 qDebug() << addrList.at(i);
             }
         }
     }


    QHostInfo::HostInfoError
    常量描述
    QHostInfo::NoError0查找成功
    QHostInfo::HostNotFound 1没有发现主机对应的IP地址
    QHostInfo::UnknownError2未知错误


    B.  阻塞方式,调用的是 QHostInfo::fromName() 函数,查询给定主机名对应的IP地址。

    此函数查询期间将阻塞,这意味着程序执行期间将挂起直到返回查询结果。

    返回的查询结果存储在 QHostInfo 对象中。


        static QHostInfo fromName(const QString &name); //阻塞方式查询

    例如:


    NetworkInformation::NetworkInformation(QWidget *parent)
        : QWidget(parent)
     {
         QHostInfo info = QHostInfo::fromName("www.baidu.com"); //阻塞方式查询
         qDebug() << info.addresses();
     }



    3、 QHostAddress 详解


    1 > QHostAddress 类:提供一个IP地址,可提供独立于平台和协议的方式来保存 IPv4 和 IPv6 地址,故可用于地址过滤。

    QHostAddress 通常与QTcpSocket、QTcpServer、QUdpSocket 一起使用,来连接到主机或建立一个服务器

    注意: QHostAddress不做DNS查询,而QHostInfo是有必要的。

    这个类还支持通用预定义地址NullLocalHostLocalHostIPv6BroadcastAny


        //setAddress()设置主机地址
        void setAddress(quint32 ip4Addr);
        void setAddress(quint8 *ip6Addr);   // ### Qt 6: remove me
        void setAddress(const quint8 *ip6Addr);
        void setAddress(const Q_IPV6ADDR &ip6Addr);
        void setAddress(const sockaddr *address);
        bool setAddress(const QString &address);
    
        //protocol()检查协议类型
        QAbstractSocket::NetworkLayerProtocol protocol() const;
        //toIPv4Address()、toIPv6Address()或toString()来检索主机地址
        quint32 toIPv4Address() const; // ### Qt6: merge with next overload
        quint32 toIPv4Address(bool *ok) const;
        Q_IPV6ADDR toIPv6Address() const;
        QString toString() const;


    2 > QHostAddress:: SpecialAddress


    QHostAddress::SpecialAddress
    常量描述
    QHostAddress::Null0空地址对象,相当于QHostAddress()
    QHostAddress::LocalHost2IPv4本地主机地址,相当于QHostAddress(“127.0.0.1”)
    QHostAddress::LocalHostIPv63IPv6本地主机地址,相当于 QHostAddress(“::1”)
    QHostAddress::Broadcast1Pv4广播地址,相当于QHostAddress(“255.255.255.255”)
    QHostAddress::AnyIPv46相当于QHostAddress(“0.0.0.0”)。与该地址绑定的socket将只监听IPv4接口
    QHostAddress::AnyIPv65相当于QHostAddress(“::”)。与该地址绑定的socket将只监听IPv6接口
    QHostAddress::Any4双any-address栈,与该地址绑定的socket将侦听IPv4和IPv6接口


    3 > 常用函数


        //返回主机地址的网络层协议
        QAbstractSocket::NetworkLayerProtocol protocol() const;
        //返回IPv4地址为一个数字
        //例如地址是127.0.0.1,返回值为2130706433(即0x7f000001)
        quint32 toIPv4Address() const; // ### Qt6: merge with next overload
        quint32 toIPv4Address(bool *ok) const;
        //返回的IPv6地址为Q_IPV6ADDR结构。该结构由16位无符号字符组成
        Q_IPV6ADDR toIPv6Address() const;
    
        //返回地址为一个字符串
        //例如地址是IPv4地址127.0.0.1,返回的字符串为“127.0.0.1”
        QString toString() const;
        
        //返回IPv6地址的范围ID。对于IPv4地址,如果该地址不包含范围ID,则返回一个空字符串
        QString scopeId() const;
        //若主机地址为空(INADDR_ANY 或 in6addr_any),返回true
        bool isNull() const;
    
        //若地址是IPv6的环回地址,或任何IPv4的环回地址,则返回true
        bool isLoopback() const; 


    4 > IPv6 的范围 ID


    IPv6 的范围 ID 指定非全球 IPv6 地址范围的可达性,限制地址可以被使用的区域。

    所有 IPv6 地址与这种可达范围相关联。范围 ID 用于消除那些不能保证是全局唯一性的地址。

    IPv6 指定以下四个层次的可达性:

    A .  节点本地(Node-local):地址仅用于和在相同的接口(例如:环回接口是“::1”)上的服务进行通信。

    B .  链路-本地(Link-local):地址是本地网络接口(链接),每个IPv6接口上总有一个链路-本地地址在你的主机上。链路-本地地址(“fe80…”)由本地网络适配器的MAC地址生成,不保证是唯一的。

    C .  本地-站点(Site-local):地址是本地的网站/私有网络(例如,公司内网)地址。本地-站点地址(“fec0…”)通常是由网站路由器分布,本地站点之外不能保证是唯一的。

    D .  全球(Global):用于全球可路由地址,例如:Internet上的公共服务器。

    当使用链路-本地或本地-站点地址的IPv6连接,必须指定范围ID。对链路-本地地址来说,范围ID通常与接口名称(例如,“eth0”、“en1”)或数目(例如,“1”、“2”)相同​



    4、 QNetworkInterface 详解


    1 > QNetworkInterface 类:负责提供主机IP地址和网络接口的列表,表示了当前程序正在运行时与主机绑定的一个网络接口。

    每个网络接口可能包含0或者多个IP地址,每个IP地址都可选择性地与一个子网掩码和(或)一个广播地址相关联。

    只有 IPv4 地址可以保证在所有平台上都能列举所有这些特性,而 IPv6 地址,目前只支持Windows XP及相关版本、LinuxMacOS 和 BSDs 可列举所有。


    2 > 常用函数


        /*********************************************
         * 返回网络接口的名称;
         * 在Unix系统中,这是一个包含接口的类型和任选的序列号的字符串,例如:“eth0”、“lo”或者“pcn0”;
         * 在Windows中,这是一个内部ID,用户不能更改
        **********************************************/
        QString name() const;
        /*********************************************
         * 如果名称可确定,在Windows上,返回网络接口的人类可读的名称,例如:“本地连接”;
         * 如果不能,这个函数返回值与name()相同。
         * 用户可以在Windows控制面板中修改人类可读的名称,因此它可以在程序的执行过程中变化的名称。
         * 在Unix上,此函数目前返回值总是和name()相同,因为Unix系统不存储人类可读的名称的配置。
        **********************************************/
        QString humanReadableName() const;
        //返回与此网络接口关联的标志
        InterfaceFlags flags() const;
        //返回网络接口的底层硬件地址。如以太网接口,表示MAC地址的字符串,用冒号分隔。其他接口类型可能使用其他类型的硬件地址
        QString hardwareAddress() const;
        //返回IP地址列表及其相关的网络掩码和广播地址
        QList<QNetworkAddressEntry> addressEntries() const;
    
    
        //返回的主机上找到的所有的网络接口的列表;在失败情况下,它会返回一个空列表
        static QList<QNetworkInterface> allInterfaces();
        //仅返回IP地址列表
        static QList<QHostAddress> allAddresses();


    3 > 网络接口相关的标识


    QNetworkInterface::InterfaceFlags
    常量描述
    QNetworkInterface::IsUp0x1网络接口处于活动状态
    QNetworkInterface::IsRunning0x2网络接口已分配资源
    QNetworkInterface::CanBroadcast0x4网络接口工作在广播模式
    QNetworkInterface::IsLoopBack0x8网络接口是环回接口:也就是说,它是一个虚拟接口,其目的是主机本身
    QNetworkInterface::IsPointToPoint0x10网络接口是一个点对点接口:也就是说,有一个,单一的其他地址可以直接由它到达
    QNetworkInterface::CanMulticast0x20网络接口支持多播

    注意:一个网络接口不能既是broadcast-based又是point-to-point


    5、 QNetworkAddressEntry 详解


    1 > QNetworkAddressEntry 类:存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码广播地址

    每个网络接口可以包含0个多个IP地址,这些IP地址可以分别关联一个子网掩码和(或)一个广播地址(取决于操作系统的支持)


    2 > 常用函数


        //返回一个网络接口中存在的IPv4或IPv6地址;
        QHostAddress ip() const;
    
        /**************************************
         *返回与IP地址相关联的子网掩码。
         * 子网掩码是一个IP地址的形式表示,如255.255.0.0。
         * 对于IPv6地址,前缀长度被转换成一个地址,其中设置为1的位数等于前缀长度。
         * 前缀长度为64位(最常见的值),子网掩码将被表示为一个地址为FFFF:FFFF:FFFF:FFFF::的QHostAddress
        ****************************************/
        QHostAddress netmask() const;
    
        /**************************************
         *返回此IP地址的前缀长度。前缀长度和子网掩码中设置为1的位数相匹配。
         * IPv4地址的值在0 - 32之间。IPv6地址的值在0 - 128之间,是表示数据的首选。
         * 如果前缀长度不能确定,则返回0(即:netmask()返回一个空的QHostAddress());
         * 例如:255.255.240.0 转换为二进制:11111111 11111111 11110000 00000000,
         * 那么前缀长度就是8*2 + 4 = 20(1的个数)
        ****************************************/
        int prefixLength() const;
    
        //返回IPv4地址和子网掩码相关联的广播地址;
        //对于IPv6地址来说,返回的总是空,因为广播的概念已被抛弃,为了系统支持多播;
        QHostAddress broadcast() const;




    3 > 例子


        QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
        foreach (QNetworkInterface netInterface, list) {
            QList<QNetworkAddressEntry> entryList = netInterface.addressEntries();
            foreach(QNetworkAddressEntry entry, entryList) {  // 遍历每一个IP地址
                qDebug() << "********************";
                qDebug() << "IP Address:" << entry.ip().toString();  // IP地址
                qDebug() << "Netmask:" << entry.netmask().toString();  // 子网掩码
                qDebug() << "Broadcast:" << entry.broadcast().toString();  // 广播地址
                qDebug() << "Prefix Length:" << entry.prefixLength();  // 前缀长度
            }
        }







    展开全文
  • * ManagementObjectSearcher类 //获取主机所有信息的集合 * 基于指定的查询检索管理对象的集合。 此类是用于检索管理信息的较为常用的入口点之一。 * 例如,它可以用于枚举系统中的所有磁盘驱动器、网络适配器、...
  • linux下远程获取主机信息工具,内部通过smb协议通讯,smb协议在windows下开通445和139两个端口
  • 通过shell脚本获取主机信息

    千次阅读 2014-01-03 17:21:03
    在Windows系统下面,我们通常可以通过查看计算机的属性可以获取到该主机的基本信息,也可以通过一些第三方软件获取主机的基本参数。在Linux系统下,我们可以通过编写shell脚本获取主机的基本参数。shell脚本如下:#!...
  • PHP获取客户端(浏览器)信息;PHP获取客户端系统信息;PHP获取服务器基本信息
  • Python黑帽第一篇文章将分享获取Windows主机信息,利用注册表获取主机名及USB历史痕迹、回收站文件等,这些知识广泛应用于电子取证、Web渗透和攻击溯源领域,其中USB获取是亮点。希望这篇基础文章对您有所帮助,更...
  • 获取本机操作系统版本及型号以及本机主机名、主机用户名
  • C#获取当前主机硬件信息

    万次阅读 2015-04-01 20:03:16
    获取计算机的相关硬件信息,CPU序列号、MAC地址、内外网ip、主机序列号等。
  • jsp获取主机地址和主机名

    千次阅读 2017-06-14 15:59:32
    jsp 获取主机地址和主机名
  • 获取所有主机系统指定信息 先来看一下我定义了哪些主机 $ cat hosts [node2] 172.25.1.2 [node5] 172.25.1.5 [localhost] 172.25.1.1 [client:children] #client 分组有两...
  • 1.获取当前主机信息(操作系统名、主机名、内核版本、硬件架构) 2.获取开机时间和开机时长 3.获取当前登录用户 代码块: import os import psutil from datetime import datetime print('主机信息'.center(50,'*')...
  • 主机信息&quot;.center(50, '*')) info = os.uname() print(info) print(&quot;&quot;&quot; 操作系统: %s 主机名: %s 内核版本: %s 硬件架构: %s &quot;&quot;&
  • 通过主机名(域名)从主机数据库获取主机信息(IP地址,主机别名,标准主机名)
  • 远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12.3 主机C(windows 2008)-为远程要获取信息主机,ip:192.168.12.4 ...
  • 本文章介绍了在服务器、存储设备操作系统下快速获取服务器主机编号的方法 ► 针对微软操作系统(Windows Server2003以上版本): 命令1:wmic bios get serialnumber(获取ST)命令2:wmic csproduct get name,...
  • Docker下获取宿主机CPU、磁盘、网卡等信息一、使用挂在目录方式获取宿主机信息二、在容器中使用ssh连接到主机获取主机信息 这里提供一个获取宿主机的思路,具体的代码根据需求自己实现 一、使用挂在目录方式获取宿...
  • 获取请求主机的IP端口等信息

    千次阅读 2017-06-15 14:37:44
    服务端有时需要获取客户端发起请求的信息 // 就是取得客户端的系统版本 String header = request.getHeader("User-Agent"); // 取得客户端的IP // 取得客户端的主机名 String remoteHost = request.getRemoteHost...
  • IE浏览器,亲测,可获取到mac等信息。 1、环境 系统:windows10 64位 IE版本:Internet Explorer 11.1016.18362.0 2、结果 先看结果,如下: 3、验证 通过windows下cmd命令,验证: 查看主机名: # hostname...
  • 通过阿里云api获取ecs主机信息

    千次阅读 2019-01-25 15:30:53
    #!/usr/bin/env python #coding=utf-8 ...的单返回下面图文信息     学习地址  https://help.aliyun.com/document_detail/25506.html 调试地址  https://developer.aliyun.com/api 
  • nmap 获取主机

    千次阅读 2020-06-23 17:06:44
    139是TCP,135的UDP,具体的作用我懒的去复制,反正就是和共享文件有关,通过这两个端口,可以查询共享文件,登录用户名,操作系统信息, 网上也有好多貌似专业的135,139漏洞攻击方法,实际上大部分都是在...
  • * 获取系统信息 * @author liuyazhuang * */ public final class SystemUtils { /** * 获取访问者IP * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。 *...
  • 1,获取web组所有主机的所有信息 ansible web -m setup 运行结果: 太长,不上图了,自己看 2,筛选跟ipv4相关的信息 ansible web -m setup -a 'filter="*ipv4*"' 运行结果:字典格式, 192.168.1.9 | SUCCESS ...
  • Linux命令之获取操作系统信息-uname

    千次阅读 2014-02-24 20:49:27
    #显示系统详细信息-依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 uname -a #显示linux内核名称 uname uname -s uname命令常用参数: -a或–all 详细输出所有...
  • Linux系统 C++ 获取网络接口,以及主机网关IP,完整的C++源码如下: #include //for in_addr #include //for rtnetlink 海姹网(网址:http://www.seacha.com),标签:Linux系统 C++ 获取网络接口,...
  • CMD中,获取系统信息

    千次阅读 2017-12-06 16:31:29
    1、获取MAC,IP指令:ipconfig /all 2、获取CPU ID指令:wmic CPU get ProcessorID 3、获取硬盘信息指令:diskpart->list disk->select disk 0(看要获哪个硬盘的信息)->detail disk
  • 几个月前换了实习,是一家主要做云计算的创业公司,实习期间给公司的云平台产品做了license绑定主机信息的任务,只能使用shell,需要绑定的信息有:网卡mac地址,处理器id,主板id,系统uuid,硬盘id。我们认为,当...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 330,140
精华内容 132,056
关键字:

如何获取主机系统信息