2016-08-26 5 views
0

私はftpサーバのリストを持っています。これは常にloop list from global

LISTE変更することができます。

set ftp1 "192.168.0.12 -u test,test" 
set ftp2 "192.168.0.13 -u test,test" 
set ftp3 "192.168.0.14 -u test,test" 

と、ここでのTclコードを、私はTCLに必要なすべてを持つ外観はない順次execし、リストからFTPSしかし

set ftp1 "192.168.0.12 -u test,test" 
set ftp2 "192.168.0.13 -u test,test" 
set ftp3 "192.168.0.14 -u test,test" 

proc search {nick host handle channel text} { 
    global ftp1 ftp2 ftp3 
    set text [stripcodes bcru $text] 
    set searchtext [lindex [split $text] 0]; 
    set ftp1 "192.168.0.12 -u test,test" 
    set results [exec sh f.sh $ftp1 $searchtext] 
    foreach elem $results { 
     putnow "PRIVMSG$channel :ftp1 $elem" 
    } 
} 
+0

スタックオーバーフローへようこそ。このリンクをチェックして、良い質問を投稿する方法を学ぶには http://stackoverflow.com/help/dont-askと をお試しください。 – pedrouan

答えて

0

掛け最も簡単なことは、いくつかのヘルパプロシージャを書くことです。これらのプロシージャは、1つのサイトの検索を行い、コールバックによって結果をコードに戻す必要があります(ここでは非同期処理について説明しています)。

# This is a fairly standard pattern for how to do async reading from a pipeline 
# Only the arguments to [open |[list ...]] can be considered custom... 

proc searchOneHost {hostinfo term callback} { 
    set pipeline [open |[list sh f.sh $hostinfo $term]] 
    fconfigure $pipeline -blocking 0 
    fileevent $pipeline readable [list searchResultHandler $pipeline $callback] 
} 
proc searchResultHandler {pipeline callback} { 
    if {[gets $pipeline line] >= 0} { 
     uplevel "#0" [list {*}$callback $line] 
    } elseif {[eof $pipeline]} { 
     close $pipeline 
    } 
} 

# The rest of this code is modelled on your existing code 

set ftp1 "192.168.0.12 -u test,test" 
set ftp2 "192.168.0.13 -u test,test" 
set ftp3 "192.168.0.14 -u test,test" 

proc search {nick host handle channel text} { 
    set searchtext [lindex [split [stripcodes bcru $text]] 0] 
    foreach v {ftp1 ftp2 ftp3} { 
     upvar "#0" $v ftp 
     searchOneHost $ftp $searchtext [list report $channel $v] 
    } 
} 
proc report {channel name found} { 
    foreach elem $found { 
     putnow "PRIVMSG$channel :$name $elem" 
    } 
} 

私はここでしか蛍光ペンを回避するために#0を引用しました。

+0

クール、ビッグTHX、今日は、テストします – rmounton

+0

大きなthx作業perferctについて。 – rmounton