Запросить операционную систему удаленного сервера? - PullRequest
1 голос
/ 09 сентября 2011

Есть ли способ запросить сервер для его типа ОС в Perl?Например, если бы я знал, что удаленный сервер работает под управлением Windows, я мог бы отправить его winver с моего локального компьютера и получить выходные данные, чтобы определить, какая версия Windows работает.Тем не менее, есть ли способ быть еще более абстрактным и просто спросить "кто ты?"

Поскольку CPAN огромен, мне было интересно, есть ли модуль, который инкапсулирует такую ​​функциональность.

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

Если вы можете получить доступ из командной строки на сервере удаления, тогда вы сможете использовать %ENV:

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

Редактировать: Похоже, ключ в Windows (или, по крайней мере, в Windows 7 на моем ноутбуке) - OS.Так что, к сожалению, точное решение с помощью %ENV зависит от ОС ... Однако вы можете проверить, какой из $ENV{OS} или $ENV{OSTYPE} определен (и если они оба определены, то канонически выбрать, какойодин, который вы хотите использовать), и действуйте соответственно.

2 голосов
/ 09 сентября 2011

Нет надежного способа сделать это, но заголовок HTTP Server - который сервер не обязан отправлять - часто содержит ОС.Например, это может выглядеть так (из Wikipedia ):

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

Модуль Perl CGI имеет функцию http, которая получает заголовки 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 есть модуль для тестирования заголовка Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...