检查DOS或bash是否来自web应用程序内部
假设我有一个web应用程序,具有某种系统执行。我将在这个例子中使用Ruby。此应用程序可以是便携式的,可以安装在Windows或Unix服务器上。如果应用程序使用系统命令,是否有办法区分服务器是什么平台,然后可能会在If语句中捕获 理论上是这样的:检查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
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是!按照我的想法,应该是普遍的!