rassanov.ru
 Web tools & services   

Веб инструменты

Скрипты

Скрипты для начального тестирования хостинга

 

Переменные среды

Для начала тестирования посмотрим переменные среды (окружения) своего хостинга и список доступных нам программ. Для этого в папке cgi-bin создадим свою папку с именем для примера, test и запаролируем ее, чтобы была только для себя любимого.
Поместим туда небольшой скрипт, установим ему права 755 и запустим его, обратившись к нему из браузера по адресу, например – http://rassanov.ru/cgi-bin/test/peremennye-sredy.pl
Мы увидим массу всяких сведений, по большей части не очень интересных, в частности о параметрах своего браузера. Именно переменные окружения используются в том числе в Web инструменте Узнать IP, проверить анонимность.
Некоторые из переменных действительно нужны, например PATH, где находится список папок исполняемых программ, SCRIPT_FILENAME, содержит полный путь к данному скрипту и т.д. Иногда бывает полезно при отладке своих скриптов взлянуть на переменные среды, поэтому есть смысл скопировать их и сохранить в каком-нибудь текстовом файле на домашнем компьютере.
Взгляните на пример переменных среды хостинга: 
пример переменных среды на моем хостинге
В скриптах все «вспомогательные» строки будут по возможности записаны максимально кратко и (или) не будут приведены, но будет подразумеваться, что они есть.
Скрипт, выводящий переменные среды:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
my $t='Переменные среды';
print "Content-type: text/html\n\n<html><head><title>$t</title></head><body><h2>$t</h2><hr><pre>";
# будет подразумеваться, что строки выше имеются
print "$_\t$ENV{$_}\n" foreach (sort(keys %ENV)); # сам скрипт
# будет подразумеваться, что такая или подобная нижняя строчка имеется
print "<hr></pre></body></html>";

В скрипте просто перебираются все имеющиеся ключи хеша %ENV и выводятся на дисплей и ключи и их значения.
Переменные среды можно изменять (удалять, дополнять). Так например, для большей безопасности рекомендуется удалять потенциально опасные ключи (если они есть) в начале каждого своего скрипта:
#!/usr/bin/perl
delete @ENV{qw(IFC CDPATH ENV BASH_ENV)};

и если Вы не используете каких-то программ, кроме скажем Perl, можно также удалить и переменную PATH:
#!/usr/bin/perl
delete $ENV{'PATH'};
# или добавить к ней значение, например:
$ENV{'PATH'} .=':/usr/sbin';
# или установить новое значение:
$ENV{'PATH'} ='/usr/bin';

Список ПО

Получим список установленных и доступных нам программ (команд) на хостинге. Все эти программы располагаются в папках, которые перечислены в переменной PATH. На самом деле программ и команд гораздо больше, но именно в этих папках ОС ищет команды для запуска и именно их Вам предоставляет хостинг.
Какая-то часть установленных программ наверняка приведена на сайте хостера, но указать их все просто нереально.
Маленький скрипт выведет на дисплей содержимое каждой папки, указанной в PATH:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
my $t='Список установленных программ';
print "Content-type: text/html\n\n<html><head><title>$t</title></head><body><h2>$t</h2><hr><pre>";
my @d = split ':', $ENV{'PATH'};
# при желании Вы можете добавить и другие папки для просмотра содержимого:
push @d, '/usr/sbin';
# или сами укажите другие папки @d = qw(/home/papka /public_html); и т.д.
use File::Find;
find sub { print $File::Find::name, -d && '/', "\n"; }, @d;
print "<hr></pre></body></html>";

Программ в этих папках довольно много, лично у меня на хостинге свыше 1200 (без содержимого папки /usr/sbin). Большая часть навряд ли пригодится, но все-таки неплохо сохранить этот список у себя на домашнем компьютере.
Привожу маленькие фрагменты списков программ:
Фрагмент списка программ в папке /bin Фрагмент списка программ в папке /usr/bin Фрагмент списка программ в папке /usr/local/bin
В большинстве случаев можно узнать, что делает та или иная программа, запустив ее с такими ключами --help -h -?, а можно просто "сказать" man команда.
Некоторые из этих программ могут пригодится для получения более полной информации о системе, поэтому имеет смысл присмотреться к программам, содержащим в названии stat, info, conf и т.п. А запустить программу (команду) можно например из скрипта "командной строки".

Список модулей Perl

Можно получить и список модулей Perl, установленных на хостинге, хотя такой список как правило приведен на сайте хостера. Для этого достаточно вместо переменной массива @d указать встроенный массив @INC:
find sub { print $File::Find::name, -d && '/', "\n"; }, @INC;

Заметим, что полученный таким образом список модулей содержит не только список "главных" или "основных" модулей, но и файлы документации к модулям, файлы примеров использования модулей и файлы для их тестирования. Бывает любопытно взглянуть.
А посмотреть содержимое любого файла можно простой командой: cat (путь)файл, например используя скрипт "своего шелла".

Конфигурация системы и Perl на хостинге

На момент установки Perl в систему собирается масса данных о ее (и Perl) конфигурации в модуле Config.pm, которая доступна для нас через простой скрипт:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
use Config qw(config_sh myconfig);
my $t='Конфигурация системы и Perl';
print "Content-type: text/html\n\n<html><head><title>$t</title></head><body><h2>$t</h2><hr>";
print 'Конфигурация системы:<br><pre>', config_sh(), '</pre>';
print '<hr>Конфигурация Perl:<br><pre>', myconfig(), '</pre>';
print "<hr></body></html>";

Всего доступно около 900 различных параметров системы, таких как местоположение различных программ, модулей, указание их версий, разрядности некоторых переменных, флаги, описание сигналов прерываний, их коды и прочее.
И что немаловажно – каждое возможное значение описано в документации к модулю Config, правда на «простом английском языке». Заметим, что далеко не каждый параметр установлен, многие имеют значение undef или define.
Скачать скрипты тестов хостинга в zip 2,18 KB
 

 
Дмитрий Рассанов 2014