标签: os-detection

如何从Bash脚本中检测操作系统?

我想保留我.bashrc.bash_login文件的版本控制,以便我可以在我使用的所有计算机之间使用它们.问题是,我有一些特定于操作系统的别名,所以我一直在寻找一种方式来确定脚本在Mac OS X,Linux或运行Cygwin的.

Bash脚本中检测操作系统的正确方法是什么?

bash os-detection

463
推荐指数
18
解决办法
26万
查看次数

如何在C预处理器中可靠地检测Mac OS X,iOS,Linux,Windows?

如果有一些跨平台的C/C++代码应该在Mac OS X,iOS,Linux,Windows上编译,我如何在预处理器进程中可靠地检测它们?

c c++ cross-platform c-preprocessor os-detection

291
推荐指数
3
解决办法
14万
查看次数

操作系统检测makefile

我经常在几台不同的计算机和几种不同的操作系统上工作,这些操作系统是Mac OS X,Linux或Solaris.对于我正在进行的项目,我从远程git存储库中提取代码.

无论我在哪个终端,我都希望能够处理我的项目.到目前为止,我已经找到了通过每次切换计算机时更改makefile来绕过操作系统更改的方法.然而,这是乏味的,并引起一堆头痛.

如何修改我的makefile,以便它检测我正在使用哪个操作系统并相应地修改语法?

这是makefile:

cc = gcc -g
CC = g++ -g
yacc=$(YACC)
lex=$(FLEX)

all: assembler

assembler: y.tab.o lex.yy.o
        $(CC) -o assembler y.tab.o lex.yy.o -ll -l y

assembler.o: assembler.c
        $(cc) -o assembler.o assembler.c

y.tab.o: assem.y
        $(yacc) -d assem.y
        $(CC) -c y.tab.c

lex.yy.o: assem.l
        $(lex) assem.l
        $(cc) -c lex.yy.c

clean:
        rm -f lex.yy.c y.tab.c y.tab.h assembler *.o *.tmp *.debug *.acts
Run Code Online (Sandbox Code Playgroud)

makefile os-agnostic os-detection

237
推荐指数
10
解决办法
15万
查看次数

Makefile,用于区分Windows和类Unix系统

我想在Linux和Windows上构建相同的Makefile.我在Linux上使用默认的GNU make,在Windows上使用 mingw32-make(也是GNU make).

我希望Makefile检测它是在Windows还是Linux上运行.


例如make clean,Windows上的命令如下所示:

clean:
    del $(DESTDIR_TARGET)
Run Code Online (Sandbox Code Playgroud)

但在Linux上:

clean:
    rm $(DESTDIR_TARGET)
Run Code Online (Sandbox Code Playgroud)

另外我想在Windows(\)和Linux(/)上使用不同的目录分隔符.


可以在Makefile中检测Windows操作系统吗?

PS:我不想在Windows上模拟Linux(cygwin等)

有类似的问题:操作系统检测makefile,但我没有在这里找到答案.

linux windows makefile os-detection

42
推荐指数
3
解决办法
3万
查看次数

已弃用的 Javascript 操作系统检测技术

我想知道为什么像navigator.userAgentnavigator.appNamenavigator.appVersionnavigator.platform这样的 javascript 操作系统检测技术正在从网络标准中删除。

https://developer.mozilla.org/en-US/docs/Web/API/Navigator

如果您访问每个导航器道具,您可以看到

已弃用

此功能已从 Web 标准中删除。尽管某些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或网络应用程序可能随时中断。

所以我想知道

  1. 为什么他们要删除这个
  2. 他们会引入一种新的操作系统检测方法吗
  3. 即使这些技术已被弃用,我也可以使用它们吗?

可能有很多情况我们需要知道操作系统版本。

javascript browser browser-detection navigator os-detection

13
推荐指数
1
解决办法
1万
查看次数

获取用户操作系统和版本号

为此,我花了一天时间在Googeling上下; 到目前为止没有运气.

如何获取用户操作系统和版本.我的Mac OS X 10.6.4,办公室的备用PC将是Windows XP SP3.你看到我得到了什么.

我已经看到了一百万个方法来单独获取用户平台,而不是版本.

JS是理想的,但服务器端(PHP)解决方案也可以.

javascript php os-detection

9
推荐指数
3
解决办法
2万
查看次数

判断 make 是在 windows 还是 linux 上运行

有没有办法在 makefile 中知道 GNU make 是在 linux 操作系统还是 windows 操作系统上运行?

