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



              

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


«Internet Accessible Coke Machines» и «Internet Accessible Machines» H&http://www.cs.ucsd.edu/~bsy/fun.html.

Перенесем сетевое соединение, установленное с помощью telnet, в мир Perl. Средствами Perl можно открыть сокет и общаться через него. Вместо того чтобы применять низкоуровневые команды сокета, воспользуемся модулем Net::Telnet Джея Роджера (Jay Roger) и познакомимся с семейством модулей, работающих с сетевыми соединениями.

Другие модули этого семейства (некоторые из них будут применяться в иных главах) включают Comm.pl Эрика Арнольда (Eric Arnold), Expect.pm Остина Шатца (Austin Schutz) и хорошо известный, но устаревший и непереносимый модуль chat2.pl Рэндала Л. Шварца (Randal L. Schwartz).

Net::Telnet устанавливает соединение и обеспечивает четкий интерфейс для отправки и получения данных через это соединение. Кроме того, Net::Telnet предоставляет удобные механизмы сканирования шаблонов, позволяющие программам наблюдать за определенными

ответами от другого сервера, но в примере подобные свойства использоваться не будут.

Вот Net: :Telnet-версия простого Finger-клиента. Эта программа принимает аргумент в виде user@finger_server. Если имя пользователя пропущено, будет возвращен список всех активных пользователей с сервера. Если пропущено имя узла, будет запрашиваться локальный

узел:

use Net::Telnet;

($username.$host) = solit(/W, $ARGV[0]);

Shost = Shost ? Shost : 'localhost';

создаем новое соединение

$cn = new Net::Telnet(Host => $host,

Port => ' finger');

посылаем имя пользователя

unless ($cn->print( "$username")){ tt может быть "/W Susernarre"

$cn->close:

die "Невозможно отправить строку: ".$cn->errmg."\n";

собираем все полученные данные, останавливаясь при завершении соединения while (defined ($ret = Scn^get)1) {

$data .= $ret; }

# закрываем соединение $cn->close;

# отображаем полученные данные print $data;

В RFC1288 определено, что перед именем пользователя, отправляемым на сервер, можно добавить ключ /W для «вывода подробной информации о пользователе», поэтому в программу добавлен комментарий об этом ключе.




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