- 論壇徽章:
- 0
|
在局域網(wǎng)中有幾臺機器,現(xiàn)均開tcp端口用于管理,要實現(xiàn)的功能就是“登錄相應(yīng)主機端口,運行一個檢查程序,然后根據(jù)返回結(jié)果來決定是否運行第二個程序”,下面這個腳本雖可以完成這個任務(wù),但是要多次連接主機,也曾嘗試使用fork方式來實現(xiàn),但無法成功。請高手指教,謝謝~~- #!/usr/bin/perl -w
- use IO::Socket;
- my ($ip,$port,$sock,@ans);
- sub connect_to_ip(){
- if(@_<2){
- print "缺少參數(shù): ip port\n";
- return;
- }
- $sock = new IO::Socket::INET (
- PeerAddr => $_[0], #ip
- PeerPort => $_[1], #port
- Proto => 'tcp',
- Timeout => 30,);
- unless($sock){
- die "Error:$!\n";
- return;
- }
- }
- open FILE,"< test.cf" or die "Cannot open file test.cf :$!";
- while(<FILE>){
- next if /^\s*#|^\s*$/;
- ($ip,$port)=($1,$2) if /((?:\d{1,3}.){3}\d{1,3})\s+(\d+)/;
- &connect_to_ip($ip,$port);
- print $sock "check_data\n";
- print $sock "exit\n";
- @ans = <$sock>;
- close($sock);
- foreach $line (@ans){
- chomp;
- if($line =~ /$_.*異常/){
- print $line;
- &connect_to_ip($ip,$port);
- print $sock "restart_proc\n";
- print $sock "exit\n";
- print $out while (defined($out=<$sock>));
- }
- }
- }
- close FILE;
復(fù)制代碼 |
|