简介:
我有一个“神奇”工具,如果我提供 IP,它可以在机器上执行命令行操作。 该工具知道机器正在使用的操作系统,并根据它是 windows/linux 在 cmd/shell 上执行命令,并盲目地返回命令的输出。
C:> tool.exe 172.140.56.2 "ipconfig"
假设:
- 每台机器一个操作系统。工具执行命令没有问题(失败与否另当别论)
- 操作系统总是 windows 或 linux。
- 我根据命令结果确定操作系统
问题:
利用这种能够执行命令的能力,我想确定操作系统
我的解决方案:
执行ipconfig 命令。如果结果是
-bash: ipconfig: command not found
它是 linux。
否则如果是这样的话:
Windows IP Configuration
Ethernet adapter Local Area Connection:
...
然后是 Windows。
问题:
我想知道这样做是否是一种万无一失的方法。我想要一个在某些情况下不会失败的命令。 (假设 cygwin 安装在 windows 上允许 linux 命令成功。或者 ipconfig 在某些特殊场景下在 linux 上成功。)
如果有任何帮助的话,我可以使用一些解析器处理命令输出。
只是为了消除任何混淆。它可以是任何命令。我在示例中使用了 ipconfig。
最佳答案
如果我正确理解了您的问题,那么 uname
是理想的命令。如果它是任何 Unix 系统(包括 OSX),它会返回正确的变量,如果它是 Windows,它会返回命令未找到或类似的。
关于linux - 通过单个命令行操作确定操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515363/