注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

Perl 执行shell命令,返回输出和错误码,打印颜色控制,脚本所在目录  

2015-03-11 10:06:00|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


#!/usr/bin/perl -w

use Switch;
use FindBin qw($Bin);
use Term::ANSIColor;
use Term::ANSIColor qw(:constants);
use strict;

my $TEST_ROOT_DIR = $Bin;
my $TEST_CFG_DIR = "$TEST_ROOT_DIR/cfg";

my @CFG_FILE_LIST;

sub Usage
{
my $text=<<END;
Usage:
test_ctl <compile|status|start|stop|restart>
END

print $text;
exit(1);
}

sub PrintError
{
my $msg = shift;
print '[', RED, "ERROR", CLEAR, "]\t$msg\n";
}

sub PrintOk
{
my $msg = shift;
print '[', GREEN, "Ok", CLEAR, "]\t$msg\n";
}


sub ExecShellCmd2
{
my $cmd = shift;
my $print_result = shift;
$print_result = 1 unless defined $print_result;

my $output = `$cmd`;
# http://perldoc.perl.org/perlvar.html#$CHILD%5FERROR
my $exit_code = $?>>8;
if ($print_result) {
if ($exit_code == 0) {
PrintOk "\"$cmd\"";
} else {
PrintError "\"$cmd\" return error $exit_code\n--------------\n$output\n---------------\n";
}
}
return ($output, $exit_code);
}

sub ExecShellCmd
{
my $cmd = shift;
my $print_result = shift;

my ($output, $exit_code) = ExecShellCmd2($cmd, $print_result);
exit 1 if ($exit_code != 0);
return $output;
}


sub Init
{
my $ls_output = ExecShellCmd("ls $TEST_CFG_DIR/*.conf", 0);
@CFG_FILE_LIST = ($ls_output=~/(\w+)\.conf$/mg);
if (scalar(@CFG_FILE_LIST) == 0) {
PrintError "No conf file in directory $TEST_CFG_DIR\n";
exit 1;
}
}




my $command = shift @ARGV;

switch($command) {
case "compile" { Init(); Compile(); }
case "status" { Init(); Status(); }
case "start" { Init(); Start(); }
case "stop" { Init(); Stop(); }
case "restart" { Init(); Stop(); Start(); }
else { Usage(); }
}


  评论这张
 
阅读(330)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017