2014-06-24 52 views
1

我正在編寫一個Perl腳本以從本地機器登錄到遠程計算機。腳本登錄到服務器並嘗試從文件Data.cfg中grep數據。grep:無法打開/Data.cfg

   my $exp= new Expect(); 
       $command="ssh -l $LOGIN1 flx$First"; 
       $exp->spawn("$command"); 

       $exp->expect (5, 

        [ qr/\[$First\]->/i => sub { my $exp = shift; 

        } ], 
        [qr/timeout/i=> 
      sub { 
       $exp->soft_close(); 
       print"Unable to login .\n"; 
       } 
          ]); 


       sleep 2; 

      $dat=`grep -i num /Data.cfg | cut -d ":" -f 2`; 

如果上面的命令是在登錄到遠程機器後手動完成的,那麼它正在工作。但是,如果我從腳本執行它我得到一個錯誤「grep:無法打開/Data.cfg」。我認爲它試圖從本地機器grep。請建議如何實現解決方案。

+0

你能告訴我們從你的代碼更多一點嗎? (連接到其他服務器,執行命令等) – Jens

+0

是的,這是一個好主意:) – mmonem

+0

在腳本中給出'Data.cfg'文件的完整路徑名。 –

回答

0

由於文件位於遠程主機上,因此您需要嘗試在本地傳輸文件,然後grep或遠程grep。我會grep遠程:

$dat=`ssh -l $LOGIN1 'grep -i num /Data.cfg | cut -d ":" -f 2'`; 
+0

謝謝:)其工作現在。 – user3381955