Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.51.241] |
|
Сообщ.
#1
,
|
|
|
#много кода print $x."\n"; 4000 print "1234567".$x."\n"; 4000567 Хотя по идее должно быть 12345674000, чувствую что что-то не так в переменной $x, так как length($x) = 5, а не 4. Уже голову сломал, мож там какой хитрожопый непечатуемый символ? |
Сообщ.
#2
,
|
|
|
Не понял.
Переменная икс хватает что-то с консоли? Если нет, то ничего и не будет. #!/usr/bin/perl my $x; $x=0; print "$x\n"; print "1234567$x\n"; Сей пример кода объясняет как этот код вижу я. И не вижу откуда во второй принт падает число 4000. |
Сообщ.
#3
,
|
|
|
Цитата Nadz Goldman @ Переменная икс хватает что-то с консоли? Да, данные с коммутатора по телнету |
Сообщ.
#4
,
|
|
|
Цитата Mr. Gonarh @ Чувствую, что там символ возврата каретки на первом месте, который после вывода 1234567 возвращает позицию вывода в начало строки и вывод 4000 просто затирает 1234 Чувствую что что-то не так в переменной $x, так как length($x) = 5, |
Сообщ.
#5
,
|
|
|
угу, щяс сохранил значение переменной в файл, глянул хексом - 0D перед 4000
ЗЫ. Вопрос решён |
Сообщ.
#6
,
|
|
|
Цитата Mr. Gonarh @ Цитата Nadz Goldman @ Переменная икс хватает что-то с консоли? Да, данные с коммутатора по телнету О, а дашь поглядеть? |
Сообщ.
#7
,
|
|
|
За код не пинать, я перл увидел первый раз в жизни неделю назад
#!/usr/bin/perl use strict; use Net::Ping; use Net::Telnet; my (@commands, $conn); my $main_path = "/home/gonarh/admins/"; my $login = "admin"; sub read_list { my $fh; my $f_hosts = $main_path.shift(@_); my @result; open($fh, $f_hosts) || die ("Cannot open file ".$f_hosts."\n"); flock($fh, 2) || die ("Cannot lock file ".$f_hosts."\n"); my $tmp = readline($fh); while ($tmp) { push(@result, $tmp); $tmp = readline($fh); } close($fh); return @result; } sub detect_all_macs { my $item; my @hosts = read_list("switches_l2"); foreach $item (@hosts) { my ( $host, $type, $switch ) = split / /, $item; if (pingecho($host)) { echo("Get data from ".$host); connect_($host); my @data = exec_conn("sh fbd"); disconnect(); my $index=0; my $text; my @array = split /\n/, $data[0]; foreach $text (@array) { if (index($text, "----") > 0 ) { $text = $array[$index]; my $len = length($text); until ($len == 1) { $index++; $text = $array[$index]; $len = length($text); if ($len > 1) { $text =~ tr/ /_/s; $text =~ tr/\cM//s; my ( $vlan, $tmp, $mac, $port, $iface ) = split /_/, $text; if ($iface == "Dynamic") { if ($port < 25) { echo("mac:".$mac." vlan:".$vlan." port:".$port); } } } else { last;} } last; } $index++; } } else { echo("WARNING $host DOWN!"); } } } #**************************************** # Work with telnet * #**************************************** sub connect_ { my $l2 = shift(@_); my $passwd="password"; $passwd=~ s|\.||g; $conn = new Net::Telnet( Timeout => 5 , Errmode => 'return'); $conn->open( Host=>$l2 ); $conn -> waitfor( '/ame[: ]*$/' ); $conn -> print( $login ); $conn -> waitfor( '/ord[: ]*$/' ); $conn -> print( $passwd ); $conn -> waitfor( '/#[: ]*$/' ); } sub conn_exec { my $cmd = shift(@_); $conn -> print( $cmd ); my @data = $conn -> waitfor( '/#[: ]*$/' ); return @data; } sub disconnect { $conn -> print( "logout" ); $conn -> close; undef( $conn ); } sub echo { my $text = shift(@_); print $text."\n"; } |
Сообщ.
#8
,
|
|
|
Клева! =)
|