SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3734|回复: 1

[Perl] 使用perl根据端口杀进程

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
1 o' s# m9 x9 `" v' K7 `1 M  `/ E& x. `( z
6 U' s$ o$ {$ }; ?2 x# Copyright Statement:! B6 @' d: P4 N" R
# --------------------
8 q6 h# f* r$ t% G( H* Q# This programe is kill the pid by the port!
& w# s, }5 i2 r3 v$ Z' D#
; D; t  `. u% J( c# @author: hakisman@gmail.com#  2 n; R, _$ p( H1 R
# Date: 2013.12.31#
; q- W/ T8 F5 A
8 Y" ?+ F  Q/ V; ?) Ymy @PortArray = @ARGV;           
4 y) ?, \8 F3 g& Imy @PidArray;   4 @4 k9 O7 u2 k: f/ V4 G( H, N
my $result;   
5 a) s, T8 F* V2 v% I2 N% F8 v; b. Imy $i;
' a9 z, v& N! ~$ m8 k" i" A
" d* F2 l9 {  y. e2 ?$ O; ?! fif($#ARGV==-1){) E1 Q( O# k& |7 R
  print "ERROR:The number of parameters is wrong!\n";  s$ a. z" w2 L* v9 |2 _8 I* u
    &Usage;9 Z7 G9 K* z/ I, F5 s1 w# v" M
}
/ r4 B' b0 s  u$ f
9 }% R) [4 o7 d9 b- h! \0 q5 Q&checkPort;. i4 y! f% K$ K9 o' O8 D
&getPid;
  y" d: V: p+ a7 O- {2 c
9 O# M( {# M0 P$ cfor($i=0;$i<=$#PortArray;$i++){, T% H& u" [. {) e6 V8 I
    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";
8 J! M( C3 W$ R' }# A" ^    print "kill -9 $PidArray[$i]";7 g, R3 d% c) U5 B8 Q' b
    $result =`kill -9 $PidArray[$i]`;
" f0 d$ ~+ B1 P8 T( D$ W9 }+ X5 ]" W    #print "kill -9 $PidArray[$i] result is $result\n";) y$ [" E3 T) O) w, M
}
# Q5 r: y# V5 c% H( c7 q0 f6 z" s+ N
sub checkPort{
! \" L2 L+ K. r% B  O: @3 G3 j6 |$ t     for($i=0;$i<=$#PortArray;$i++){7 Q$ W9 \1 {3 G+ F
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){
2 `8 D% `6 D6 M9 B; Y2 r             print "ERROR:The port you put is wrong!\n";/ ]$ P& B; r3 s4 b% s! B7 U0 B
               &Usage;* G  Z6 g1 M! S$ A  I
           }5 v. w( ?/ i( F+ R4 U
     }' P( }" O1 }5 \. |/ D& e4 t+ a& R" i
}4 R+ ]3 ~( n5 F: b/ H9 _0 t* l/ |

/ u! j+ |. I; f- f+ nsub getPid{
$ U6 {8 M% N5 X% P+ w    for($i=0;$i<=$#PortArray;$i++){" z& N2 S: I; x* t
            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'";
5 {: z, r( N, ]% K  ]5 y  H" z9 \           #print $commond."\n";
- {* s( _* ^4 B           my $Pid = `$commond`;- d* B2 l; o! P( b+ B1 b) a: |& A
           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){
, w7 Y& D3 k% N  }# d0 p             print "ERROR:The port can't retrun to the pid!\n";
0 w1 V6 |1 m  x  [% m) Z               &Usage;
6 s, {4 S4 @% P, ]# k* x7 x           }    % \) p/ b" |4 d" j
           push @PidArray,$Pid;   
# ^! S  m* K  d$ O$ ^! E$ t    }1 o/ o# Q% `9 g  W% N: D; @  A
}) s$ d) ^$ A* X. m

, i; R5 P! o+ g  L/ jsub Usage {
/ f/ p1 J& n$ F2 G5 K. X2 Uwarn << "__END_OF_USAGE";0 I! J  B, F& O  V. R% o
        9 R1 y2 n7 _) c3 M, J2 L, ]. j1 G
Usage:
& P* R3 U- G  Q
" |9 e( ~% w  F! b! A% {  kport ["port"]...) w+ ]$ ^! A$ v1 ~7 ]( [
  1,The port must be a number.
1 a9 c4 Q' P9 w  2,The number of the port must Between 1024 and 65536.
) _  a; D; J3 v% q/ v  B  3,The port must be exits." Y5 B0 n: z6 i, E/ l6 p
  # ~) Q  X' T- c) ]
; E0 u7 [1 j2 \, N
Example:" u. |' X7 @: [) G% x
  kport 8080 8180 8280 8380
' b8 H7 @( k# Y1 o. o, T% h+ D  (Kill the pid by the port!)
7 k0 Z0 T' M3 K; Q8 R- s* j. I% I  .....
, D$ E$ Z: t2 v7 M% l9 a; [5 S) x& F" }$ H# Q8 R, {& X
__END_OF_USAGE: K% e4 n; p( O0 w# c
   
) _% ?. o4 u6 p1 p' t, Yexit 1;
7 j/ P- o& P) m}2 B* [6 b6 ?) U! a# Q: N, ?% ^
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-12-17 14:14 , Processed in 0.058821 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表