SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2812|回复: 1

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

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
: l6 G9 a) M" z: B% G0 ^6 b+ [$ c. ~0 v
# Copyright Statement:
5 d, F1 a: R, [5 h5 P9 ^# --------------------5 x  c/ Q" e( ?: ?' Y7 R
# This programe is kill the pid by the port!" d$ q; D+ y# t7 y) Z2 W0 v
#
1 R+ K; s4 Y7 i7 J) z* i# @author: hakisman@gmail.com#  
+ W! H8 X; ?* F% k# Date: 2013.12.31#
4 w* g% L7 a( ]/ m2 R! d$ T3 Z9 S2 e9 v4 G7 a  W
my @PortArray = @ARGV;           ( d1 u( l. d3 S' d/ d2 }* g: f
my @PidArray;   
% l3 B5 N3 @! @7 omy $result;   
) C: n; `2 j% M; amy $i;, M. L2 b9 K8 a, c% _6 {

: V$ o, m; @1 M9 Hif($#ARGV==-1){" |6 [+ k+ T3 q% k+ [" g7 q
  print "ERROR:The number of parameters is wrong!\n";/ m8 L0 f5 @5 P  D# o2 K$ @
    &Usage;
% w8 }7 J, W- @# b2 E! `}3 M' f# n9 L7 P% ]
# ~: U5 e4 I, A
&checkPort;
0 R. {1 a& `' u&getPid;" r" R' z& q5 \1 s. R( V. I: i/ ~+ Q
; G; Z! L- G6 l- e+ a4 g6 Q, C
for($i=0;$i<=$#PortArray;$i++){3 _) U5 `+ c( H' v2 W" w( m
    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";2 p3 b) g& }" ?* ?
    print "kill -9 $PidArray[$i]";
  j3 J' d4 F& N) g8 A2 w7 k, h    $result =`kill -9 $PidArray[$i]`;
# s) ^: c1 a/ [3 w" F    #print "kill -9 $PidArray[$i] result is $result\n";, X8 z1 H9 H5 ^6 C. [
}
8 K8 _7 E& I2 @9 ]$ E
, l  Y! ^( X& Z; s- t& Usub checkPort{9 }. m& e: n8 x/ C! N5 h
     for($i=0;$i<=$#PortArray;$i++){5 _/ {0 q% h( D8 l: k* r
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){! N! p; m$ O! _& z
             print "ERROR:The port you put is wrong!\n";6 {) r# ]- i3 C
               &Usage;
* e/ o7 G: k2 y) j           }& k+ X* u! L" D6 v0 H$ }
     }
. @! M) w- `4 R0 g}: r6 {4 j. y: R: A9 W: Q
4 g2 }% N3 F% _) S
sub getPid{5 T# p, P, R& V3 T/ V+ a
    for($i=0;$i<=$#PortArray;$i++){  E( L5 @, [' S4 ~# v' `: r
            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'"; ; F$ p1 s. n0 J$ r* K
           #print $commond."\n";
) R8 ~7 ~. v; m# _: V  {: [8 f           my $Pid = `$commond`;, R: X1 P% F* Q& g& I4 e
           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){) A: }) F- P" q
             print "ERROR:The port can't retrun to the pid!\n";
, d7 K( v( K& G               &Usage;
# o% r3 g& ?3 ]7 L" o           }   
; _$ L4 R8 j, Q* Z           push @PidArray,$Pid;    " l9 E" M9 ^8 B; |
    }: |% |* }. m$ _! x: i8 m% o* z
}
* c0 e" X2 u. ?& X/ D& ^% G, M- M1 Z) k6 b) g1 Z
sub Usage {
- P) V4 s2 t6 g; A$ Fwarn << "__END_OF_USAGE";, H7 K4 V! P7 W8 c  j* c/ R; b2 i
        # v9 s3 P3 t1 c+ a7 M+ p
Usage:
; q+ Q/ L8 w( }% J# F  o0 T
0 q2 T9 D* y0 V' B' F) {  kport ["port"]...
8 R3 O' i' b* P6 F  c  1,The port must be a number.# G$ \" Y# e1 y* w" Y
  2,The number of the port must Between 1024 and 65536.1 H& X4 N+ q( P8 h5 K2 b
  3,The port must be exits.
; |; y7 t$ x4 v  i- T: u3 Y  4 w5 R- G/ [. R7 Z( S! z' ~" e
. ]& B4 v; k" f, o
Example:9 c, g. a: |) W/ g, g6 T# ^
  kport 8080 8180 8280 8380
( L' G- P( Z/ z# S  (Kill the pid by the port!)
! z9 V+ n6 N& H+ E  .....
5 S) d* x7 @$ L+ G# ~3 u( Q
% X& N( K, p* |4 u5 g! n* r__END_OF_USAGE+ w4 l  ?) q5 y( g/ `9 X) w
    . |& j( B' t9 ?/ ^- \% e* s' L
exit 1;
* e% w, R9 N: W  r8 p! F}  ^5 Q9 E0 Q! M% Q) s6 {3 z, H6 z
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-1-17 22:19 , Processed in 0.062524 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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