Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从单个命令行操作确定操作系统_Linux_Windows_Shell_Cmd - Fatal编程技术网

Linux 从单个命令行操作确定操作系统

Linux 从单个命令行操作确定操作系统,linux,windows,shell,cmd,Linux,Windows,Shell,Cmd,简介: 我有一个“魔术”工具,如果我提供IP,它可以在机器上执行命令行操作。 该工具知道机器正在使用的操作系统,并根据是否为windows/linux在cmd/shell上执行命令,然后盲目返回命令的输出 C:>tool.exe 172.140.56.2“ipconfig” 假设: 每台机器一个操作系统。工具在执行命令时没有问题(无论是否失败都是另一个问题) 操作系统通常是windows或linux 我根据命令结果确定操作系统 问题: 使用这种能够执行命令的能力,我想确定操作系统 我的解决方案:

简介:

我有一个“魔术”工具,如果我提供IP,它可以在机器上执行命令行操作。 该工具知道机器正在使用的操作系统,并根据是否为windows/linux在cmd/shell上执行命令,然后盲目返回命令的输出

C:>tool.exe 172.140.56.2“ipconfig”

假设:

  • 每台机器一个操作系统。工具在执行命令时没有问题(无论是否失败都是另一个问题)
  • 操作系统通常是windows或linux
  • 我根据命令结果确定操作系统
  • 问题:

    使用这种能够执行命令的能力,我想确定操作系统

    我的解决方案:

    执行ipconfig命令。如果结果是

    -bash:ipconfig:未找到命令

    它是linux

    否则,如果是这样:

    Windows IP Configuration
    Ethernet adapter Local Area Connection:
    ...
    
    然后是窗户

    问题:

    我想知道这是否是一种万无一失的方法。我想要一个在某些情况下不会失败的命令。(比如说,安装在windows上的cygwin允许linux命令成功,或者在某些特殊的scneario下,ipconfig在linux上成功。)

    如果有任何帮助,我可以使用一些解析器处理命令输出


    只是为了澄清任何混乱。它可以是任何命令。在我的示例中,我只使用了ipconfig。

    如果我正确理解了您的问题,那么
    uname
    是理想的命令。如果是任何Unix系统(包括OSX),它将返回正确的变量,如果是Windows,它将返回command not found或类似命令。

    如果我正确理解了您的问题,则
    uname
    是理想的命令。如果是任何Unix系统(包括OSX),它将返回正确的变量,如果是Windows,它将返回command not found或类似命令。

    如果我正确理解了您的问题,则
    uname
    是理想的命令。如果是任何Unix系统(包括OSX),它将返回正确的变量,如果是Windows,它将返回command not found或类似命令。

    如果我正确理解了您的问题,则
    uname
    是理想的命令。如果是任何Unix系统(包括OSX),它将返回正确的变量,如果是Windows,它将返回command not found或类似命令。

    确定Linux/版本的最安全方法是

    cat /etc/*release
    
    样本输出

    DISTRIB_ID=LinuxMint
    DISTRIB_RELEASE=17
    DISTRIB_CODENAME=qiana
    DISTRIB_DESCRIPTION="Linux Mint 17 Qiana"
    NAME="Ubuntu"
    VERSION="14.04.1 LTS, Trusty Tahr"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 14.04.1 LTS"
    VERSION_ID="14.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    

    确定Linux/版本的最安全方法是

    cat /etc/*release
    
    样本输出

    DISTRIB_ID=LinuxMint
    DISTRIB_RELEASE=17
    DISTRIB_CODENAME=qiana
    DISTRIB_DESCRIPTION="Linux Mint 17 Qiana"
    NAME="Ubuntu"
    VERSION="14.04.1 LTS, Trusty Tahr"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 14.04.1 LTS"
    VERSION_ID="14.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    

    确定Linux/版本的最安全方法是

    cat /etc/*release
    
    样本输出

    DISTRIB_ID=LinuxMint
    DISTRIB_RELEASE=17
    DISTRIB_CODENAME=qiana
    DISTRIB_DESCRIPTION="Linux Mint 17 Qiana"
    NAME="Ubuntu"
    VERSION="14.04.1 LTS, Trusty Tahr"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 14.04.1 LTS"
    VERSION_ID="14.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    

    确定Linux/版本的最安全方法是

    cat /etc/*release
    
    样本输出

    DISTRIB_ID=LinuxMint
    DISTRIB_RELEASE=17
    DISTRIB_CODENAME=qiana
    DISTRIB_DESCRIPTION="Linux Mint 17 Qiana"
    NAME="Ubuntu"
    VERSION="14.04.1 LTS, Trusty Tahr"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 14.04.1 LTS"
    VERSION_ID="14.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    


    另一个应该起作用的命令是
    set
    ,它显示每个环境变量的名称和值。Linux上的任何shell都支持它(尽管
    csh
    bash
    之间的输出不同)。Windows系统的输出将包含
    PROCESSOR\u ARCHITECTURE
    和其他标准变量(请参阅),这些变量不太可能在Linux中设置。

    另一个应该工作的命令是
    set
    ,它显示每个环境变量的名称和值。Linux上的任何shell都支持它(尽管
    csh
    bash
    之间的输出不同)。Windows系统的输出将包含
    PROCESSOR\u ARCHITECTURE
    和其他标准变量(请参阅),这些变量不太可能在Linux中设置。

    另一个应该工作的命令是
    set
    ,它显示每个环境变量的名称和值。Linux上的任何shell都支持它(尽管
    csh
    bash
    之间的输出不同)。Windows系统的输出将包含
    PROCESSOR\u ARCHITECTURE
    和其他标准变量(请参阅),这些变量不太可能在Linux中设置。

    另一个应该工作的命令是
    set
    ,它显示每个环境变量的名称和值。Linux上的任何shell都支持它(尽管
    csh
    bash
    之间的输出不同)。Windows系统的输出将包含
    处理器_架构
    和其他标准变量(请参阅),这些变量不太可能在Linux中设置。

    我假设您无法以任何方式修改“magic”工具,因为很明显,该工具不知怎的知道,让它向您吐出这些信息似乎是最简单的。是的。考虑到我无法深入到“魔术”工具,甚至无法识别它的“魔力”,我想你不能以任何方式修改“魔术”工具,因为工具显然知道某种程度,只要让它在你身上吐出信息,似乎是最简单的。是的。考虑到我无法深入到“魔术”工具,甚至无法识别它的“魔力”,我想你不能以任何方式修改“魔术”工具,因为工具显然知道某种程度,只要让它在你身上吐出信息,似乎是最简单的。是的。考虑到我无法深入到“魔术”工具,甚至无法识别它的“魔力”,我想你不能以任何方式修改“魔术”工具,因为工具显然知道某种程度,只要让它在你身上吐出信息,似乎是最简单的。是的。考虑到我无法挖掘“魔法”工具,甚至无法识别它是如何“魔力”的。这似乎是一个更明智的执行命令。但是,如果有人不这么想,让我来回答这个问题。我考虑了
    uname
    ,但不喜欢“导致错误”这一方面。因此,我在
    echo“$PATH”
    的OP上发表了评论。它对两个操作系统都有效,并在每个操作系统上返回清晰可区分的输出。”(我也相信OSX)“OSX就是unix。有了(tm),仍然如此。是的。这似乎是一个更明智的执行命令。但是,如果有人不这么想,让我来回答这个问题。我考虑了
    uname
    ,但不喜欢“导致错误”这一方面。因此,我在
    echo“$PATH”
    的OP上发表了评论。这对操作系统和返回都有效