富捷 IT 培訓 (原奇科電腦) www.geego.com.tw 是培訓與職業轉型的先驅,專門研究當今最需要的技能。也是培訓、職涯成長和職業轉換的主要資源;長年來,我們已培養了一群追求自己鍾愛職業生涯的專業人士。 意者請洽+886-2-27116373。 http://www.geego.com.tw; e-mail:service@geego.com.tw Linux LPIC-1 / Linux LPIC-2 / CCENT / CCNA /CCNP / Java OCPJP / Android App / Android Advanced / Android Security / Swift / iOS App / Python / Python x Crawler / Python x Database / Oracle Database / HTML5 / CSS3 / JavaScript / MySQL / PHP /
2013年1月14日 星期一
奇科電腦 Tech Tips 視頻教學:Perl進階 Cisco設備運用-多執行緒(thread)與平行執行緒(fork)
更多Tech Tips請參考以下網頁
http://www.geego.com.tw/tech_support/new-tip-list
奇科電腦提供台灣地區最優質、最專業的程式設計教學。
http://www.geego.com.tw/edm/progm_perl_programming_fundamental/index.php?v=blogger&c=video&k=perl&p=progm&t=programming_fundamental
意者請洽+886-2-27116373。
http://www.geego.com.tw;
e-mail:service@geego.com.tw
GeeGo Systems offer high quality and leading of training solution on Programming in Taiwan. More information about GeeGo, please call +886-2-27116373, http://www.geego.com or mail to service@geego.com.tw
2012年12月18日 星期二
奇科電腦 Perl執行緒程式用於部署大量Cisco設備的組態或收集資訊
Cisco Perl Telnet Script:
利用telnet取得每個Cisco路由器或交換器的組態或訊息所需時間約2秒鐘,如果貴公司有1,000台Cisco設備,一般單執行緒程式恐耗時 2,000秒相當於33+分鐘,本多執行緒Perl程式可同時對所有的Cisco設備進行存取,所需時間可能不到10秒鐘;請各位試試看。1. 執行成功訊息輸出(scalar type)儲存於hash of hash : $hostinfo{ 主機名稱 }->{ 執行指令 }
2. 執行失敗訊息輸出(scalar type)儲存於hash of hash: $hosterrinfo{ 主機名稱 }->{ 執行指令 }
#!/usr/bin/perl -w
# This perl script is main to be doing numeric cisco equipment management
use strict;
use threads;
use threads::shared;
my @hosts = ( '主機名稱或IP', '主機名稱或IP' );
my @threads = ();
# Shared data declaration
my @cmds :shared = ( 'sh geego', 'sh ver', 'sh clock', 'sh queueing', 'sh hosts' );
my $username :shared = '登入帳號名稱'; # cisco telnet 的帳號
my $passwd :shared = '登入密碼'; # cisco telnet 的帳號
my $enable_passwd :shared = 'enable的密碼';
my %hostinfo :shared = ();
my %hosterrinfo :shared = ();
foreach my $host ( @hosts )
{
$hostinfo{ "$host" } = &share( {} );
$hosterrinfo{ "$host" } = &share( {} );
push( @threads, threads->new( \&get_info, $host ) );
}
foreach ( @threads )
{
$_->join();
}
sub get_info
{
use Net::Telnet::Cisco; # 特別的 Perl Cisco Telnet的模組
my ( $hostname ) = @_;
my $cisco = Net::Telnet::Cisco->new( 'Host' => $hostname,
'Errmode'=> 'return' ); # Perl Cisco Telnet的物件初始化
$cisco->login( Password => "$passwd" );
$cisco->ignore_warnings;
foreach my $cmd ( @cmds )
{
my @output = $cisco->cmd( "$cmd" );
if( $cisco->errmsg() )
{
$hosterrinfo{ $hostname }->{ $cmd } = $cisco->errmsg();
}
else
{
my $out = join( "", @output );
$hostinfo{ $hostname }->{ $cmd } = $out;
}
}
}
foreach my $host ( keys %hostinfo )
{
foreach ( keys %{$hostinfo{ $host }} )
{
print " $host => $_ => $hostinfo{ $host }->{ $_ }";
}
}
更多技術小秘訣請看:http://www.geego.com.tw/tech_support/new-tip-list
訂閱:
文章 (Atom)