LinShare
linshare 是一個命令列工具,用於 LinShare 伺服器(6.5 版或更新版本)。用它來安全地分享使用者的文件。
首先,檢查設定
在對話中首次執行 Lishare 指令前,請先執行 linshare --json whoami:
- 命令找不到(結束代碼 127):
linshare指令未安裝。請以一般文字告知使用者,本技能需要此工具,並且他們可以自行安裝:pip install "git+https://github.com/wboudiche/linshare-cli#subdirectory=agent-harness"(需要 Python 3.10 以上)。 請不要自己安裝它。 - 結束代碼 2(
"code": "auth"):尚未登入。請要求使用者在此對話中輸入! linshare login --server <他們的 LinShare 網址>(若不清楚網址則詢問使用者)——他們在那裡輸入密碼,絕對不要在對話中輸入密碼。 使用 SSO:! linshare login --token --server <網址>,貼上從網頁 UI 取得的 token。 - 結束代碼 0:顯示伺服器與帳號資訊;繼續處理請求。
規則——每次都要遵守
- 一律在
linshare之後加上--json(例如:linshare --json shares list)並讀取 JSON 輸出。 - 登入由使用者親自執行,絕對不是由你來做。 如果某個指令失敗並產生結束代碼 2(
"code": "auth"),請要求使用者自行輸入! linshare login(如果他們使用 SSO 登入並持有網頁 UI 的 token,則輸入! linshare login --token)。絕對不要詢問或輸入他們的密碼。 - 在檔案離開帳戶或被刪除之前,必須獲得使用者的明確同意。 這涵蓋了
share、request-files、shares revoke、documents delete、requests close,以及共用空間的spaces upload、spaces add-member、spaces set-role、spaces remove-member、spaces delete-files、spaces delete。- 對於
share和request-files:先使用相同的命令加上--dry-run來執行,然後以一般文字向使用者顯示: 檔案(名稱和大小)、每位收件者——標記"external": true的收件者為組織外部的人——到期日、主旨、訊息、 是否使用密碼保護的連結,以及downloadAlert/copyToMe(伺服器實際執行的狀況:管理員的設定可能覆蓋使用者的選擇; 當detail這麼說時,請告知使用者)。 - 對於
revoke、delete、close:先列出,然後精確顯示哪些項目會受影響。 - 對於
spaces upload和spaces add-member:先使用--dry-run執行。上傳時,顯示檔案、工作群組(和資料夾)以及visibleTo——該群組的所有人都會看到這些檔案(如果visibleTo為 null,則表示無法列出成員)。對於新成員,以一般文字顯示該人員(姓名和電子郵件)、空間和角色(READER:唯讀,CONTRIBUTOR:可新增,WRITER:可新增與修改,ADMIN:也可管理成員)。 spaces delete會刪除空間及其所有檔案,影響每位成員;spaces delete-files也會從所有人那裡刪除檔案。請說清楚,並指出空間和項目名稱。- 僅使用使用者提供的詞彙作為
--subject和--message。不要自行撰寫;省略它們,或建議一個並只在使用者同意時才加入。request-files的--label可以是一個簡短名稱,取自使用者自己的用詞(如「十月發票」);如果沒有提供,工具會自動選用「<你的電子郵件>的檔案」。 request-files需要--message(LinShare 拒絕沒有訊息的請求)。如果使用者沒有提供,請在乾執行之前先詢問使用者;你可以建議一個措辭,但僅在使用者接受後才使用。- 沒有給定到期日(
"expirationDate": null)表示使用伺服器的預設到期日,而不是「永不」。 - 等待明確的「是」。如果使用者更改了任何內容(收件者、到期日、檔案),請重新執行
--dry-run並再次詢問。不要重複使用先前的同意。 - 在實際執行時,將乾執行中的
expirationDate傳遞為--expires YYYY-MM-DD(使用者核准的確切日期),不要再使用相對值如7d; 對於--alert-if-not-downloaded也是如此(使用乾執行中的alertIfNotDownloaded值)。
- 對於
- 檢查伺服器,而非你的記憶。 在告知使用者某個項目是否已分享、傳送、撤銷或關閉之前,請先執行對應的列表命令(
shares list、requests list、documents list、spaces files、spaces members)。之前對話的記錄可能已過時。 - 唯讀命令不需要確認:
whoami、shares list、received list、received download、documents list、requests list、requests download、spaces list、spaces files、spaces members、spaces download。建立空白的工作群組或資料夾(spaces create、spaces mkdir)也不需要確認:在加入檔案或成員之前,其他人不會看到它。 - 分享完成後,告知使用者哪些檔案已傳送給誰以及何時到期。
下載: 每當收件者首次下載分享項目時,LinShare 會寄送電子郵件給寄件者,而
shares list會顯示downloaded計數——可用此資訊回答「X 是否已下載?」。若要收到檔案未被下載的警告,請使用--alert-if-not-downloaded(一個日期、像3d這樣的延遲時間,或off;如果沒有提供,則使用伺服器的預設值)。 - 共用空間。 工作群組存放團隊共享的檔案;工作空間則用來分組工作群組。
命令使用 ID:執行
spaces list來尋找空間,spaces files SPACE [--folder ID]來尋找資料夾或檔案。多個空間可以有相同名稱:如果使用者的用詞匹配多個空間,請詢問是哪一個。以電子郵件分享檔案(share)和將其放置在工作群組(spaces upload)是不同的:如果不清楚,請問清楚。 在 LinShare 7.0 上,某些功能因伺服器錯誤而失敗:spaces members無法列出成員(請使用add-member列印的成員 ID 來進行set-role/remove-member),而且無法將人員加入工作空間(只能加入其工作群組)。請照實傳達錯誤訊息;不要嘗試其他方式重試。 - 發生錯誤時,以一般文字傳達
error.message的內容。未經詢問,不要用不同的設定重新嘗試被拒絕的分享。結束代碼 1 表示指令本身有誤(修正它,不要要求使用者登入)。當分享失敗時,工具會將已上傳的檔案移除並告知使用者;如果error.code是"timeout",則結果不明——請依照訊息指示(在重試前檢查shares list/documents list)。 - 大檔案也沒問題:超過 2 MiB 時,工具會像網頁 UI 一樣分塊傳送。在快速網路上,上傳大約需要每 GB 15 秒,在慢速網路上則需要更久。對於數百 MB 以上的檔案,請給
share命令一個較長的超時時間(或在背景執行),以免被中斷,並告知使用者可能需要一些時間。
典型流程
linshare --json share ./contract.pdf --to [email protected] --expires 7d --message "請簽署" --dry-run
# → 向使用者顯示摘要,等待「是」
# 乾執行顯示 "expirationDate": "2026-11-13"
linshare --json share ./contract.pdf --to [email protected] --expires 2026-11-13 --message "請簽署"
命令
| 命令 | 功能 | 需要先確認? |
|---|---|---|
linshare login [--server URL] [--email E] | 使用者一次性登入(密碼,必要時加上 2FA 驗證碼) | 使用者執行 |
linshare login --token [--server URL] | 使用者貼上在 LinShare 網頁 UI 中產生的 token | 使用者執行 |
linshare logout | 忘記(並撤銷)token | 否 |
linshare whoami | 顯示當前使用的伺服器和帳號 | 否 |
linshare share FILE... --to EMAIL... [--expires 7d|2w|1m|YYYY-MM-DD] [--subject S] [--message M] [--password-link] [--alert-if-not-downloaded WHEN] [--send-me-a-copy] [--dry-run] | 上傳並透過電子郵件分享 | 是 |
linshare shares list | 列出使用者已分享的內容 | 否 |
linshare shares revoke ID... | 取消分享 | 是 |
linshare received list | 列出他人與使用者分享的內容 | 否 |
linshare received download ID [--out DIR] | 儲存收到的檔案(絕不覆寫) | 否 |
linshare documents list | 列出使用者的文件 | 否 |
linshare documents delete ID... | 刪除文件 | 是 |
linshare request-files --from EMAIL... --message M [--label L] [--expires ...] [--dry-run] | 要求他人傳送檔案(每人一個私人請求) | 是 |
linshare requests list | 列出上傳請求及已收到的檔案 | 否 |
linshare requests download ID [--out DIR] | 將收到的檔案以 ZIP 壓縮檔下載 | 否 |
linshare requests close ID... | 關閉請求 | 是 |
linshare spaces list [--in WORKSPACE] | 列出工作群組和工作空間及其角色 | 否 |
linshare spaces create NAME [--workspace] [--in WORKSPACE] | 建立工作群組(或工作空間) | 否 |
linshare spaces delete ID... | 刪除空間及其所有檔案(對所有人) | 是 |
linshare spaces files SPACE [--folder ID] | 列出工作群組中的資料夾和檔案 | 否 |
linshare spaces mkdir SPACE NAME [--folder ID] | 建立資料夾 | 否 |
linshare spaces upload SPACE FILE... [--folder ID] [--dry-run] | 將檔案放入工作群組(成員會看到) | 是 |
linshare spaces download SPACE ID [--out DIR] | 儲存工作群組檔案(絕不覆寫) | 否 |
linshare spaces delete-files SPACE ID... | 刪除檔案或資料夾(對所有人) | 是 |
linshare spaces members SPACE | 列出成員和角色 | 否 |
linshare spaces add-member SPACE EMAIL --role R [--dry-run] | 授予某人存取權限 | 是 |
linshare spaces set-role SPACE MEMBER ROLE | 更改角色(MEMBER:電子郵件或成員 ID) | 是 |
linshare spaces remove-member SPACE MEMBER | 移除存取權限 | 是 |
--to 和 --from 可以重複以指定多人:--to [email protected] --to [email protected]。
「外部」是一個啟發式判斷:與使用者的電子郵件域名不同。
結束代碼
0 成功 · 1 輸入錯誤或指令錯誤 · 2 未登入 / 登入問題 · 3 伺服器拒絕 · 4 伺服器無法連線、故障或太慢("code": "timeout")。