2013-06-20 14 views
0

商業案例... 應用服務器(Ubuntu的/ nginx的/ PostgreSQL的/ Python)的,我用gzip壓縮寫入系統日誌文件以root到/ var /日誌 我需要從這些日誌文件提交數據到用戶的瀏覽器開放root擁有系統文件與Python讀物

我的做法 我需要做的搜索和字符串操作服務器端的公平一點,所以我有一個python腳本與開口和處理,然後交易返回格式良好的JSON結果集。 python(cgi)腳本然後在網頁中使用ajax調用。

我的問題 腳本完美的作品在命令行中爲SU但(...顯然)我使用(gzip.open(文件名))的文件打開方法調用,被調用時,如用戶不當萬維網服務器提供的萬維網數據。

其他有用的信息 有關的應用程序服務器(合同,而不是物理)有點黑盒子 - 我有SU訪問,我可以寫劇本,我可以讀什麼,但我不能更改文件權限,添加額外的python庫或配置混亂。 可以使用此日誌提取的用戶子集也具有SU密碼,因此可以顯示一個可以傳遞給腳本的登錄對話框。

鑑於我有限制,你會怎麼做呢?

回答

1

一種選擇是在與網絡斷開連接的後臺進程中執行此有點「敏感」的工作。

可能通過cron運行,這個腳本會獲取根擁有的日誌文件,可能會將它們更改爲Web端代碼可以輕鬆處理的格式,例如將它們加載到數據庫中,或者僅將它們解壓縮並將它們放入一個不同的位置,稍微鬆懈的權限。

然後,網頁代碼可以輕鬆訪問數據,而無需跳過「su」圈。

從我的角度來看,這個計劃似乎沒有違反你的合同規則。 Web服務器配置,權限等保持不變。

+0

這是一種可能性......所呈現的數據並不一定是最新的,所以我想我可以每天一次cron它。有一個+1先生,我會玩。 – PerryW

+0

日誌是否包含敏感信息?大概。如果是這樣從一個安全位置複製到一個可以通過網絡服務器輕鬆訪問的位置,那麼我就是[禁止](http://en.wiktionary.org/wiki/no-no)... –

0

我的兩分錢。你應該給一個嘗試的paramiko,讓您通過SSH訪問主機(甚至是「本地主機」):

import paramiko 
ssh = paramiko.SSHClient() 
ssh.connect('127.0.0.1', username='jesse', password='lol') 

當你有機會問一個登錄/密碼,這些將是提供一個用戶查詢日誌。訪問文件只是一個問題,或者在SSH下閱讀文件。一旦完成了「敏感」工作,您就有機會關閉連接。