powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Есть ли в Perl работа с байтовыми массивами?
4 сообщений из 4, страница 1 из 1
Есть ли в Perl работа с байтовыми массивами?
    #38853537
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно работать по SSH с сетевым оборудованием.
Пока что единственным работоспособным вариантом оказался Net::SSH2.
Net::OpenSSH не позволяет отправлять несколько команд в одном сеансе, хотя его API удобнее.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
use vars qw($ssh_channel);
use Net::SSH2;
...
my $ssh = Net::SSH2->new();
$ssh->connect('host') or die "!Connect: $@";
$ssh->auth_password('user','password') or die "!Auth: $@";
my $ssh_channel = $ssh->channel();
$ssh_channel->blocking(0);
$ssh_channel->shell();
...
my $ver = &sshcmd('show version');
print "Version: $ver\n";
...
sub sshcmd
{
        my $cmd = shift;
        my $extra = shift;
        my ($data, $buf, $len) = ('', '', 0);
        $ssh_channel->write($cmd."\r");
        $ssh_channel->flush();
        select(undef,undef,undef,0.2);
        while ($len = $ssh_channel->read($buf, 512))
        {
                $data .= $buf;
        }
        my @res = split("\r\n", $data);
        shift @res;
        pop @res;
        return (wantarray ? @res : join("",@res) ) unless ($extra);
        return $res[0] if ($extra eq 'first');
        return $res[$#res] if ($extra eq 'last');
}


Но использовать строковую переменную в качестве буфера мне кажется не очень правильным.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Есть ли в Perl работа с байтовыми массивами?
    #38853720
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда кажется - креститься надо. Нормально все - используйте.
...
Рейтинг: 0 / 0
Есть ли в Perl работа с байтовыми массивами?
    #38853790
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneНормально все - используйте.
Я с Perl знаком не очень хорошо.
Например на VB такой алгоритм был бы не самым лучшим, т.к. строка data = data & buf означает, что при каждой итерации будет создаваться новый строковой буфер (на каждой итерации будет задействована память под data и под data+buf) и назначаться переменной, т.е. получится алгоритм Шлемиля. Там более правильным было бы создать массив или строку определенного размера (удваивая его при необходимости и обрезая до нужного значения по выходу из цикла) и вносить в эту строку текущий буфер (для строки будет что-то вроде Mid(data, offset, Len(buf)) = buf).
В Perl это актуально или там управление памятью недоступно для пользователя?
...
Рейтинг: 0 / 0
Есть ли в Perl работа с байтовыми массивами?
    #38860237
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
курите pack unpack
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Есть ли в Perl работа с байтовыми массивами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]