查询远程服务器的操作系统?

时间:2011-09-09 15:47:18

标签: perl operating-system

有没有办法在Perl中查询服务器的操作系统类型?例如,如果我知道远程服务器正在运行Windows,我可能会从本地计算机向它发送一个winver并获取输出以确定它正在运行的Windows版本。然而,有没有办法变得更抽象,简单地问“你是谁?”

由于CPAN很大,我想知道是否有一个模块封装了这种功能。

2 个答案:

答案 0 :(得分:3)

如果您可以在删除服务器上获得命令行访问权限,那么您应该可以使用%ENV

jmaney> perl -e 'print "$ENV{OSTYPE}\n";'
linux

编辑:好像Windows中的密钥(或者,至少在我的笔记本电脑上的Windows 7上)是OS。不幸的是,通过%ENV的确切解决方案依赖于操作系统......但是,您可以检查$ENV{OS}$ENV{OSTYPE}中的哪一个已定义(如果它们都是定义,然后规范地选择你想要使用的那个),并相应地进行。

答案 1 :(得分:2)

没有万无一失的方法可以做到这一点,但HTTP Server标头 - 服务器不需要发送 - 通常包含操作系统。例如,它可能看起来像这样(来自Wikipedia):

    Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

The Perl CGI module has an http function that gets the HTTP headers。您可以像这样使用它:

my $server = $q->http('Server');
# Test $server for Windows, *nix, etc
# My Perl experience is minimal and I haven't used it in
# a while, so I'm not going to give an example here, but
# someone can feel free to edit one in.

CPAN可能有一个模块可以为Server标题进行测试。