我已经构建了一个 bash 脚本,它生成一个用于构建我的应用程序的 makefile,它在我的 Debian 机器上运行良好。我想尝试在 MinGW/MSYS 上构建它,但问题是我必须构建和运行一些测试程序来检查源代码中的错误,而要在 Windows 上运行它,我必须添加 .exe 后缀。

makefile gnu-make os-agnostic os-detection

7
推荐指数
2
解决办法
1万
查看次数

如何从Python脚本检测Android操作系统?

我正在 Android 设备上的termux环境中运行 python 脚本,我希望能够检测到操作系统是 Android。

\n

传统方法不起作用:

\n
>>> import platform\n>>> import sys\n>>> print(platform.system())\n\'Linux\'\n>>> print(sys.platform)\n\'linux\'\n>>> print(platform.release())\n\'4.14.117-perf+\'\n>>> print(platform.platform())\n\'Linux-4.14.117-perf+-aarch64-with-libc\'\n
Run Code Online (Sandbox Code Playgroud)\n

还有哪些其他可用的 ootb 选项?

\n

一个明显有用的选项是platform.machine()返回armv8\xe2\x80\x94 这不仅仅是 \'Linux\' 但它只是架构,而不是操作系统,并且它可能会返回误报,例如在树莓派上或其他基于arm的系统。

\n

python android os-detection

6
推荐指数
1
解决办法
1683
查看次数

如何查看网站查看器的操作系统?

我正在运行Ubuntu 8.04,我最近在访问网站时收到以下错误:

请使用运行Windows 98,2000,Me,NT或XP的计算机返回www.site.com.

  1. 网站如何知道我正在运行哪个操作系统?是仅通过javascript还是请求标头中还有操作系统信息?

  2. 有没有办法绕过这个检查或"假装"使用Windows,这样即使我运行的操作系统不受支持,我也可以访问该网站?

javascript operating-system os-detection

5
推荐指数
3
解决办法
9246
查看次数

GLib 是否可以进行操作系统检测?

是否可以确定我的 Vala 应用程序在哪个平台(GNU/Linux、Win32、OS X)上运行?

cross-platform glib vala os-detection

3
推荐指数
1
解决办法
284
查看次数

python中的远程操作系统检测

我想使用python(如nmap)实现操作系统检测,我找到了python-nmap-0.3.4.tar.gz库,但它没有提供操作系统响应!我怎样才能改变它来实现我的目标。

编辑:在站点示例中:

>>> import nmap
>>> nm = nmap.PortScanner()
>>> nm.scan('127.0.0.1', '22-443')
>>> print(nm.csv())
host;protocol;port;name;state;product;extrainfo;reason;version;conf
127.0.0.1;tcp;22;ssh;open;OpenSSH;protocol 2.0;syn-ack;5.9p1 Debian 5ubuntu1;10
127.0.0.1;tcp;25;smtp;open;Exim smtpd;;syn-ack;4.76;10
127.0.0.1;tcp;53;domain;open;dnsmasq;;syn-ack;2.59;10
127.0.0.1;tcp;80;http;open;Apache httpd;(Ubuntu);syn-ack;2.2.22;10
127.0.0.1;tcp;111;rpcbind;open;;;syn-ack;;10
127.0.0.1;tcp;139;netbios-ssn;open;Samba smbd;workgroup: WORKGROUP;syn-ack;3.X;10
127.0.0.1;tcp;443;;open;;;syn-ack;;
Run Code Online (Sandbox Code Playgroud)

它找到 OS ,但是当我自己运行时它没有显示任何 os. 有没有找到远程操作系统的功能?

nmap python-3.x os-detection

1
推荐指数
1
解决办法
9338
查看次数

操作系统从哪里获取 $OSTYPE 的值

我有一个依赖于$OSTYPE变量值的遗留脚本。该脚本期望在 Solaris 上该值为“SunOS”,而在 AIX 上该值为“AIX”。对于 Linux,它根据正则表达式检查变量,其中大写值以“LINUX”开头。

我尝试从 Jenkins 运行此脚本,发现值不同:Solaris 返回“solaris2.11”,而 AIX 返回“aix7.1.0.0”。我echo $OSTYPE在 Jenkins 运行脚本的同一台服务器上运行了该命令,并且得到了“SunOS”/“AIX”。

所以我的主要问题是:这种差异的根源是什么(系统如何形成这个变量的值,以及为什么 Jenkins 具有与从 bash 运行的 echo 不同的值)。一个附带问题是哪种是可靠的使用方式$OSTYPE

bash jenkins os-detection

1
推荐指数
2
解决办法
1959
查看次数