ошибка дескриптора файла - PullRequest
       3

ошибка дескриптора файла

0 голосов
/ 14 декабря 2011

Я пытаюсь открыть файл списка устройств для запуска команды, но получаю ошибку «неоткрытый дескриптор файла».Как я могу это исправить?Ошибка в строке while (<List>) {.

#!\usr\bin\Perl\bin\perl

use warnings;
use strict;
use NET::SSH2;
use MIME::Base64;
my $host = "C:/temp/devices.txt"; # input file
my $user = "XXX"; # your account
my $pass = "XXXXX"; # your password  64 bit mime
my $ssh2 = Net::SSH2->new();
my $result = "C:/temp/result1.txt"; # output file
$ssh2->debug(1); # debug on/off
open(List, '<', "$host" ) or die "$!";
           my @lines = <List>;
           for my $line (@lines) {
    $ssh2->connect($line) or die "Unable to connect host $@ \n";
    my $dp=decode_base64("$pass");
    $ssh2->auth_password("$user","$dp");
    my $chan = $ssh2->channel();
    $chan->exec('sh ver');
    my $buflen =30000;
    my $buf1 = '0' x $buflen;
    $chan->read($buf1, $buflen);
    close (LIST);
    #### ## print in file
    open (OUTPUT, '>', "C:/temp/result.txt") or die "$!";
    open (OUTPUT, '>', "$result") or die "$!";
    print OUTPUT "Result For:", "$host\n", $buf1,"\n";
    close (OUTPUT);
}

1 Ответ

4 голосов
/ 14 декабря 2011

Ваш List строчный в цикле while, а верхний регистр LIST в остальных.Perl чувствителен к регистру.

Для остальной части кода не очевидно, что вы пытаетесь сделать.Предполагая, что вам нужно сделать что-то построчное из LIST, затем замените цикл while на:

for my $line (@lines) {

, затем в своем коде, где бы вам ни понадобилась «текущая строка», используйте $line.

Я не могу комментировать использование модуля ssh здесь;Я не использовал его сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...