检查DOS或bash是否来自web应用程序内部

检查DOS或bash是否来自web应用程序内部,bash,dos,Bash,Dos,假设我有一个web应用程序,具有某种系统执行。我将在这个例子中使用Ruby。此应用程序可以是便携式的,可以安装在Windows或Unix服务器上。如果应用程序使用系统命令,是否有办法区分服务器是什么平台,然后可能会在If语句中捕获 理论上是这样的: os_check = `checkos` # System ticks to execute through the shell # using fake command if os_check == 'u

假设我有一个web应用程序,具有某种系统执行。我将在这个例子中使用Ruby。此应用程序可以是便携式的,可以安装在Windows或Unix服务器上。如果应用程序使用系统命令,是否有办法区分服务器是什么平台,然后可能会在If语句中捕获

理论上是这样的:

os_check = `checkos` # System ticks to execute through the shell
                     # using fake command

if os_check == 'unix'
  # Run Unix Commands
  `ls -la`
else if os_check == 'dos'
  # Run DOS commands
  `dir`
else
  puts 'OS not detectable'
end
编辑

我不是在找Ruby专门删除了标签。这就是一个例子。我希望有一个shell命令可以在两种环境中执行,并且可以根据操作系统的不同而变化。实际上,我必须用几种语言复制这种函数。对不起,有什么困惑

尝试检查以下选项:

case-RUBY_平台 当/win32/然后是Windows时,使用dir when/darwin/then Mac OS X 当/linux/然后是linux 否则,假设所有其他平台上都有ls 终止 [编辑]根据更新的问题,您可能可以发出系统命令echo/?并解析输出以确定主机操作系统。大多数系统上都应该存在echo命令,但Windows会解释/?切换为帮助消息,而UNIX操作系统只是回显这些字符。例如,在Ruby中,为了演示一般策略:

def检测主机操作系统 %x{echo/?}=~/^\/\?\r?\n$/?'unix':“windows” 终止
保持简单。尝试运行仅存在于所需平台上的命令

dos:cmd

尼克斯:伙计

一些没有参数的琐碎运行的结果状态是这里的关键


使用此方法时,没有字符串解析。这是更优化的。

您可以尝试使用Python来实现,这种脚本语言默认安装在大多数Linux发行版和Mac上,我认为在诸如BSD这样的Unix系统上也是如此,但我不能完全确定这一点

import os

if (os.name == "posix"):
    #run unix command
else:
    #run Windows command

当然,如果您愿意,还可以添加更多操作系统检查。

可能重复@gpojd Negative。不是只寻找Ruby的答案。@KyleMacey:你的目标技术是什么?每种语言都可能有自己检测主机操作系统的方法;“我怀疑是否有一种技术可以普遍使用。@maerics嗯,我当时在考虑测试cd/opt的思路,这种方法只在Unix中有效。甚至ping在这两种平台上的响应也不一样。您可能遇到的唯一问题是使用jRuby,我相信它会报告java,而不管底层平台如何。请参阅我的编辑+Ruby解决方案1是!按照我的想法,应该是普遍的!