SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4368|回复: 1

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

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
* x+ T/ b9 V0 P6 R- _) J, {& P: p% ?  S3 G* N+ v* r/ H- c
# Copyright Statement:0 x& ^/ p# i# s
# --------------------  {2 p/ N# V- b
# This programe is kill the pid by the port!
% c/ N% D! V' ?# Y#
% Z9 e8 \( x6 J8 G' G# @author: hakisman@gmail.com#  
2 l/ V9 J& S  |  `5 F8 m5 q* }0 T# Date: 2013.12.31#
1 Y1 D4 P* Z! T3 W1 ?  g# T& |) o" ]: |; ], e
my @PortArray = @ARGV;           8 R4 |! s& [! R/ u' O
my @PidArray;   
1 ], {  v  E7 A5 e: Omy $result;    ; G4 L- h. H0 }; j4 d
my $i;
. Q5 }, K: L8 b9 x2 g& _: E8 i) z) a' t/ Y! j
if($#ARGV==-1){
+ y+ O6 U/ V* k! ?3 U, T- s  print "ERROR:The number of parameters is wrong!\n";0 @3 y2 n: I9 O% r0 U' F# G
    &Usage;+ g4 d5 m- w- A8 z
}% F# }5 K: u0 l  P- e1 J- @

0 Z. x$ K4 U) R+ z% ~&checkPort;5 e- q0 m2 m) e
&getPid;+ T& L  m* a  i) A
% H; _4 t$ N5 v% F: g( W
for($i=0;$i<=$#PortArray;$i++){
$ w1 N7 R( v2 G    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";( [. v  i+ Q/ U
    print "kill -9 $PidArray[$i]";% Y5 M5 ]' G$ N( o2 F3 r: T' y
    $result =`kill -9 $PidArray[$i]`;7 C; e+ u& p  j: _6 J
    #print "kill -9 $PidArray[$i] result is $result\n";
/ f8 c' w8 I  X3 h! r* N3 ]}
$ k# v) w( n  q
8 j1 V: ^, e: |$ [4 ^7 {# tsub checkPort{
+ `# d( S0 Q" Z% T/ i* y! c' V     for($i=0;$i<=$#PortArray;$i++){$ k# c# t2 z9 F7 M5 l) J) n- h& v; y( J
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){0 Y- c, V3 ?, n3 a0 u
             print "ERROR:The port you put is wrong!\n";
8 q( T& |5 ~6 G/ B" d6 r+ Q- v' z               &Usage;
5 `2 v. Y% ~4 u2 N7 R3 C6 g9 N           }3 H5 v! ]& L# t1 A2 u! G
     }4 P% I7 q' }! h( N( [$ V& r0 ?) @
}0 l/ y0 q: ~0 [) l' ~9 J
6 N* e" V# @& B& o/ K. x( A" q
sub getPid{
- g1 |- h8 k$ r5 c    for($i=0;$i<=$#PortArray;$i++){
: A) \* _8 K/ Q9 `            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'";
& F6 M# F  x/ E3 h: g           #print $commond."\n";
# B7 E4 H+ ^9 d( I. k/ y2 \           my $Pid = `$commond`;3 v" o" s/ U% |- ]
           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){
# M' `3 E5 v/ f3 N( Q) D" O- T             print "ERROR:The port can't retrun to the pid!\n";
9 P6 I& ^! J3 I8 f1 D               &Usage;
! V8 h4 H6 L  r           }    9 v) l+ j2 [$ e2 T9 _# F  {
           push @PidArray,$Pid;   
& s+ k9 |6 K; E: v" Q& f1 d! o1 Y    }
% j% ~4 J7 @' w: {1 \8 ^" Z}% F$ C+ Z& a) W. w6 n: n9 j
8 e4 K' x: \1 Y+ ~2 ]0 B
sub Usage {* r' E1 F" d$ U2 M' h/ f8 Z
warn << "__END_OF_USAGE";) q; R! W' X/ f% y) f
        ) _2 \# H6 h. a$ X  `4 m& H3 O
Usage:
) `: d- h: k. ]9 M% \! V; @6 g9 x) a; c) a' v" C3 W( S
  kport ["port"]...
9 @3 U4 a6 T, F% H1 E* h2 f. l2 @  1,The port must be a number.
6 d5 Q* c. g6 _/ A+ j$ ?/ F  2,The number of the port must Between 1024 and 65536.- [; b. h/ m, }* v. z6 y2 |
  3,The port must be exits.! Z. t! w0 m, |7 L( K" s/ g) B
  8 C8 e+ a- D- w/ L
9 l% o$ x$ n, u/ B  U$ \+ E
Example:
+ ~, o  ?* O  f' [$ \  kport 8080 8180 8280 8380, k1 y+ ~" G6 k' H  V: I
  (Kill the pid by the port!)
8 }" w  Q% ^; b/ u1 M  .....0 D& n9 h% p! Y+ t

  O- \5 [7 {& j! E__END_OF_USAGE
  S( b: U+ L% p$ W& m   
( z  ]4 F, T3 T: D  n& B6 Hexit 1;5 ?( I0 P: n4 |+ R8 s# J; ^
}
& Y, ~7 l) |2 F
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /5 下一条

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

GMT+8, 2020-2-21 05:20 , Processed in 0.143523 second(s), 7 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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