2013-05-02 92 views
0

我在perl腳本中運行以下代碼行以查找遠程計算機的df輸出。這工作正常,收集信息在@df_ret直到ssh密鑰是最新的。如果公衆被損壞或更改,它不會在腳本中顯示任何錯誤跡象。如果我手動運行,那麼我會被要求輸入密碼。在perl中登錄驗證

@df_ret = split /\n/, `ssh -q $server 'df -hP'`; 

有沒有什麼辦法可以驗證,如果ssh登錄成功,那麼這個Perl腳本行應該執行其他的不行。找到了很多搜索,但無法找到ONE。任何幫助?

回答

1

我有一個解決方案如下工作; ! #在/ usr/local/bin中/ perl的

my $line = `ssh $server -o 'BatchMode=yes' -o 'ConnectionAttempts=1' true`; 
my $error = `echo $?`; 

print "Error = $error"; 

if($error == 0) 
{ 
    print "This is good"; 
    @df_ret = split /\n/, `ssh -q $server 'df -hP'`; 
} 
else 
{ 
    print "This is bad"; 
} 
+0

修復: '我的$錯誤= $? >> 8;'因爲'$?'是Perl的內部變量(與Unix shell的'$?'有相同的名稱)。 – dolmen 2013-05-02 15:41:46

0

檢查ssh EXEC的分裂之前的結果:

$text = `ssh -q $server 'df -hP'` or die "unable to ssh\n"; 
@df_ret = split /\n/, $text; 
+0

這裏是第一線的輸出.../1.pl 密碼: 密碼: 密碼: ./1.pl:行1:=::找不到命令 – 2013-05-02 14:13:51

+0

我有類似「ssh服務器-o'BatchMode = yes'-o'ConnectionAttempts = 1'true」這似乎一直工作,直到模仿延長...尋找好的解決方案 – 2013-05-02 14:14:58