Perl для системного администрирования



         

Finger: простая служба каталогов - часть 4


Если нужно соединиться, используя помимо Finger другой текстовый протокол на основе TCP, можно применить очень похожую программу. Например, для соединения с сервером Daytime (который выводит локальное время) используется очень похожая программа:

use Net::Telnet;

$host = $ARGV[0] ? $ARGV[0] : 'localhost';

Sen = new Net::Telnet(Host => Shost,

Port => 'daytime');

while (defined ($ret = $cn->get)2) {

Sdata .= $ret; } $cn->close:

print Sdata;

Теперь читатель имеет представление о том, насколько легко создавать типовые сетевые клиенты на основе TCP. Если кто-то уже потратил время и написал модуль, специально созданный для работы с протоколом, все окажется еще проще. В случае с Finger можно воспользоваться модулем Net Finger и заменить все вызовом одной функции:

use Net::Finger;

# fingerO принимает строку useriahost и возвращает полученные дачные print finger($ARGV[0]);

Желая показать все варианты, упомянем о возможности вызвать внешнюю программу (если она существует):

($username,$host) = split('@',$ARGV[0]); $host = $host 7 $host : 'localhost';

местоположение команды finger executable, пользователи MacOS

этим методом воспользоваться не могут

Sfingerex = ($"0 eq "MSWin32") ?

$ENV{'SYSTEMROOT'}."\\System32\\finger" : "/usr/ucb/finger"; # (также может быть и /usr/bin/finger)

print 'Sfingerex ${username}\@${host}'

Вы познакомились с тремя различными способами выполнения Finger-запросов. Третий метод, вероятно, самый неудачный, т. к. в нем порождается другой процесс. Net:. Finger обрабатывает простые Finger-запросы; все остальное может очень хорошо выполнить Net: : Tel net

или родственные ему модули.




Содержание  Назад  Вперед