МЕНЮ

МЕНЮ  гуморески  инфо


МЕНЮ

МЕНЮ  гуморески  инфо 


МЕНЮ

МЕНЮ  гуморески  инфо 
Практичный WWW::Mechanize Практичный WWW::Mechanize Так сложилось, что мне частенько приходится пользоваться различными виртуальными хостингами. С недавнего времени среди тех, которыми я часто пользуюсь появился такой хостер, который разрешает подключаться к серверу по SSH только с одного IP. При этом , конечно же, позволяет указывать разрешенный IP в хостинг-панели. В целом, штука конечно-же, секьюрная , но немного неудобная. Теперь мы все стали мобильные, наши IP-ы часто меняются - дома один, в дороге или кафе - другой, в офисе - третий. Один раз залезешь - переключишь, другой, а на третий уже автоматизируешь. Так поступил и я... В голове сразу мелькнули мысли от трех вариантах - Selenium, Jmeter и гипотетический perl-скрипт с использованием WWW::Mechanize. По ряду причин решил использовать второй третий вариант... Для этого нужно: perl c установленным WWW::Mechanize, а лучше и Test::WWW::Mechanize Firefox с включенным плагином MozRepl ( ТОЛЬКО ЕСЛИ ЗАХОТИТЕ СНИМАТЬ СКРИНШОТЫ!) Пара минут времени #!/usr/bin/perl -w use utf8; use Test::More "no_plan"; use Test::WWW::Mechanize; use constant URL => 'нужный урл'; use constant LOGIN =>; 'логин к админ панели'; use constant PASSWORD =>; 'пароль к админ панели'; my $m = Test::WWW::Mechanize->new(autolint=>0); $m->get_ok( URL , 'Open login page'); $m->content_contains( 'Контрольная панель' , 'Check we are on right page'); $m->submit_form_ok({ form_number =>; 1, fields => { login => LOGIN, password => PASSWORD, }, } , 'Submit login form' ); $m->follow_link_ok( { text_regex => qr/Настройки SSH/i } , 'Follow ssh settings link'); $m->content_contains( 'Настройки SSH' , "Check we are on right page"); $m-$gt;follow_link_ok( {id =>; 'user-ip' }, "Allow current ip"); my $link =$m->find_link( id => 'user-ip' ); ok($link, 'Get current ip from page'); $m->submit_form_ok({ form_number => 1, fields => { ip => $link->text, }, } , 'Submit ip changing form' ); В скрипте используется Test::WWW::Mechanize - обертка над WWW::Mechanize , которая используется в написании автотестов, что делает этот скрипт по сути автотестом с наглядным логированием в консоль: $ ./ssh_switcher ok 1 - Open login page ok 2 - Check we are on right page ok 3 - Submit login form ok 4 - Follow ssh settings link ok 5 - Check we are on right page ok 6 - Allow current ip ok 7 - Get current ip from page ok 8 - Submit ip changing form 1..8 Ну и этот "тест" потестить тоже надо бы.. Убеждаемся, что до запуска ssh-соединение не устанавливаетса, а после запуска - проблем нет. Таким образом, скрипт реально экономит мне время и нервы, позволяя одним кликом разрешить текущий ip-с которым я вышел в сеть - не надо открывать браузер, панель, помнить и вводить логин , пароль (очень хитрый и длинный пароль)... Разумеется, это подходит только для данного конкретного хостера и его алгоритма смены разрешенного ip ) И, конечно же, хостер может изменить названия переменных, ссылок, вообще поменять логику - это не проблема, скорректировать скрипт дело пары минут :) Не а ежели хостер навесит капчу, то будет очень интересно решить эту задачу, тем более, что кое-какие наработки где-то в дебрях харда валялись ) p.s. в целом WWW::Mechanize очень даже применим для автоматизации сценариев , а его обертка Test::WWW::Mechanize - даже для создания функциональных автотестов.