2009-11-18 112 views
-1

我從正在被刪除的舊服務器上繼承了舊的Perl腳本。腳本需要在新的服務器上實現。我已經在新服務器上獲得了它。如何調試Perl CGI腳本?

該腳本非常簡單;它通過期望& ssh連接到網絡設備並收集數據。出於調試目的,我只處理收集設備接口列表的部分。

新服務器上的腳本總是會在重新加載約5秒鐘內向我顯示一個頁面。很少,它包括來自遠程設備的接口列表。最常見的是,它包含除界面列表以外的所有HTML元素。

現在,在舊服務器上,有時腳本需要20秒才能輸出數據。那很好。

基於此,似乎新服務器上的apache在Perl腳本返回其數據之前顯示數據,但這肯定是不正確的。

附加信息: 不幸的是,我不能發佈任何代碼工作政策。不過,我很確定這不是預期的問題。期望部分寫爲expect()或死('錯誤消息'),我看不到錯誤消息。但是,如果我將期望超時設置爲0,則會看到錯誤消息。

腳本中使用的期望超時值通常爲20秒......但正如我上面提到的,apache在大約5秒後顯示腳本中的靜態內容,95%的時間不顯示內容應該從期望中恢復。此外,腳本會將期望內容寫入驅動器上的文件 - 即使頁面不顯示它。

+6

不幸的是我把我的水晶球留在家中,但我想象的是Expect腳本正在等待一些預定義的超時而不是匹配輸出。請張貼一些代碼。 – 2009-11-18 17:44:25

+1

真的有太多的變量來真正給出一個確切的答案。它可以是任何東西,從緩衝區刷新的不同,到不同版本的perl/expect,甚至是與訪問網絡設備有關的用戶權限等。 – 2009-11-18 17:55:43

+1

我不會猜測這是一個Apache的問題。它很可能只是顯示腳本給出的數據。在命令行上運行腳本時會發生什麼? – 2009-11-18 19:23:17

回答