大家好,
我想知道其他人正在採取哪些措施來保護他們的腳本作為企業智慧財產權,以及是否有組織記錄腳本的使用。腳本記錄有助於我們了解哪些腳本的使用最為廣泛,並據此制定相應的措施。
我們目前的方法是將加密的腳本使用情況記錄到網路驅動器,這需要用戶已在網路上進行身份驗證。如果 JMP 腳本無法存取網路驅動器,腳本將終止。如果可以訪問,它會透過將文字檔案寫入網路目錄來記錄腳本使用情況訊息,例如腳本名稱、使用者名稱和日期/時間。執行此操作的時間相當長,有時甚至超過 10 秒,具體取決於使用者位置、伺服器以及可能存在的網路狀況。我認為大部分時間都花在了文件寫入操作上。從使用者的角度來看,這不太好……看起來 JMP 花了大量時間嘗試打開腳本的 GUI,但實際上這些時間都花在了連接伺服器和寫入檔案上。我無法解決我們的網路問題,而且我有一些解決方法,但我想看看大家在閱讀本文後是否有其他建議。
注意:我們對腳本進行加密以便查看,但我們不會對腳本進行加密以便運行。
目前的:
- 運行腳本
- 檢查網路路徑是否存在
- 如果存在,則記錄使用資訊(耗時較長)並繼續執行腳本。使用 save text file() 指令將文字儲存到 csv 檔案中。
- 這樣就完成了身份驗證和日誌記錄。如果我們只需要驗證身份驗證,只需檢查目錄是否存在就足夠了,而且速度似乎相當快。
- 否則,終止腳本
提案1:
- 運行腳本
- 如果 authentication_namespace 不存在(首次在 JMP 會話中驗證驗證)
- 注意:此處的「authentication_namespace」指的是可以建立的命名空間,並且可以在其中建立變數。 JMP 會話中的任何腳本都可以檢查該命名空間是否已創建,或者是否尚不存在。我們可以使用它在身份驗證後創建此命名空間。
- 如果網路目錄存在,(驗證使用者是否在公司網路上)
- 建立 authentication_namespace。我們可以在其中創建一個變量,但我認為沒有必要。我們稍後再驗證它的存在。
- 找到本機日誌檔案並將所有先前本機記錄的腳本使用資料上傳到伺服器。
- 僅在身份驗證期間執行此操作至少可以將每次 JMP 會話的寫入時間縮短到一次
- 問題:需要篩選多少個文件?我會將其保存在預設目錄下的“log”資料夾中,以將其限制在我們的日誌檔案中,但如果檔案損壞了怎麼辦?或者如果用戶單獨打開了該文件怎麼辦?或者如果使用者雙擊某個腳本,並創建了多個具有相同時間戳記(即最新時間戳記)的檔案怎麼辦?或者如果開啟了多個 JMP 會話怎麼辦?未來的 JMP 會話將無法存取命名空間的引用,只能存取我們指定的名稱。等等。
- 如果網路目錄不存在,則終止,因為使用者不在網路上
- 如果 authentication_namespace 存在(使用者先前已在此 JMP 會話中驗證為已通過驗證),則將使用情況本機記錄至預設目錄 \ log 資料夾。
- 如果文件不存在,則創建它並保存日誌訊息
- 如果文件存在,則附加日誌訊息
- (請注意上面概述的警告、多個文件等)
- 現在無需將資訊傳輸到伺服器,僅在 JMP 會話中第一次驗證身份驗證時才執行此操作
上述方案雖然可行,但會變得很複雜,而且我認為會引發問題。面對數百名用戶,一旦出現問題,調試起來將是一場噩夢。
提案2:
與我們目前的方法類似,但網路驗證是透過檢查網路目錄是否存在(快速)來完成的,而日誌記錄是透過啟動一個 JMP 無需等待的日誌記錄任務來完成的。我不確定這是否可行。 JMP 能否啟動一個遠端寫入檔案的任務,而不等待它完成?這樣可以大大簡化這個問題。
如果您對此主題有任何其他想法,請告訴我。
謝謝
麥克風
我認為您可以使用Run Program()啟動一項任務而不必等待它完成。
總的來說,我不會真正做這種類型的日誌記錄,因為它很快就會變得複雜。如果真的必須這樣做,我會創建一個合適的系統來支援它(帶有 API 和用於日誌儲存的資料庫的 HTTP 伺服器),並使用 JMP 的「新 HTTP 請求」來發送資料。