Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 查询远程服务器';谁的操作系统?_Perl_Operating System - Fatal编程技术网

Perl 查询远程服务器';谁的操作系统?

Perl 查询远程服务器';谁的操作系统?,perl,operating-system,Perl,Operating System,有没有办法用Perl查询服务器的OS类型?例如,如果我知道远程服务器正在运行Windows,我可能会从本地计算机向它发送一个winver,并获取输出以确定它正在运行的Windows版本。然而,有没有一种方法可以更抽象地简单地问“你是什么?” 由于CPAN非常庞大,我想知道是否有一个模块封装了这种功能 如果您可以在remove服务器上获得命令行访问权限,那么您应该能够使用: 编辑:看起来Windows(或至少在我笔记本电脑的Windows 7上)中的键是OS。因此,不幸的是,通过%ENV的精确解决

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


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

如果您可以在remove服务器上获得命令行访问权限,那么您应该能够使用:


编辑:看起来Windows(或至少在我笔记本电脑的Windows 7上)中的键是
OS
。因此,不幸的是,通过
%ENV
的精确解决方案取决于操作系统。。。但是,您可以检查是否定义了
$ENV{OS}
$ENV{OSTYPE}
中的哪一个(如果它们都定义了,则按照规范选择要使用的一个),并相应地进行操作。

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


编辑:看起来Windows(或至少在我笔记本电脑的Windows 7上)中的键是
OS
。因此,不幸的是,通过
%ENV
的精确解决方案取决于操作系统。。。但是,您可以检查
$ENV{OS}
$ENV{OSTYPE}
中的哪一个已定义(如果它们都已定义,则按照规范选择要使用的一个),并相应地进行操作。

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

。您可以这样使用它:

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可能有一个模块为您在
服务器
头上进行测试。

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

。您可以这样使用它:

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可能有一个模块为您在
服务器
头上进行测试。

op正在寻找远程服务器的操作系统。您的语句在“本地”计算机上工作(或假设登录等)。。。不,dv不是我的..如果OP可以在远程服务器上获得命令行访问权限(如我在回答的第一句中所指出的),那么OP就有机会了解远程服务器的操作系统。如果你可以在远程服务器上获得命令行访问权限,那么编写一个在该服务器上运行的Perl程序绝对没有意义,因为你可以尝试像
uname
这样的方法。杰克,这是一个很好的答案,谢谢。抱歉搞混了。。但我实际上可以访问命令行。。我知道uname和其他一些东西,但我主要希望看到它通过本地机器上的Perl脚本实现。主要的问题应该集中在考虑CSPAN模块是否可以在给定IP地址的情况下查询远程服务器并获取相关信息。再次感谢。op正在寻找远程服务器的操作系统。您的语句在“本地”计算机上工作(或假设登录等)。。。不,dv不是我的..如果OP可以在远程服务器上获得命令行访问权限(如我在回答的第一句中所指出的),那么OP就有机会了解远程服务器的操作系统。如果你可以在远程服务器上获得命令行访问权限,那么编写一个在该服务器上运行的Perl程序绝对没有意义,因为你可以尝试像
uname
这样的方法。杰克,这是一个很好的答案,谢谢。抱歉搞混了。。但我实际上可以访问命令行。。我知道uname和其他一些东西,但我主要希望看到它通过本地机器上的Perl脚本实现。主要的问题应该集中在考虑CSPAN模块是否可以在给定IP地址的情况下查询远程服务器并获取相关信息。再次感谢。不幸的是,我无法假设。不管怎样,谢谢你的回答:)@Wooble:你说得对。作为一名web开发人员,当我想到“服务器”时,我就是这么想的。因为他可以访问命令行,所以这并不重要。不幸的是,我不能假设这一点。不管怎样,谢谢你的回答:)@Wooble:你说得对。作为一名web开发人员,当我想到“服务器”时,我就是这么想的。因为他可以访问命令行,所以这并不重要。“服务器”是一个完全模棱两可的术语。模棱两可,没人能回答这个问题。允许回答这个问题的信息是说明这个“服务器”可以响应哪些协议。谢谢,我会记住这一点。“服务器”是一个完全不明确的术语。模棱两可,没人能回答这个问题。允许回答这个问题的信息将说明这个“服务器”可以响应哪些协议。谢谢,我会记住这一点。
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.