2012-11-07 103 views
0

我在設置腳本時遇到了一些問題。一個小背景:用於檢查遠程服務器進程的Perl腳本

腳本的功能是從服務器列表中讀取,這些服務器位於由::分隔的文本文件中,登錄到服務器,檢查以查看mysql是否正在運行並報告回來。該文件配置,使每一行有:服務器名:: IP地址::端口號

我遇到的問題是,我認爲perl試圖連接我所饋送的IP地址到我有代碼。任何人都可以指出我的方向正確嗎?

#!/usr/bin/perl                       

use strict; 
use warnings; 

open(FH, '<', 'serverlist_test') or error("Cannot open file , ($!)"); 
while (my $line = <FH>) { 
    our ($name, $ip, $port) = split(/::/, $line); 
    my $version = &MySQL_check($ip, $port);                      
} 
close FH; 

sub MySQL_check { 

    my $issue = `ssh -t [email protected]"$_[0]" -p$"_[1]" 'ps axco command | grep -i mysql'`; 
    print $issue; 
    if ($issue =~ /mysql/) {                    
     return "Mysql found"; 
    } else {                        
     return "Mysql not found";                   
    }                          
} 

我在做什麼錯?

謝謝。

+0

它看起來像你正在錄製的SSH端口,而不是代碼TSQL正在運行的端口。 –

+0

你好弗蘭克,這是我在bash中編寫的一個更大的腳本的一部分,並且正在轉換爲perl;有很多檢查只能通過ssh完成,並在遠程服務器上運行,我的防火牆關閉了所有其他端口。 – Roncioiu

回答

0

放那麼你可以看到正在運行的命令。所以改變:

my $issue = `ssh -t [email protected]"$_[0]" -p$"_[1]" 'ps axco command | grep -i mysql'`; 

my $command = qq`ssh -t [email protected]"$_[0]" -p$"_[1]" 'ps axco command | grep -i mysql'`; 
warn "Going to run \"$command\""; # comment this out when your code works! 
my $issue = `$command`; 

這應該舉報了該命令的問題。這幾乎肯定是因爲你沒有從文件中讀取的線路,所以端口號碼後面實際上有\n

+0

你好彼得,我不知道QQ,我一定會在未來使用它!感謝您指出我有一條新的線路進入我的代碼;事實確實如此。我已經修復了代碼,可以說它現在可以工作。 – Roncioiu

0

嘗試在一些打印調試代碼

our ($name, $ip, $port) = split('::', $line); 
+0

你好foampile,如果我使用''「」或//作爲分隔符,它真的會有所作爲嗎?只是問,因爲我仍然有點新的Perl。 – Roncioiu

1
my $issue = `ssh -t [email protected]"$_[0]" -p$"_[1]" 'ps axco command | grep -i mysql'`; 

看看

-p$"_[1]" 

這應該是

-p "$_[1]" 
+0

你好ugexe,你是錯的,是我的錯,我在粘貼代碼後手動重新添加了引用。謝謝你的回覆! – Roncioiu

1

你有一些修改

... 
while (my $line = <FH>) { 
    chomp($line); #MOD -- remove newline 
    our ($name, $ip, $port) = split("::", $line); #MOD -- change delimiter 
... 

sub MySQL_check { 

    my $issue = `ssh -t [email protected]"$_[0]" -p"$_[1]" 'ps axco command | grep -i mysql'`; #MOD -- fix misplaced double quotes 
... 
+0

羅希你好,我很欣賞你所付出的努力,而且你是對的;我不是在扼殺線路,而是在最後增加一條新線路。感謝您的代碼! – Roncioiu

相關問題