user_group.py, device_group.py python cli doc

Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
21pages 2025-11-07 21:08:07 +08:00
parent 6af6ba3051
commit 9fb232d61f
22 changed files with 2974 additions and 149 deletions

View File

@ -913,7 +913,25 @@ Die "Scroll-Stil"-Option in den Einstellungen jedes Peers steuert dann den Scrol
| Installation erforderlich | Werte | Standard | Beispiel |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Hinweis**: Die `scrolledge`-Option ist ab RustDesk 1.4.4 verfügbar.
### edge-scroll-edge-thickness
Diese Option steuert die Randdicke, wenn `scroll-style` auf `scrolledge` gesetzt ist. Die Randdicke bestimmt die Größe des scrollbaren Bereichs an den Bildschirmrändern.
Diese Option ist nur wirksam, wenn `scroll-style=scrolledge`.
**Ort**:
1. **Desktop** Einstellungen → Anzeige → Randscroll-Randdicke
| Installation erforderlich | Werte | Standard | Beispiel |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Hinweis**: Diese Option ist ab RustDesk 1.4.4 verfügbar.
### image-quality

View File

@ -916,7 +916,25 @@ The "scroll-style" option in each peer's settings will then control the scroll s
| Install required | Values | Default | Example |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Note**: The `scrolledge` option is available starting from RustDesk 1.4.4.
### edge-scroll-edge-thickness
This option controls the edge thickness when `scroll-style` is set to `scrolledge`. The edge thickness determines the size of the scrollable area at the screen edges.
This option is only effective when `scroll-style=scrolledge`.
**Location**:
1. **Desktop** Settings → Display → Edge scroll edge thickness
| Install required | Values | Default | Example |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Note**: This option is available starting from RustDesk 1.4.4.
### image-quality

View File

@ -913,7 +913,25 @@ La opción "estilo de scroll" en las configuraciones de cada par controlará lue
| Instalación requerida | Valores | Predeterminado | Ejemplo |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Nota**: La opción `scrolledge` está disponible a partir de RustDesk 1.4.4.
### edge-scroll-edge-thickness
Esta opción controla el grosor del borde cuando `scroll-style` está configurado en `scrolledge`. El grosor del borde determina el tamaño del área desplazable en los bordes de la pantalla.
Esta opción solo es efectiva cuando `scroll-style=scrolledge`.
**Ubicación**:
1. **Escritorio** Configuración → Pantalla → Grosor del borde de scroll
| Instalación requerida | Valores | Predeterminado | Ejemplo |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Nota**: Esta opción está disponible a partir de RustDesk 1.4.4.
### image-quality

View File

@ -913,7 +913,25 @@ L'option "style de défilement" dans les paramètres de chaque pair contrôlera
| Installation requise | Valeurs | Défaut | Exemple |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Note** : L'option `scrolledge` est disponible à partir de RustDesk 1.4.4.
### edge-scroll-edge-thickness
Cette option contrôle l'épaisseur du bord lorsque `scroll-style` est défini sur `scrolledge`. L'épaisseur du bord détermine la taille de la zone défilable aux bords de l'écran.
Cette option n'est effective que lorsque `scroll-style=scrolledge`.
**Emplacement** :
1. **Bureau** Paramètres → Affichage → Épaisseur du bord de défilement
| Installation requise | Valeurs | Défaut | Exemple |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Note** : Cette option est disponible à partir de RustDesk 1.4.4.
### image-quality

View File

@ -913,7 +913,25 @@ L'opzione "stile scorrimento" nelle impostazioni di ogni peer controllerà quind
| Installazione richiesta | Valori | Predefinito | Esempio |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Nota**: L'opzione `scrolledge` è disponibile a partire da RustDesk 1.4.4.
### edge-scroll-edge-thickness
Questa opzione controlla lo spessore del bordo quando `scroll-style` è impostato su `scrolledge`. Lo spessore del bordo determina la dimensione dell'area scorrevole ai bordi dello schermo.
Questa opzione è efficace solo quando `scroll-style=scrolledge`.
**Posizione**:
1. **Desktop** Impostazioni → Display → Spessore bordo scorrimento
| Installazione richiesta | Valori | Predefinito | Esempio |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Nota**: Questa opzione è disponibile a partire da RustDesk 1.4.4.
### image-quality

View File

@ -877,7 +877,25 @@ ar, bg, ca, cs, da, de, el, en, eo, es, et, fa, fr, he, hr, hu, id, it, ja, ko,
| インストール必要 | 値 | デフォルト | 例 |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**注意**`scrolledge` オプションは RustDesk 1.4.4 以降で利用可能です。
### edge-scroll-edge-thickness
このオプションは、`scroll-style` が `scrolledge` に設定されている場合のエッジの厚さを制御します。エッジの厚さは、画面の端でのスクロール可能な領域のサイズを決定します。
このオプションは、`scroll-style=scrolledge` の場合にのみ有効です。
**場所**
1. **デスクトップ** 設定 → ディスプレイ → エッジスクロールの厚さ
| インストール必要 | 値 | デフォルト | 例 |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**注意**:このオプションは RustDesk 1.4.4 以降で利用可能です。
### image-quality

View File

@ -916,7 +916,25 @@ Opcja "scroll-style" w ustawieniach każdego partnera będzie wtedy kontrolować
| Wymagana instalacja | Wartości | Domyślne | Przykład |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Uwaga**: Opcja `scrolledge` jest dostępna od RustDesk 1.4.4.
### edge-scroll-edge-thickness
Ta opcja kontroluje grubość krawędzi, gdy `scroll-style` jest ustawiony na `scrolledge`. Grubość krawędzi określa rozmiar obszaru przewijanego na krawędziach ekranu.
Ta opcja jest skuteczna tylko wtedy, gdy `scroll-style=scrolledge`.
**Lokalizacja**:
1. **K. stacjonarny** Ustawienia → Wyświetlanie → Grubość krawędzi przewijania
| Wymagana instalacja | Wartości | Domyślne | Przykład |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Uwaga**: Ta opcja jest dostępna od RustDesk 1.4.4.
### image-quality

View File

@ -915,7 +915,25 @@ A opção "estilo de rolagem" nas configurações de cada par controlará então
| Instalação necessária | Valores | Padrão | Exemplo |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Nota**: A opção `scrolledge` está disponível a partir do RustDesk 1.4.4.
### edge-scroll-edge-thickness
Esta opção controla a espessura da borda quando `scroll-style` está definido como `scrolledge`. A espessura da borda determina o tamanho da área rolável nas bordas da tela.
Esta opção só é efetiva quando `scroll-style=scrolledge`.
**Localização**:
1. **Desktop** Configurações → Display → Espessura da borda de rolagem
| Instalação necessária | Valores | Padrão | Exemplo |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Nota**: Esta opção está disponível a partir do RustDesk 1.4.4.
### image-quality

View File

@ -916,7 +916,25 @@ Setarea din fiecare peer va controla stilul de derulare.
| Install required | Values | Default | Example |
| :------: | :------: | :------: | :------: |
| N | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**Notă**: Opțiunea `scrolledge` este disponibilă începând cu RustDesk 1.4.4.
### edge-scroll-edge-thickness
Această opțiune controlează grosimea marginii când `scroll-style` este setat pe `scrolledge`. Grosimea marginii determină dimensiunea zonei derulabile la marginile ecranului.
Această opțiune este efectivă doar când `scroll-style=scrolledge`.
**Locație**:
1. **Desktop** Settings → Display → Edge scroll edge thickness
| Install required | Values | Default | Example |
| :------: | :------: | :------: | :------: |
| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**Notă**: Această opțiune este disponibilă începând cu RustDesk 1.4.4.
### image-quality

View File

@ -914,7 +914,25 @@ ar, bg, ca, cs, da, de, el, en, eo, es, et, fa, fr, he, hr, hu, id, it, ja, ko,
| 安装需要 | 值 | 默认值 | 示例 |
| :------: | :------: | :------: | :------: |
| 否 | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| 否 | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**注意**`scrolledge` 选项从 RustDesk 1.4.4 开始可用。
### edge-scroll-edge-thickness
此选项控制当 `scroll-style` 设置为 `scrolledge` 时的边缘厚度。边缘厚度决定了屏幕边缘可滚动区域的大小。
此选项仅在 `scroll-style=scrolledge` 时有效。
**位置**
1. **桌面** 设置 → 显示 → 边缘滚动边缘厚度
| 安装需要 | 值 | 默认值 | 示例 |
| :------: | :------: | :------: | :------: |
| 否 | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**注意**:此选项从 RustDesk 1.4.4 开始可用。
### image-quality

View File

@ -916,7 +916,25 @@ ar, bg, ca, cs, da, de, el, en, eo, es, et, fa, fr, he, hr, hu, id, it, ja, ko,
| 安裝需要 | 值 | 預設值 | 範例 |
| :------: | :------: | :------: | :------: |
| 否 | scrollauto, scrollbar | scrollauto | `scroll-style=scrollauto` |
| 否 | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
**注意**`scrolledge` 選項從 RustDesk 1.4.4 開始可用。
### edge-scroll-edge-thickness
此選項控制當 `scroll-style` 設定為 `scrolledge` 時的邊緣厚度。邊緣厚度決定了螢幕邊緣可滾動區域的大小。
此選項僅在 `scroll-style=scrolledge` 時有效。
**位置**
1. **桌面** 設定 → 顯示 → 邊緣滾動邊緣厚度
| 安裝需要 | 值 | 預設值 | 範例 |
| :------: | :------: | :------: | :------: |
| 否 | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
**注意**:此選項從 RustDesk 1.4.4 開始可用。
### image-quality

View File

@ -143,23 +143,197 @@ oder
#### Benutzerverwaltung (`users.py`)
**Hilfe anzeigen:**
./users.py -h
`./users.py -h`
**Benutzer anzeigen:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filter:**
`--name`: Benutzername
`--group_name`: Benutzergruppe
- `--name`: Benutzername (unscharfe Suche)
- `--group_name`: Benutzergruppe (exakte Übereinstimmung)
**Beispiel:**
./users.py --url https://example.com --token <token> view --group_name admins
`./users.py --url https://example.com --token <token> view --group_name Default`
**Operationen:**
`view` kann durch `enable`, `disable` oder `delete` ersetzt werden.
**Grundlegende Operationen:**
**Beispiel (Benutzer deaktivieren):**
./users.py --url https://example.com --token <token> disable --name testuser
- **Benutzer deaktivieren:**
`./users.py --url <url> --token <token> disable --name testuser`
- **Benutzer aktivieren:**
`./users.py --url <url> --token <token> enable --name testuser`
- **Benutzer löschen:**
`./users.py --url <url> --token <token> delete --name testuser`
**Benutzererstellung und Einladung:**
- **Neuen Benutzer erstellen:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "Notiz"]`
Erforderlich: `--name`, `--password`, `--group_name`
Optional: `--email`, `--note`
- **Benutzer per E-Mail einladen:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "Notiz"]`
Erforderlich: `--email`, `--name`, `--group_name`
Optional: `--note`
**2FA und Sicherheitsoperationen:**
- **2FA-Erzwingung aktivieren:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Erforderlich: `--web-console-url`
- **2FA-Erzwingung deaktivieren:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Optional: `--web-console-url`
- **2FA zurücksetzen:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **E-Mail-Verifizierung deaktivieren:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Erzwungenes Abmelden:**
`./users.py --url <url> --token <token> force-logout --name username`
**Hinweise:**
- Bei Operationen auf mehrere Benutzer (durch Filter übereinstimmend) wird eine Bestätigung angefordert
- Wenn keine Benutzer übereinstimmen, wird "Found 0 users" angezeigt
---
#### Benutzergruppenverwaltung (`user_group.py`)
**Hilfe anzeigen:**
`./user_group.py -h`
**Benutzergruppen anzeigen:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Beispiel:**
`./user_group.py --url https://example.com --token <token> view --name "Vertriebsteam"`
**Gruppenoperationen:**
- **Benutzergruppe erstellen:**
`./user_group.py --url <url> --token <token> add --name "Gruppenname" [--note "Beschreibung"] [--accessed-from '<json>'] [--access-to '<json>']`
Beispiel mit Zugriffskontrolle:
`./user_group.py --url <url> --token <token> add --name "Engineering" --accessed-from '[{"type":0,"name":"Manager"}]' --access-to '[{"type":1,"name":"Dev-Server"}]'`
- **Benutzergruppe aktualisieren:**
`./user_group.py --url <url> --token <token> update --name "Gruppenname" [--new-name "Neuer Name"] [--note "Neue Notiz"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Benutzergruppe löschen:**
`./user_group.py --url <url> --token <token> delete --name "Gruppenname"`
Unterstützt kommagetrennte Namen: `--name "Gruppe1,Gruppe2,Gruppe3"`
**Benutzerverwaltung in Gruppen:**
- **Benutzer in Gruppe anzeigen:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filter:
- `--name`: Gruppenname (exakte Übereinstimmung, optional)
- `--user-name`: Benutzername (unscharfe Suche, optional)
Beispiel:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Benutzer zur Gruppe hinzufügen:**
`./user_group.py --url <url> --token <token> add-users --name "Gruppenname" --users "user1,user2,user3"`
**Zugriffskontrollparameter:**
- `--accessed-from`: JSON-Array, das definiert, wer auf diese Benutzergruppe zugreifen kann
- Type 0 = Benutzergruppe (z.B. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Benutzer (z.B. `[{"type":2,"name":"john"}]`)
- `--access-to`: JSON-Array, das definiert, worauf diese Benutzergruppe zugreifen kann
- Type 0 = Benutzergruppe (z.B. `[{"type":0,"name":"Support"}]`)
- Type 1 = Gerätegruppe (z.B. `[{"type":1,"name":"Server"}]`)
**Hinweis:** Verwenden Sie einfache Anführungszeichen um JSON-Arrays, um Shell-Parsing-Probleme zu vermeiden.
**Berechtigungsanforderungen:**
- `view/add/update/delete/add-users` Befehle benötigen **Benutzergruppen-Berechtigung**
- `view-users` Befehl benötigt **Benutzerberechtigung**
---
#### Gerätegruppenverwaltung (`device_group.py`)
**Hilfe anzeigen:**
`./device_group.py -h`
**Gerätegruppen anzeigen:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Beispiel:**
`./device_group.py --url https://example.com --token <token> view`
**Gruppenoperationen:**
- **Gerätegruppe erstellen:**
`./device_group.py --url <url> --token <token> add --name "Gruppenname" [--note "Beschreibung"] [--accessed-from '<json>']`
Beispiel:
`./device_group.py --url <url> --token <token> add --name "Produktion" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Gerätegruppe aktualisieren:**
`./device_group.py --url <url> --token <token> update --name "Gruppenname" [--new-name "Neuer Name"] [--note "Neue Notiz"] [--accessed-from '<json>']`
- **Gerätegruppe löschen:**
`./device_group.py --url <url> --token <token> delete --name "Gruppenname"`
Unterstützt kommagetrennte Namen: `--name "Gruppe1,Gruppe2,Gruppe3"`
**Geräteverwaltung in Gruppen:**
- **Geräte in Gruppe anzeigen:**
`./device_group.py --url <url> --token <token> view-devices [Filter]`
Verfügbare Filter:
- `--name`: Gerätegruppenname (exakte Übereinstimmung)
- `--id`: Geräte-ID (unscharfe Suche)
- `--device-name`: Gerätename (unscharfe Suche)
- `--user-name`: Benutzername/Besitzer (unscharfe Suche)
- `--device-username`: Am Gerät angemeldeter Benutzername (unscharfe Suche)
Beispiele:
```bash
# Alle Geräte in einer Gruppe anzeigen
./device_group.py --url <url> --token <token> view-devices --name Produktion
# Nach Gerätename suchen
./device_group.py --url <url> --token <token> view-devices --device-name server
# Filter kombinieren
./device_group.py --url <url> --token <token> view-devices --name Produktion --user-name john
```
- **Geräte zur Gruppe hinzufügen:**
`./device_group.py --url <url> --token <token> add-devices --name "Gruppenname" --ids "deviceid1,deviceid2"`
- **Geräte aus Gruppe entfernen:**
`./device_group.py --url <url> --token <token> remove-devices --name "Gruppenname" --ids "deviceid1,deviceid2"`
**Zugriffskontrollparameter:**
- `--accessed-from`: JSON-Array, das definiert, wer auf diese Gerätegruppe zugreifen kann
- Type 0 = Benutzergruppe (z.B. `[{"type":0,"name":"Engineers"}]`)
- Type 2 = Benutzer (z.B. `[{"type":2,"name":"admin"}]`)
**Berechtigungsanforderungen:**
- `view/add/update/delete/add-devices/remove-devices` Befehle benötigen **Gerätegruppen-Berechtigung**
- `view-devices` Befehl benötigt **Geräteberechtigung**
---
@ -233,6 +407,74 @@ oder
---
#### Strategieverwaltung (`strategies.py`)
**Hilfe anzeigen:**
`./strategies.py -h`
**Alle Strategien auflisten:**
`./strategies.py --url <url> --token <token> list`
**Spezifische Strategie anzeigen:**
```bash
# Nach Name
./strategies.py --url <url> --token <token> view --name "Default"
# Nach GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Strategie aktivieren oder deaktivieren:**
```bash
./strategies.py --url <url> --token <token> enable --name "StrategieName"
./strategies.py --url <url> --token <token> disable --name "StrategieName"
```
**Strategie Geräten, Benutzern oder Gerätegruppen zuweisen:**
```bash
# Geräten zuweisen (nach Geräte-ID)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Benutzern zuweisen (nach Benutzername)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Gerätegruppen zuweisen (nach Gruppenname)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Gemischte Zuweisung
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Strategie-Zuweisung aufheben:**
```bash
# Von Geräten aufheben
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Von Benutzern aufheben
./strategies.py --url <url> --token <token> unassign --users "admin"
# Von Gerätegruppen aufheben
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Hinweise:**
- Das Skript unterstützt sowohl Namen als auch GUIDs für Benutzer und Gerätegruppen
- Geräte-IDs werden automatisch in GUIDs konvertiert
- Alle assign/unassign-Operationen können mehrere Ziele gleichzeitig bearbeiten
**Berechtigungsanforderungen:**
- `list/view/enable/disable/assign/unassign` Befehle benötigen **Strategie-Berechtigung**
- `--peers` benötigt **Geräte-Berechtigung:r** (für ID zu GUID Lookup)
- `--users` benötigt **Benutzer-Berechtigung:r** (für Benutzername zu GUID Lookup)
- `--device-groups` benötigt **Gerätegruppen-Berechtigung:r** (für Gruppenname zu GUID Lookup)
---
#### Prüfprotokolle (`audits.py`)
**Hilfe anzeigen:**

View File

@ -145,17 +145,188 @@ The command line on Windows does not have output by default. To get output, plea
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filters:**
`--name`: username
`--group_name`: user group
- `--name`: username (fuzzy search)
- `--group_name`: user group (exact match)
**Example:**
`./users.py --url https://example.com --token <token> view --group_name admins`
`./users.py --url https://example.com --token <token> view --group_name Default`
**Operations:**
view can be replaced with `enable`, `disable`, or `delete`.
**Basic operations:**
**Example (disable user):**
`./users.py --url https://example.com --token <token> disable --name testuser`
- **Disable user:**
`./users.py --url <url> --token <token> disable --name testuser`
- **Enable user:**
`./users.py --url <url> --token <token> enable --name testuser`
- **Delete user:**
`./users.py --url <url> --token <token> delete --name testuser`
**User creation and invitation:**
- **Create new user:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "note"]`
Required: `--name`, `--password`, `--group_name`
Optional: `--email`, `--note`
- **Invite user by email:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "note"]`
Required: `--email`, `--name`, `--group_name`
Optional: `--note`
**2FA and security operations:**
- **Enable 2FA enforcement:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Required: `--web-console-url`
- **Disable 2FA enforcement:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Optional: `--web-console-url`
- **Reset 2FA:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Disable email verification:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Force logout:**
`./users.py --url <url> --token <token> force-logout --name username`
**Notes:**
- When operating on multiple users (matched by filters), you will be prompted for confirmation
- If no users match the filter, it will display "Found 0 users"
---
#### User Groups Management (`user_group.py`)
**Show help:**
`./user_group.py -h`
**View user groups:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Example:**
`./user_group.py --url https://example.com --token <token> view --name "Sales Team"`
**Group operations:**
- **Create user group:**
`./user_group.py --url <url> --token <token> add --name "GroupName" [--note "description"] [--accessed-from '<json>'] [--access-to '<json>']`
Example with access control:
`./user_group.py --url <url> --token <token> add --name "Engineering" --accessed-from '[{"type":0,"name":"Managers"}]' --access-to '[{"type":1,"name":"DevServers"}]'`
- **Update user group:**
`./user_group.py --url <url> --token <token> update --name "GroupName" [--new-name "NewName"] [--note "new note"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Delete user group:**
`./user_group.py --url <url> --token <token> delete --name "GroupName"`
Supports comma-separated names: `--name "Group1,Group2,Group3"`
**User management in groups:**
- **View users in group:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filters:
- `--name`: group name (exact match, optional)
- `--user-name`: username (fuzzy search, optional)
Example:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Add users to group:**
`./user_group.py --url <url> --token <token> add-users --name "GroupName" --users "user1,user2,user3"`
**Access control parameters:**
- `--accessed-from`: JSON array defining who can access this user group
- Type 0 = User Group (e.g., `[{"type":0,"name":"Admins"}]`)
- Type 2 = User (e.g., `[{"type":2,"name":"john"}]`)
- `--access-to`: JSON array defining what this user group can access
- Type 0 = User Group (e.g., `[{"type":0,"name":"Support"}]`)
- Type 1 = Device Group (e.g., `[{"type":1,"name":"Servers"}]`)
**Permission requirements:**
- `view/add/update/delete/add-users` commands require **User Group Permission**
- `view-users` command requires **User Permission**
---
#### Device Groups Management (`device_group.py`)
**Show help:**
`./device_group.py -h`
**View device groups:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Example:**
`./device_group.py --url https://example.com --token <token> view`
**Group operations:**
- **Create device group:**
`./device_group.py --url <url> --token <token> add --name "GroupName" [--note "description"] [--accessed-from '<json>']`
Example:
`./device_group.py --url <url> --token <token> add --name "Production" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Update device group:**
`./device_group.py --url <url> --token <token> update --name "GroupName" [--new-name "NewName"] [--note "new note"] [--accessed-from '<json>']`
- **Delete device group:**
`./device_group.py --url <url> --token <token> delete --name "GroupName"`
Supports comma-separated names: `--name "Group1,Group2,Group3"`
**Device management in groups:**
- **View devices in group:**
`./device_group.py --url <url> --token <token> view-devices [filters]`
Available filters:
- `--name`: device group name (exact match)
- `--id`: device ID (fuzzy search)
- `--device-name`: device name (fuzzy search)
- `--user-name`: user name/owner (fuzzy search)
- `--device-username`: logged-in username on device (fuzzy search)
Examples:
```bash
# View all devices in a group
./device_group.py --url <url> --token <token> view-devices --name Production
# Search by device name
./device_group.py --url <url> --token <token> view-devices --device-name server
# Combine filters
./device_group.py --url <url> --token <token> view-devices --name Production --user-name john
```
- **Add devices to group:**
`./device_group.py --url <url> --token <token> add-devices --name "GroupName" --ids "deviceid1,deviceid2"`
- **Remove devices from group:**
`./device_group.py --url <url> --token <token> remove-devices --name "GroupName" --ids "deviceid1,deviceid2"`
**Access control parameter:**
- `--accessed-from`: JSON array defining who can access this device group
- Type 0 = User Group (e.g., `[{"type":0,"name":"Engineers"}]`)
- Type 2 = User (e.g., `[{"type":2,"name":"admin"}]`)
**Permission requirements:**
- `view/add/update/delete/add-devices/remove-devices` commands require **Device Group Permission**
- `view-devices` command requires **Device Permission**
---
@ -229,6 +400,73 @@ view can be replaced with `enable`, `disable`, `delete`, or `assign`.
---
#### Strategies Management (`strategies.py`)
**Show help:**
`./strategies.py -h`
**List all strategies:**
`./strategies.py --url <url> --token <token> list`
**View a specific strategy:**
```bash
# By name
./strategies.py --url <url> --token <token> view --name "Default"
# By GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Enable or disable a strategy:**
```bash
./strategies.py --url <url> --token <token> enable --name "StrategyName"
./strategies.py --url <url> --token <token> disable --name "StrategyName"
```
**Assign strategy to devices, users, or device groups:**
```bash
# Assign to devices (by device ID)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Assign to users (by username)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Assign to device groups (by group name)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Mixed assignment
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Unassign strategy:**
```bash
# Unassign from devices
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Unassign from users
./strategies.py --url <url> --token <token> unassign --users "admin"
# Unassign from device groups
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Notes:**
- The script supports both names and GUIDs for users and device groups
- Device IDs are automatically converted to GUIDs
- All assign/unassign operations can target multiple resources at once
**Permission requirements:**
- `list/view/enable/disable/assign/unassign` commands require **Strategy Permission**
- `--peers` requires **Device Permission:r** (for ID to GUID lookup)
- `--users` requires **User Permission:r** (for username to GUID lookup)
- `--device-groups` requires **Device Group Permission:r** (for name to GUID lookup)
---
#### Audits (`audits.py`)
**Show help:**

View File

@ -142,29 +142,197 @@ ver [aquí](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomm
#### Gestión de Usuarios (`users.py`)
**Mostrar ayuda:**
./users.py -h
`./users.py -h`
**Ver usuarios:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filtros:**
--name: nombre de usuario
--group_name: grupo de usuarios
- `--name`: nombre de usuario (búsqueda difusa)
- `--group_name`: grupo de usuarios (coincidencia exacta)
**Ejemplo:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**Operaciones básicas:**
**Operaciones:**
- **Deshabilitar usuario:**
`./users.py --url <url> --token <token> disable --name testuser`
`view` puede reemplazarse por `enable`, `disable`, o `delete`.
- **Habilitar usuario:**
`./users.py --url <url> --token <token> enable --name testuser`
**Ejemplo (deshabilitar usuario):**
- **Eliminar usuario:**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**Creación e invitación de usuarios:**
- **Crear nuevo usuario:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "nota"]`
Requerido: `--name`, `--password`, `--group_name`
Opcional: `--email`, `--note`
- **Invitar usuario por correo:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "nota"]`
Requerido: `--email`, `--name`, `--group_name`
Opcional: `--note`
**Operaciones 2FA y seguridad:**
- **Habilitar aplicación 2FA:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Requerido: `--web-console-url`
- **Deshabilitar aplicación 2FA:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Opcional: `--web-console-url`
- **Restablecer 2FA:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Deshabilitar verificación por correo:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Cerrar sesión forzada:**
`./users.py --url <url> --token <token> force-logout --name username`
**Notas:**
- Al operar sobre múltiples usuarios (coincidentes con filtros), se solicitará confirmación
- Si no hay usuarios coincidentes, se mostrará "Found 0 users"
---
#### Gestión de Grupos de Usuarios (`user_group.py`)
**Mostrar ayuda:**
`./user_group.py -h`
**Ver grupos de usuarios:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Ejemplo:**
`./user_group.py --url https://example.com --token <token> view --name "Equipo Ventas"`
**Operaciones de grupo:**
- **Crear grupo de usuarios:**
`./user_group.py --url <url> --token <token> add --name "NombreGrupo" [--note "descripción"] [--accessed-from '<json>'] [--access-to '<json>']`
Ejemplo con control de acceso:
`./user_group.py --url <url> --token <token> add --name "Ingeniería" --accessed-from '[{"type":0,"name":"Gerentes"}]' --access-to '[{"type":1,"name":"Servidores Dev"}]'`
- **Actualizar grupo de usuarios:**
`./user_group.py --url <url> --token <token> update --name "NombreGrupo" [--new-name "Nuevo Nombre"] [--note "nueva nota"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Eliminar grupo de usuarios:**
`./user_group.py --url <url> --token <token> delete --name "NombreGrupo"`
Admite nombres separados por comas: `--name "Grupo1,Grupo2,Grupo3"`
**Gestión de usuarios en grupos:**
- **Ver usuarios en grupo:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filtros:
- `--name`: nombre del grupo (coincidencia exacta, opcional)
- `--user-name`: nombre de usuario (búsqueda difusa, opcional)
Ejemplo:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Agregar usuarios al grupo:**
`./user_group.py --url <url> --token <token> add-users --name "NombreGrupo" --users "user1,user2,user3"`
**Parámetros de control de acceso:**
- `--accessed-from`: array JSON que define quién puede acceder a este grupo de usuarios
- Type 0 = Grupo de usuarios (ej. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Usuario (ej. `[{"type":2,"name":"john"}]`)
- `--access-to`: array JSON que define a qué puede acceder este grupo de usuarios
- Type 0 = Grupo de usuarios (ej. `[{"type":0,"name":"Soporte"}]`)
- Type 1 = Grupo de dispositivos (ej. `[{"type":1,"name":"Servidores"}]`)
**Nota:** Use comillas simples alrededor de los arrays JSON para evitar problemas de análisis del shell.
**Requisitos de permisos:**
- Los comandos `view/add/update/delete/add-users` requieren **Permiso de Grupo de Usuarios**
- El comando `view-users` requiere **Permiso de Usuario**
---
#### Gestión de Grupos de Dispositivos (`device_group.py`)
**Mostrar ayuda:**
`./device_group.py -h`
**Ver grupos de dispositivos:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Ejemplo:**
`./device_group.py --url https://example.com --token <token> view`
**Operaciones de grupo:**
- **Crear grupo de dispositivos:**
`./device_group.py --url <url> --token <token> add --name "NombreGrupo" [--note "descripción"] [--accessed-from '<json>']`
Ejemplo:
`./device_group.py --url <url> --token <token> add --name "Producción" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Actualizar grupo de dispositivos:**
`./device_group.py --url <url> --token <token> update --name "NombreGrupo" [--new-name "Nuevo Nombre"] [--note "nueva nota"] [--accessed-from '<json>']`
- **Eliminar grupo de dispositivos:**
`./device_group.py --url <url> --token <token> delete --name "NombreGrupo"`
Admite nombres separados por comas: `--name "Grupo1,Grupo2,Grupo3"`
**Gestión de dispositivos en grupos:**
- **Ver dispositivos en grupo:**
`./device_group.py --url <url> --token <token> view-devices [filtros]`
Filtros disponibles:
- `--name`: nombre del grupo de dispositivos (coincidencia exacta)
- `--id`: ID del dispositivo (búsqueda difusa)
- `--device-name`: nombre del dispositivo (búsqueda difusa)
- `--user-name`: nombre de usuario/propietario (búsqueda difusa)
- `--device-username`: nombre de usuario conectado en el dispositivo (búsqueda difusa)
Ejemplos:
```bash
# Ver todos los dispositivos en un grupo
./device_group.py --url <url> --token <token> view-devices --name Producción
# Buscar por nombre de dispositivo
./device_group.py --url <url> --token <token> view-devices --device-name server
# Combinar filtros
./device_group.py --url <url> --token <token> view-devices --name Producción --user-name john
```
- **Agregar dispositivos al grupo:**
`./device_group.py --url <url> --token <token> add-devices --name "NombreGrupo" --ids "deviceid1,deviceid2"`
- **Quitar dispositivos del grupo:**
`./device_group.py --url <url> --token <token> remove-devices --name "NombreGrupo" --ids "deviceid1,deviceid2"`
**Parámetro de control de acceso:**
- `--accessed-from`: array JSON que define quién puede acceder a este grupo de dispositivos
- Type 0 = Grupo de usuarios (ej. `[{"type":0,"name":"Ingenieros"}]`)
- Type 2 = Usuario (ej. `[{"type":2,"name":"admin"}]`)
**Requisitos de permisos:**
- Los comandos `view/add/update/delete/add-devices/remove-devices` requieren **Permiso de Grupo de Dispositivos**
- El comando `view-devices` requiere **Permiso de Dispositivo**
---
@ -254,6 +422,74 @@ ver [aquí](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomm
---
#### Gestión de Estrategias (`strategies.py`)
**Mostrar ayuda:**
`./strategies.py -h`
**Listar todas las estrategias:**
`./strategies.py --url <url> --token <token> list`
**Ver una estrategia específica:**
```bash
# Por nombre
./strategies.py --url <url> --token <token> view --name "Default"
# Por GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Habilitar o deshabilitar una estrategia:**
```bash
./strategies.py --url <url> --token <token> enable --name "NombreEstrategia"
./strategies.py --url <url> --token <token> disable --name "NombreEstrategia"
```
**Asignar estrategia a dispositivos, usuarios o grupos de dispositivos:**
```bash
# Asignar a dispositivos (por ID de dispositivo)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Asignar a usuarios (por nombre de usuario)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Asignar a grupos de dispositivos (por nombre de grupo)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Asignación mixta
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Desasignar estrategia:**
```bash
# Desasignar de dispositivos
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Desasignar de usuarios
./strategies.py --url <url> --token <token> unassign --users "admin"
# Desasignar de grupos de dispositivos
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Notas:**
- El script admite nombres y GUIDs para usuarios y grupos de dispositivos
- Los IDs de dispositivos se convierten automáticamente en GUIDs
- Todas las operaciones assign/unassign pueden trabajar con múltiples objetivos a la vez
**Requisitos de permisos:**
- Los comandos `list/view/enable/disable/assign/unassign` requieren **Permiso de Estrategia**
- `--peers` requiere **Permiso de Dispositivo:r** (para búsqueda de ID a GUID)
- `--users` requiere **Permiso de Usuario:r** (para búsqueda de nombre de usuario a GUID)
- `--device-groups` requiere **Permiso de Grupo de Dispositivos:r** (para búsqueda de nombre de grupo a GUID)
---
#### Auditorías (`audits.py`)
**Mostrar ayuda:**

View File

@ -141,33 +141,200 @@ voir [ici](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomme
#### Gestion des Utilisateurs (`users.py`)
**Afficher laide :**
./users.py -h
**Afficher l'aide :**
`./users.py -h`
**Voir les utilisateurs :**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filtres :**
--name : nom dutilisateur
--group_name : groupe dutilisateurs
- `--name` : nom d'utilisateur (recherche floue)
- `--group_name` : groupe d'utilisateurs (correspondance exacte)
**Exemple :**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**Opérations de base :**
**Opérations :**
- **Désactiver un utilisateur :**
`./users.py --url <url> --token <token> disable --name testuser`
`view` peut être remplacé par `enable`, `disable`, ou `delete`.
- **Activer un utilisateur :**
`./users.py --url <url> --token <token> enable --name testuser`
**Exemple (désactiver un utilisateur) :**
- **Supprimer un utilisateur :**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**Création et invitation d'utilisateurs :**
- **Créer un nouvel utilisateur :**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "note"]`
Requis : `--name`, `--password`, `--group_name`
Optionnel : `--email`, `--note`
- **Inviter un utilisateur par e-mail :**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "note"]`
Requis : `--email`, `--name`, `--group_name`
Optionnel : `--note`
**Opérations 2FA et sécurité :**
- **Activer l'application 2FA :**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Requis : `--web-console-url`
- **Désactiver l'application 2FA :**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Optionnel : `--web-console-url`
- **Réinitialiser 2FA :**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Désactiver la vérification par e-mail :**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Déconnexion forcée :**
`./users.py --url <url> --token <token> force-logout --name username`
**Remarques :**
- Lors d'opérations sur plusieurs utilisateurs (correspondants aux filtres), une confirmation sera demandée
- Si aucun utilisateur ne correspond, "Found 0 users" sera affiché
---
#### Gestion des Groupes d'Utilisateurs (`user_group.py`)
**Afficher l'aide :**
`./user_group.py -h`
**Voir les groupes d'utilisateurs :**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Exemple :**
`./user_group.py --url https://example.com --token <token> view --name "Équipe Ventes"`
**Opérations sur les groupes :**
- **Créer un groupe d'utilisateurs :**
`./user_group.py --url <url> --token <token> add --name "NomGroupe" [--note "description"] [--accessed-from '<json>'] [--access-to '<json>']`
Exemple avec contrôle d'accès :
`./user_group.py --url <url> --token <token> add --name "Ingénierie" --accessed-from '[{"type":0,"name":"Managers"}]' --access-to '[{"type":1,"name":"Serveurs Dev"}]'`
- **Mettre à jour un groupe d'utilisateurs :**
`./user_group.py --url <url> --token <token> update --name "NomGroupe" [--new-name "Nouveau Nom"] [--note "nouvelle note"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Supprimer un groupe d'utilisateurs :**
`./user_group.py --url <url> --token <token> delete --name "NomGroupe"`
Prend en charge les noms séparés par des virgules : `--name "Groupe1,Groupe2,Groupe3"`
**Gestion des utilisateurs dans les groupes :**
- **Voir les utilisateurs dans un groupe :**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filtres :
- `--name` : nom du groupe (correspondance exacte, optionnel)
- `--user-name` : nom d'utilisateur (recherche floue, optionnel)
Exemple :
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Ajouter des utilisateurs à un groupe :**
`./user_group.py --url <url> --token <token> add-users --name "NomGroupe" --users "user1,user2,user3"`
**Paramètres de contrôle d'accès :**
- `--accessed-from` : tableau JSON définissant qui peut accéder à ce groupe d'utilisateurs
- Type 0 = Groupe d'utilisateurs (ex. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Utilisateur (ex. `[{"type":2,"name":"john"}]`)
- `--access-to` : tableau JSON définissant ce à quoi ce groupe d'utilisateurs peut accéder
- Type 0 = Groupe d'utilisateurs (ex. `[{"type":0,"name":"Support"}]`)
- Type 1 = Groupe de périphériques (ex. `[{"type":1,"name":"Serveurs"}]`)
**Remarque :** Utilisez des guillemets simples autour des tableaux JSON pour éviter les problèmes d'analyse du shell.
**Exigences de permissions :**
- Les commandes `view/add/update/delete/add-users` nécessitent **Permission de Groupe d'Utilisateurs**
- La commande `view-users` nécessite **Permission d'Utilisateur**
---
#### Gestion des Groupes de Périphériques (`device_group.py`)
**Afficher l'aide :**
`./device_group.py -h`
**Voir les groupes de périphériques :**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Exemple :**
`./device_group.py --url https://example.com --token <token> view`
**Opérations sur les groupes :**
- **Créer un groupe de périphériques :**
`./device_group.py --url <url> --token <token> add --name "NomGroupe" [--note "description"] [--accessed-from '<json>']`
Exemple :
`./device_group.py --url <url> --token <token> add --name "Production" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Mettre à jour un groupe de périphériques :**
`./device_group.py --url <url> --token <token> update --name "NomGroupe" [--new-name "Nouveau Nom"] [--note "nouvelle note"] [--accessed-from '<json>']`
- **Supprimer un groupe de périphériques :**
`./device_group.py --url <url> --token <token> delete --name "NomGroupe"`
Prend en charge les noms séparés par des virgules : `--name "Groupe1,Groupe2,Groupe3"`
**Gestion des périphériques dans les groupes :**
- **Voir les périphériques dans un groupe :**
`./device_group.py --url <url> --token <token> view-devices [filtres]`
Filtres disponibles :
- `--name` : nom du groupe de périphériques (correspondance exacte)
- `--id` : ID du périphérique (recherche floue)
- `--device-name` : nom du périphérique (recherche floue)
- `--user-name` : nom d'utilisateur/propriétaire (recherche floue)
- `--device-username` : nom d'utilisateur connecté sur le périphérique (recherche floue)
Exemples :
```bash
# Voir tous les périphériques dans un groupe
./device_group.py --url <url> --token <token> view-devices --name Production
# Rechercher par nom de périphérique
./device_group.py --url <url> --token <token> view-devices --device-name server
# Combiner les filtres
./device_group.py --url <url> --token <token> view-devices --name Production --user-name john
```
- **Ajouter des périphériques à un groupe :**
`./device_group.py --url <url> --token <token> add-devices --name "NomGroupe" --ids "deviceid1,deviceid2"`
- **Retirer des périphériques d'un groupe :**
`./device_group.py --url <url> --token <token> remove-devices --name "NomGroupe" --ids "deviceid1,deviceid2"`
**Paramètre de contrôle d'accès :**
- `--accessed-from` : tableau JSON définissant qui peut accéder à ce groupe de périphériques
- Type 0 = Groupe d'utilisateurs (ex. `[{"type":0,"name":"Ingénieurs"}]`)
- Type 2 = Utilisateur (ex. `[{"type":2,"name":"admin"}]`)
**Exigences de permissions :**
- Les commandes `view/add/update/delete/add-devices/remove-devices` nécessitent **Permission de Groupe de Périphériques**
- La commande `view-devices` nécessite **Permission de Périphérique**
---
#### Gestion des Périphériques (`devices.py`)
**Afficher laide :**
@ -254,6 +421,74 @@ voir [ici](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomme
---
#### Gestion des Stratégies (`strategies.py`)
**Afficher l'aide :**
`./strategies.py -h`
**Lister toutes les stratégies :**
`./strategies.py --url <url> --token <token> list`
**Voir une stratégie spécifique :**
```bash
# Par nom
./strategies.py --url <url> --token <token> view --name "Default"
# Par GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Activer ou désactiver une stratégie :**
```bash
./strategies.py --url <url> --token <token> enable --name "NomStratégie"
./strategies.py --url <url> --token <token> disable --name "NomStratégie"
```
**Attribuer une stratégie aux périphériques, utilisateurs ou groupes de périphériques :**
```bash
# Attribuer aux périphériques (par ID de périphérique)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Attribuer aux utilisateurs (par nom d'utilisateur)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Attribuer aux groupes de périphériques (par nom de groupe)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Attribution mixte
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Retirer l'attribution de stratégie :**
```bash
# Retirer des périphériques
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Retirer des utilisateurs
./strategies.py --url <url> --token <token> unassign --users "admin"
# Retirer des groupes de périphériques
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Remarques :**
- Le script prend en charge les noms et les GUIDs pour les utilisateurs et les groupes de périphériques
- Les IDs de périphériques sont automatiquement convertis en GUIDs
- Toutes les opérations assign/unassign peuvent cibler plusieurs ressources à la fois
**Exigences de permissions :**
- Les commandes `list/view/enable/disable/assign/unassign` nécessitent **Permission de Stratégie**
- `--peers` nécessite **Permission de Périphérique:r** (pour la recherche d'ID vers GUID)
- `--users` nécessite **Permission d'Utilisateur:r** (pour la recherche de nom d'utilisateur vers GUID)
- `--device-groups` nécessite **Permission de Groupe de Périphériques:r** (pour la recherche de nom de groupe vers GUID)
---
#### Audits (`audits.py`)
**Afficher laide :**

View File

@ -142,29 +142,201 @@ vedi [qui](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomme
#### Gestione Utenti (`users.py`)
**Mostra aiuto:**
./users.py -h
`./users.py -h`
**Visualizza utenti:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filtri:**
--name : nome utente
--group_name : gruppo utenti
- `--name`: nome utente (ricerca fuzzy)
- `--group_name`: gruppo utenti (corrispondenza esatta)
**Esempio:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**Operazioni di base:**
**Operazioni:**
- **Disabilitare utente:**
`./users.py --url <url> --token <token> disable --name testuser`
`view` può essere sostituito con `enable`, `disable`, o `delete`.
- **Abilitare utente:**
`./users.py --url <url> --token <token> enable --name testuser`
**Esempio (disabilitare utente):**
- **Eliminare utente:**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**Creazione e invito utenti:**
- **Creare nuovo utente:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "nota"]`
Richiesto: `--name`, `--password`, `--group_name`
Opzionale: `--email`, `--note`
- **Invitare utente via email:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "nota"]`
Richiesto: `--email`, `--name`, `--group_name`
Opzionale: `--note`
**Operazioni 2FA e sicurezza:**
- **Abilitare imposizione 2FA:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Richiesto: `--web-console-url`
- **Disabilitare imposizione 2FA:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Opzionale: `--web-console-url`
- **Reimpostare 2FA:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Disabilitare verifica email:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Disconnessione forzata:**
`./users.py --url <url> --token <token> force-logout --name username`
**Note:**
- Quando si opera su più utenti (corrispondenti ai filtri), verrà richiesta conferma
- Se non ci sono utenti corrispondenti, verrà mostrato "Found 0 users"
---
#### Gestione Gruppi Utenti (`user_group.py`)
**Mostra aiuto:**
`./user_group.py -h`
**Visualizza gruppi utenti:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Esempio:**
`./user_group.py --url https://example.com --token <token> view --name "Team Vendite"`
**Operazioni sui gruppi:**
- **Creare gruppo utenti:**
`./user_group.py --url <url> --token <token> add --name "NomeGruppo" [--note "descrizione"] [--accessed-from '<json>'] [--access-to '<json>']`
Esempio con controllo accesso:
`./user_group.py --url <url> --token <token> add --name "Ingegneria" --accessed-from '[{"type":0,"name":"Manager"}]' --access-to '[{"type":1,"name":"Server Dev"}]'`
- **Aggiornare gruppo utenti:**
`./user_group.py --url <url> --token <token> update --name "NomeGruppo" [--new-name "Nuovo Nome"] [--note "nuova nota"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Eliminare gruppo utenti:**
`./user_group.py --url <url> --token <token> delete --name "NomeGruppo"`
Supporta nomi separati da virgola: `--name "Gruppo1,Gruppo2,Gruppo3"`
**Gestione utenti nei gruppi:**
- **Visualizzare utenti nel gruppo:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filtri:
- `--name`: nome del gruppo (corrispondenza esatta, opzionale)
- `--user-name`: nome utente (ricerca fuzzy, opzionale)
Esempio:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Aggiungere utenti al gruppo:**
`./user_group.py --url <url> --token <token> add-users --name "NomeGruppo" --users "user1,user2,user3"`
**Parametri controllo accesso:**
- `--accessed-from`: array JSON che definisce chi può accedere a questo gruppo utenti
- Type 0 = Gruppo utenti (es. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Utente (es. `[{"type":2,"name":"john"}]`)
- `--access-to`: array JSON che definisce a cosa può accedere questo gruppo utenti
- Type 0 = Gruppo utenti (es. `[{"type":0,"name":"Supporto"}]`)
- Type 1 = Gruppo dispositivi (es. `[{"type":1,"name":"Server"}]`)
**Nota:** Utilizzare virgolette singole attorno agli array JSON per evitare problemi di parsing della shell.
**Requisiti di permessi:**
- I comandi `view/add/update/delete/add-users` richiedono **Permesso Gruppo Utenti**
- Il comando `view-users` richiede **Permesso Utente**
---
#### Gestione Gruppi Dispositivi (`device_group.py`)
**Mostra aiuto:**
`./device_group.py -h`
**Visualizza gruppi dispositivi:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Esempio:**
`./device_group.py --url https://example.com --token <token> view`
**Operazioni sui gruppi:**
- **Creare gruppo dispositivi:**
`./device_group.py --url <url> --token <token> add --name "NomeGruppo" [--note "descrizione"] [--accessed-from '<json>']`
Esempio:
`./device_group.py --url <url> --token <token> add --name "Produzione" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Aggiornare gruppo dispositivi:**
`./device_group.py --url <url> --token <token> update --name "NomeGruppo" [--new-name "Nuovo Nome"] [--note "nuova nota"] [--accessed-from '<json>']`
- **Eliminare gruppo dispositivi:**
`./device_group.py --url <url> --token <token> delete --name "NomeGruppo"`
Supporta nomi separati da virgola: `--name "Gruppo1,Gruppo2,Gruppo3"`
**Gestione dispositivi nei gruppi:**
- **Visualizzare dispositivi nel gruppo:**
`./device_group.py --url <url> --token <token> view-devices [filtri]`
Filtri disponibili:
- `--name`: nome del gruppo dispositivi (corrispondenza esatta)
- `--id`: ID dispositivo (ricerca fuzzy)
- `--device-name`: nome dispositivo (ricerca fuzzy)
- `--user-name`: nome utente/proprietario (ricerca fuzzy)
- `--device-username`: nome utente connesso al dispositivo (ricerca fuzzy)
Esempi:
```bash
# Visualizzare tutti i dispositivi in un gruppo
./device_group.py --url <url> --token <token> view-devices --name Produzione
# Cercare per nome dispositivo
./device_group.py --url <url> --token <token> view-devices --device-name server
# Combinare filtri
./device_group.py --url <url> --token <token> view-devices --name Produzione --user-name john
```
- **Visualizzare gruppi dispositivi accessibili:**
`./device_group.py --url <url> --token <token> accessible`
Mostra tutti i gruppi dispositivi accessibili all'utente corrente.
- **Aggiungere dispositivi al gruppo:**
`./device_group.py --url <url> --token <token> add-devices --name "NomeGruppo" --ids "deviceid1,deviceid2"`
- **Rimuovere dispositivi dal gruppo:**
`./device_group.py --url <url> --token <token> remove-devices --name "NomeGruppo" --ids "deviceid1,deviceid2"`
**Parametro controllo accesso:**
- `--accessed-from`: array JSON che definisce chi può accedere a questo gruppo dispositivi
- Type 0 = Gruppo utenti (es. `[{"type":0,"name":"Ingegneri"}]`)
- Type 2 = Utente (es. `[{"type":2,"name":"admin"}]`)
**Requisiti permessi:**
- I comandi `view/add/update/delete/add-devices/remove-devices` richiedono **Permesso Gruppo Dispositivi**
- Il comando `view-devices` richiede **Permesso Dispositivo**
---
@ -254,6 +426,74 @@ vedi [qui](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomme
---
#### Gestione delle Strategie (`strategies.py`)
**Mostra aiuto:**
`./strategies.py -h`
**Elenca tutte le strategie:**
`./strategies.py --url <url> --token <token> list`
**Visualizza una strategia specifica:**
```bash
# Per nome
./strategies.py --url <url> --token <token> view --name "Default"
# Per GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Abilita o disabilita una strategia:**
```bash
./strategies.py --url <url> --token <token> enable --name "NomeStrategia"
./strategies.py --url <url> --token <token> disable --name "NomeStrategia"
```
**Assegna strategia a dispositivi, utenti o gruppi dispositivi:**
```bash
# Assegna a dispositivi (per ID dispositivo)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Assegna a utenti (per nome utente)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Assegna a gruppi dispositivi (per nome gruppo)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Assegnazione mista
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Rimuovi assegnazione strategia:**
```bash
# Rimuovi da dispositivi
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Rimuovi da utenti
./strategies.py --url <url> --token <token> unassign --users "admin"
# Rimuovi da gruppi dispositivi
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Note:**
- Lo script supporta sia nomi che GUID per utenti e gruppi dispositivi
- Gli ID dispositivi vengono automaticamente convertiti in GUID
- Tutte le operazioni assign/unassign possono gestire più target contemporaneamente
**Requisiti di permessi:**
- I comandi `list/view/enable/disable/assign/unassign` richiedono **Permesso Strategia**
- `--peers` richiede **Permesso Dispositivo:r** (per ricerca da ID a GUID)
- `--users` richiede **Permesso Utente:r** (per ricerca da nome utente a GUID)
- `--device-groups` richiede **Permesso Gruppo Dispositivi:r** (per ricerca da nome gruppo a GUID)
---
#### Audit (`audits.py`)
**Mostra aiuto:**

View File

@ -142,29 +142,197 @@ Windowsのコマンドラインはデフォルトでは出力を表示しませ
#### ユーザー管理 (`users.py`)
**ヘルプ表示:**
./users.py -h
`./users.py -h`
**ユーザー表示:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**フィルター:**
--name : ユーザー名
--group_name : ユーザーグループ
- `--name`:ユーザー名(あいまい検索)
- `--group_name`:ユーザーグループ名(完全一致)
**例:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**基本操作:**
**操作:**
- **ユーザーを無効化:**
`./users.py --url <url> --token <token> disable --name testuser`
`view`は`enable`、`disable`、`delete`に置き換え可能です。
- **ユーザーを有効化:**
`./users.py --url <url> --token <token> enable --name testuser`
**例(ユーザーを無効化):**
- **ユーザーを削除:**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**ユーザーの作成と招待:**
- **新規ユーザーの作成:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "メモ"]`
必須パラメータ:`--name`、`--password`、`--group_name`
オプションパラメータ:`--email`、`--note`
- **メールでユーザーを招待:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "メモ"]`
必須パラメータ:`--email`、`--name`、`--group_name`
オプションパラメータ:`--note`
**2FAとセキュリティ操作**
- **2FA強制を有効化**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
必須パラメータ:`--web-console-url`
- **2FA強制を無効化**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
オプションパラメータ:`--web-console-url`
- **2FAをリセット**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **メール認証を無効化:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **強制ログアウト:**
`./users.py --url <url> --token <token> force-logout --name username`
**注意事項:**
- 複数のユーザーに対して操作を行う場合(フィルターでマッチ)、確認プロンプトが表示されます
- 一致するユーザーがいない場合は「Found 0 users」と表示されます
---
#### ユーザーグループ管理 (`user_group.py`)
**ヘルプ表示:**
`./user_group.py -h`
**ユーザーグループ表示:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**例:**
`./user_group.py --url https://example.com --token <token> view --name "営業チーム"`
**グループ操作:**
- **ユーザーグループの作成:**
`./user_group.py --url <url> --token <token> add --name "グループ名" [--note "説明"] [--accessed-from '<json>'] [--access-to '<json>']`
アクセス制御付きの例:
`./user_group.py --url <url> --token <token> add --name "エンジニアリング" --accessed-from '[{"type":0,"name":"マネージャー"}]' --access-to '[{"type":1,"name":"開発サーバー"}]'`
- **ユーザーグループの更新:**
`./user_group.py --url <url> --token <token> update --name "グループ名" [--new-name "新しい名前"] [--note "新しいメモ"] [--accessed-from '<json>'] [--access-to '<json>']`
- **ユーザーグループの削除:**
`./user_group.py --url <url> --token <token> delete --name "グループ名"`
カンマ区切りで複数指定可能:`--name "グループ1,グループ2,グループ3"`
**グループ内ユーザー管理:**
- **グループ内のユーザーを表示:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
フィルター:
- `--name`:グループ名(完全一致、オプション)
- `--user-name`:ユーザー名(あいまい検索、オプション)
例:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **グループにユーザーを追加:**
`./user_group.py --url <url> --token <token> add-users --name "グループ名" --users "user1,user2,user3"`
**アクセス制御パラメータ:**
- `--accessed-from`:このユーザーグループにアクセスできるユーザー/グループを定義するJSON配列
- Type 0 = ユーザーグループ(例:`[{"type":0,"name":"管理者"}]`
- Type 2 = ユーザー(例:`[{"type":2,"name":"john"}]`
- `--access-to`このユーザーグループがアクセスできる対象を定義するJSON配列
- Type 0 = ユーザーグループ(例:`[{"type":0,"name":"サポート"}]`
- Type 1 = デバイスグループ(例:`[{"type":1,"name":"サーバー"}]`
**注意:** シェルの解析問題を避けるため、JSON配列は単一引用符で囲んでください。
**権限要件:**
- `view/add/update/delete/add-users` コマンドには **ユーザーグループ権限** が必要
- `view-users` コマンドには **ユーザー権限** が必要
---
#### デバイスグループ管理 (`device_group.py`)
**ヘルプ表示:**
`./device_group.py -h`
**デバイスグループ表示:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**例:**
`./device_group.py --url https://example.com --token <token> view`
**グループ操作:**
- **デバイスグループの作成:**
`./device_group.py --url <url> --token <token> add --name "グループ名" [--note "説明"] [--accessed-from '<json>']`
例:
`./device_group.py --url <url> --token <token> add --name "本番環境" --accessed-from '[{"type":0,"name":"管理者"}]'`
- **デバイスグループの更新:**
`./device_group.py --url <url> --token <token> update --name "グループ名" [--new-name "新しい名前"] [--note "新しいメモ"] [--accessed-from '<json>']`
- **デバイスグループの削除:**
`./device_group.py --url <url> --token <token> delete --name "グループ名"`
カンマ区切りで複数指定可能:`--name "グループ1,グループ2,グループ3"`
**グループ内デバイス管理:**
- **グループ内のデバイスを表示:**
`./device_group.py --url <url> --token <token> view-devices [フィルター]`
利用可能なフィルター:
- `--name`:デバイスグループ名(完全一致)
- `--id`デバイスIDあいまい検索
- `--device-name`:デバイス名(あいまい検索)
- `--user-name`:ユーザー名/所有者(あいまい検索)
- `--device-username`:デバイスにログインしているユーザー名(あいまい検索)
例:
```bash
# グループ内のすべてのデバイスを表示
./device_group.py --url <url> --token <token> view-devices --name 本番環境
# デバイス名で検索
./device_group.py --url <url> --token <token> view-devices --device-name server
# フィルターを組み合わせ
./device_group.py --url <url> --token <token> view-devices --name 本番環境 --user-name john
```
- **グループにデバイスを追加:**
`./device_group.py --url <url> --token <token> add-devices --name "グループ名" --ids "deviceid1,deviceid2"`
- **グループからデバイスを削除:**
`./device_group.py --url <url> --token <token> remove-devices --name "グループ名" --ids "deviceid1,deviceid2"`
**アクセス制御パラメータ:**
- `--accessed-from`:このデバイスグループにアクセスできるユーザー/グループを定義するJSON配列
- Type 0 = ユーザーグループ(例:`[{"type":0,"name":"エンジニア"}]`
- Type 2 = ユーザー(例:`[{"type":2,"name":"admin"}]`
**権限要件:**
- `view/add/update/delete/add-devices/remove-devices` コマンドには **デバイスグループ権限** が必要
- `view-devices` コマンドには **デバイス権限** が必要
---
@ -254,6 +422,74 @@ Windowsのコマンドラインはデフォルトでは出力を表示しませ
---
#### ストラテジー管理 (`strategies.py`)
**ヘルプを表示:**
`./strategies.py -h`
**すべてのストラテジーを一覧表示:**
`./strategies.py --url <url> --token <token> list`
**特定のストラテジーを表示:**
```bash
# 名前で
./strategies.py --url <url> --token <token> view --name "Default"
# GUIDで
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**ストラテジーを有効化または無効化:**
```bash
./strategies.py --url <url> --token <token> enable --name "ストラテジー名"
./strategies.py --url <url> --token <token> disable --name "ストラテジー名"
```
**デバイス、ユーザー、またはデバイスグループにストラテジーを割り当て:**
```bash
# デバイスに割り当てデバイスIDで
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# ユーザーに割り当て(ユーザー名で)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# デバイスグループに割り当て(グループ名で)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# 混合割り当て
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**ストラテジーの割り当てを解除:**
```bash
# デバイスから解除
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# ユーザーから解除
./strategies.py --url <url> --token <token> unassign --users "admin"
# デバイスグループから解除
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**注意:**
- スクリプトはユーザーとデバイスグループの名前とGUIDの両方をサポートします
- デバイスIDは自動的にGUIDに変換されます
- すべてのassign/unassign操作は一度に複数のターゲットを処理できます
**権限要件:**
- `list/view/enable/disable/assign/unassign` コマンドには **ストラテジー権限** が必要
- `--peers` には **デバイス権限:r** が必要IDからGUIDへの検索用
- `--users` には **ユーザー権限:r** が必要ユーザー名からGUIDへの検索用
- `--device-groups` には **デバイスグループ権限:r** が必要グループ名からGUIDへの検索用
---
#### 監査 (`audits.py`)
**ヘルプ表示:**

View File

@ -143,32 +143,203 @@ zobacz [tutaj](https://github.com/rustdesk/rustdesk/discussions/6377#discussionc
#### Zarządzanie użytkownikami (`users.py`)
**Pokaż pomoc:**
./users.py -h
`./users.py -h`
**Wyświetl użytkowników:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filtry:**
--name : nazwa użytkownika
--group_name : grupa użytkowników
- `--name`: nazwa użytkownika (wyszukiwanie rozmyte)
- `--group_name`: grupa użytkowników (dokładne dopasowanie)
**Przykład:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**Podstawowe operacje:**
**Operacje:**
- **Wyłącz użytkownika:**
`./users.py --url <url> --token <token> disable --name testuser`
`view` można zastąpić `enable`, `disable` lub `delete`.
- **Włącz użytkownika:**
`./users.py --url <url> --token <token> enable --name testuser`
**Przykład (wyłącz użytkownika):**
- **Usuń użytkownika:**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**Tworzenie i zapraszanie użytkowników:**
- **Utwórz nowego użytkownika:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "notatka"]`
Wymagane: `--name`, `--password`, `--group_name`
Opcjonalne: `--email`, `--note`
- **Zaproś użytkownika przez email:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "notatka"]`
Wymagane: `--email`, `--name`, `--group_name`
Opcjonalne: `--note`
**Operacje 2FA i bezpieczeństwo:**
- **Włącz wymuszanie 2FA:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Wymagane: `--web-console-url`
- **Wyłącz wymuszanie 2FA:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Opcjonalne: `--web-console-url`
- **Zresetuj 2FA:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Wyłącz weryfikację email:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Wymuś wylogowanie:**
`./users.py --url <url> --token <token> force-logout --name username`
**Uwagi:**
- Przy operacjach na wielu użytkownikach (dopasowanych przez filtry) zostanie wyświetlony monit o potwierdzenie
- Jeśli nie ma pasujących użytkowników, zostanie wyświetlone "Found 0 users"
---
#### Zarządzanie grupami użytkowników (`user_group.py`)
**Pokaż pomoc:**
`./user_group.py -h`
**Wyświetl grupy użytkowników:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Przykład:**
`./user_group.py --url https://example.com --token <token> view --name "Zespół Sprzedaży"`
**Operacje na grupach:**
- **Utwórz grupę użytkowników:**
`./user_group.py --url <url> --token <token> add --name "NazwaGrupy" [--note "opis"] [--accessed-from '<json>'] [--access-to '<json>']`
Przykład z kontrolą dostępu:
`./user_group.py --url <url> --token <token> add --name "Inżynierowie" --accessed-from '[{"type":0,"name":"Menedżerowie"}]' --access-to '[{"type":1,"name":"Serwery Dev"}]'`
- **Aktualizuj grupę użytkowników:**
`./user_group.py --url <url> --token <token> update --name "NazwaGrupy" [--new-name "Nowa Nazwa"] [--note "nowa notatka"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Usuń grupę użytkowników:**
`./user_group.py --url <url> --token <token> delete --name "NazwaGrupy"`
Obsługuje nazwy oddzielone przecinkami: `--name "Grupa1,Grupa2,Grupa3"`
**Zarządzanie użytkownikami w grupach:**
- **Wyświetl użytkowników w grupie:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filtry:
- `--name`: nazwa grupy (dokładne dopasowanie, opcjonalne)
- `--user-name`: nazwa użytkownika (wyszukiwanie rozmyte, opcjonalne)
Przykład:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Dodaj użytkowników do grupy:**
`./user_group.py --url <url> --token <token> add-users --name "NazwaGrupy" --users "user1,user2,user3"`
**Parametry kontroli dostępu:**
- `--accessed-from`: tablica JSON definiująca kto może uzyskać dostęp do tej grupy użytkowników
- Type 0 = Grupa użytkowników (np. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Użytkownik (np. `[{"type":2,"name":"john"}]`)
- `--access-to`: tablica JSON definiująca do czego ta grupa użytkowników może uzyskać dostęp
- Type 0 = Grupa użytkowników (np. `[{"type":0,"name":"Wsparcie"}]`)
- Type 1 = Grupa urządzeń (np. `[{"type":1,"name":"Serwery"}]`)
**Uwaga:** Użyj pojedynczych cudzysłowów wokół tablic JSON, aby uniknąć problemów z parsowaniem powłoki.
**Wymagania uprawnień:**
- Polecenia `view/add/update/delete/add-users` wymagają **Uprawnienia Grupy Użytkowników**
- Polecenie `view-users` wymaga **Uprawnienia Użytkownika**
---
#### Zarządzanie grupami urządzeń (`device_group.py`)
**Pokaż pomoc:**
`./device_group.py -h`
**Wyświetl grupy urządzeń:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Przykład:**
`./device_group.py --url https://example.com --token <token> view`
**Operacje na grupach:**
- **Utwórz grupę urządzeń:**
`./device_group.py --url <url> --token <token> add --name "NazwaGrupy" [--note "opis"] [--accessed-from '<json>']`
Przykład:
`./device_group.py --url <url> --token <token> add --name "Produkcja" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Aktualizuj grupę urządzeń:**
`./device_group.py --url <url> --token <token> update --name "NazwaGrupy" [--new-name "Nowa Nazwa"] [--note "nowa notatka"] [--accessed-from '<json>']`
- **Usuń grupę urządzeń:**
`./device_group.py --url <url> --token <token> delete --name "NazwaGrupy"`
Obsługuje nazwy oddzielone przecinkami: `--name "Grupa1,Grupa2,Grupa3"`
**Zarządzanie urządzeniami w grupach:**
- **Wyświetl urządzenia w grupie:**
`./device_group.py --url <url> --token <token> view-devices [filtry]`
Dostępne filtry:
- `--name`: nazwa grupy urządzeń (dokładne dopasowanie)
- `--id`: ID urządzenia (wyszukiwanie rozmyte)
- `--device-name`: nazwa urządzenia (wyszukiwanie rozmyte)
- `--user-name`: nazwa użytkownika/właściciel (wyszukiwanie rozmyte)
- `--device-username`: nazwa użytkownika zalogowanego na urządzeniu (wyszukiwanie rozmyte)
Przykłady:
```bash
# Wyświetl wszystkie urządzenia w grupie
./device_group.py --url <url> --token <token> view-devices --name Produkcja
# Szukaj po nazwie urządzenia
./device_group.py --url <url> --token <token> view-devices --device-name server
# Połącz filtry
./device_group.py --url <url> --token <token> view-devices --name Produkcja --user-name john
```
- **Wyświetl dostępne grupy urządzeń:**
`./device_group.py --url <url> --token <token> accessible`
Pokazuje wszystkie grupy urządzeń dostępne dla bieżącego użytkownika.
- **Dodaj urządzenia do grupy:**
`./device_group.py --url <url> --token <token> add-devices --name "NazwaGrupy" --ids "deviceid1,deviceid2"`
- **Usuń urządzenia z grupy:**
`./device_group.py --url <url> --token <token> remove-devices --name "NazwaGrupy" --ids "deviceid1,deviceid2"`
**Parametr kontroli dostępu:**
- `--accessed-from`: tablica JSON definiująca kto może uzyskać dostęp do tej grupy urządzeń
- Type 0 = Grupa użytkowników (np. `[{"type":0,"name":"Inżynierowie"}]`)
- Type 2 = Użytkownik (np. `[{"type":2,"name":"admin"}]`)
**Wymagania dotyczące uprawnień:**
- Polecenia `view/add/update/delete/add-devices/remove-devices` wymagają **Uprawnienia Grupy Urządzeń**
- Polecenie `view-devices` wymaga **Uprawnienia Urządzenia**
---
#### Zarządzanie urządzeniami (`devices.py`)
**Pokaż pomoc:**
@ -255,6 +426,74 @@ zobacz [tutaj](https://github.com/rustdesk/rustdesk/discussions/6377#discussionc
---
#### Zarządzanie Strategiami (`strategies.py`)
**Pokaż pomoc:**
`./strategies.py -h`
**Wyświetl wszystkie strategie:**
`./strategies.py --url <url> --token <token> list`
**Zobacz konkretną strategię:**
```bash
# Po nazwie
./strategies.py --url <url> --token <token> view --name "Default"
# Po GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Włącz lub wyłącz strategię:**
```bash
./strategies.py --url <url> --token <token> enable --name "NazwaStrategii"
./strategies.py --url <url> --token <token> disable --name "NazwaStrategii"
```
**Przypisz strategię do urządzeń, użytkowników lub grup urządzeń:**
```bash
# Przypisz do urządzeń (po ID urządzenia)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Przypisz do użytkowników (po nazwie użytkownika)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Przypisz do grup urządzeń (po nazwie grupy)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Przypisanie mieszane
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Cofnij przypisanie strategii:**
```bash
# Cofnij z urządzeń
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Cofnij z użytkowników
./strategies.py --url <url> --token <token> unassign --users "admin"
# Cofnij z grup urządzeń
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Uwagi:**
- Skrypt obsługuje zarówno nazwy, jak i GUID dla użytkowników i grup urządzeń
- ID urządzeń są automatycznie konwertowane na GUID
- Wszystkie operacje assign/unassign mogą obsługiwać wiele celów jednocześnie
**Wymagania uprawnień:**
- Polecenia `list/view/enable/disable/assign/unassign` wymagają **Uprawnienia Strategii**
- `--peers` wymaga **Uprawnienia Urządzenia:r** (do wyszukiwania ID do GUID)
- `--users` wymaga **Uprawnienia Użytkownika:r** (do wyszukiwania nazwy użytkownika do GUID)
- `--device-groups` wymaga **Uprawnienia Grupy Urządzeń:r** (do wyszukiwania nazwy grupy do GUID)
---
#### Audyty (`audits.py`)
**Pokaż pomoc:**

View File

@ -142,29 +142,201 @@ veja [aqui](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomm
#### Gerenciamento de Usuários (`users.py`)
**Mostrar ajuda:**
./users.py -h
`./users.py -h`
**Visualizar usuários:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filtros:**
--name : nome do usuário
--group_name : grupo de usuários
- `--name`: nome do usuário (busca difusa)
- `--group_name`: grupo de usuários (correspondência exata)
**Exemplo:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**Operações básicas:**
**Operações:**
- **Desativar usuário:**
`./users.py --url <url> --token <token> disable --name testuser`
`view` pode ser substituído por `enable`, `disable` ou `delete`.
- **Ativar usuário:**
`./users.py --url <url> --token <token> enable --name testuser`
**Exemplo (desativar usuário):**
- **Excluir usuário:**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**Criação e convite de usuários:**
- **Criar novo usuário:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "nota"]`
Obrigatório: `--name`, `--password`, `--group_name`
Opcional: `--email`, `--note`
- **Convidar usuário por email:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "nota"]`
Obrigatório: `--email`, `--name`, `--group_name`
Opcional: `--note`
**Operações 2FA e segurança:**
- **Habilitar imposição 2FA:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Obrigatório: `--web-console-url`
- **Desabilitar imposição 2FA:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Opcional: `--web-console-url`
- **Redefinir 2FA:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Desabilitar verificação por email:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Forçar logout:**
`./users.py --url <url> --token <token> force-logout --name username`
**Observações:**
- Ao operar em múltiplos usuários (correspondentes aos filtros), será solicitada confirmação
- Se não houver usuários correspondentes, será exibido "Found 0 users"
---
#### Gerenciamento de Grupos de Usuários (`user_group.py`)
**Mostrar ajuda:**
`./user_group.py -h`
**Visualizar grupos de usuários:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Exemplo:**
`./user_group.py --url https://example.com --token <token> view --name "Equipe Vendas"`
**Operações de grupo:**
- **Criar grupo de usuários:**
`./user_group.py --url <url> --token <token> add --name "NomeGrupo" [--note "descrição"] [--accessed-from '<json>'] [--access-to '<json>']`
Exemplo com controle de acesso:
`./user_group.py --url <url> --token <token> add --name "Engenharia" --accessed-from '[{"type":0,"name":"Gerentes"}]' --access-to '[{"type":1,"name":"Servidores Dev"}]'`
- **Atualizar grupo de usuários:**
`./user_group.py --url <url> --token <token> update --name "NomeGrupo" [--new-name "Novo Nome"] [--note "nova nota"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Excluir grupo de usuários:**
`./user_group.py --url <url> --token <token> delete --name "NomeGrupo"`
Suporta nomes separados por vírgula: `--name "Grupo1,Grupo2,Grupo3"`
**Gerenciamento de usuários em grupos:**
- **Visualizar usuários no grupo:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filtros:
- `--name`: nome do grupo (correspondência exata, opcional)
- `--user-name`: nome do usuário (busca difusa, opcional)
Exemplo:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Adicionar usuários ao grupo:**
`./user_group.py --url <url> --token <token> add-users --name "NomeGrupo" --users "user1,user2,user3"`
**Parâmetros de controle de acesso:**
- `--accessed-from`: array JSON que define quem pode acessar este grupo de usuários
- Type 0 = Grupo de usuários (ex. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Usuário (ex. `[{"type":2,"name":"john"}]`)
- `--access-to`: array JSON que define o que este grupo de usuários pode acessar
- Type 0 = Grupo de usuários (ex. `[{"type":0,"name":"Suporte"}]`)
- Type 1 = Grupo de dispositivos (ex. `[{"type":1,"name":"Servidores"}]`)
**Nota:** Use aspas simples ao redor dos arrays JSON para evitar problemas de análise do shell.
**Requisitos de permissões:**
- Os comandos `view/add/update/delete/add-users` requerem **Permissão de Grupo de Usuários**
- O comando `view-users` requer **Permissão de Usuário**
---
#### Gerenciamento de Grupos de Dispositivos (`device_group.py`)
**Mostrar ajuda:**
`./device_group.py -h`
**Visualizar grupos de dispositivos:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Exemplo:**
`./device_group.py --url https://example.com --token <token> view`
**Operações de grupo:**
- **Criar grupo de dispositivos:**
`./device_group.py --url <url> --token <token> add --name "NomeGrupo" [--note "descrição"] [--accessed-from '<json>']`
Exemplo:
`./device_group.py --url <url> --token <token> add --name "Produção" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Atualizar grupo de dispositivos:**
`./device_group.py --url <url> --token <token> update --name "NomeGrupo" [--new-name "Novo Nome"] [--note "nova nota"] [--accessed-from '<json>']`
- **Excluir grupo de dispositivos:**
`./device_group.py --url <url> --token <token> delete --name "NomeGrupo"`
Suporta nomes separados por vírgula: `--name "Grupo1,Grupo2,Grupo3"`
**Gerenciamento de dispositivos em grupos:**
- **Visualizar dispositivos no grupo:**
`./device_group.py --url <url> --token <token> view-devices [filtros]`
Filtros disponíveis:
- `--name`: nome do grupo de dispositivos (correspondência exata)
- `--id`: ID do dispositivo (busca difusa)
- `--device-name`: nome do dispositivo (busca difusa)
- `--user-name`: nome do usuário/proprietário (busca difusa)
- `--device-username`: nome de usuário conectado no dispositivo (busca difusa)
Exemplos:
```bash
# Visualizar todos os dispositivos em um grupo
./device_group.py --url <url> --token <token> view-devices --name Produção
# Buscar por nome de dispositivo
./device_group.py --url <url> --token <token> view-devices --device-name server
# Combinar filtros
./device_group.py --url <url> --token <token> view-devices --name Produção --user-name john
```
- **Visualizar grupos de dispositivos acessíveis:**
`./device_group.py --url <url> --token <token> accessible`
Mostra todos os grupos de dispositivos acessíveis ao usuário atual.
- **Adicionar dispositivos ao grupo:**
`./device_group.py --url <url> --token <token> add-devices --name "NomeGrupo" --ids "deviceid1,deviceid2"`
- **Remover dispositivos do grupo:**
`./device_group.py --url <url> --token <token> remove-devices --name "NomeGrupo" --ids "deviceid1,deviceid2"`
**Parâmetro de controle de acesso:**
- `--accessed-from`: array JSON que define quem pode acessar este grupo de dispositivos
- Type 0 = Grupo de usuários (ex. `[{"type":0,"name":"Engenheiros"}]`)
- Type 2 = Usuário (ex. `[{"type":2,"name":"admin"}]`)
**Requisitos de permissões:**
- Os comandos `view/add/update/delete/add-devices/remove-devices` requerem **Permissão de Grupo de Dispositivos**
- O comando `view-devices` requer **Permissão de Dispositivo**
---
@ -254,6 +426,74 @@ veja [aqui](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomm
---
#### Gestão de Estratégias (`strategies.py`)
**Mostrar ajuda:**
`./strategies.py -h`
**Listar todas as estratégias:**
`./strategies.py --url <url> --token <token> list`
**Ver uma estratégia específica:**
```bash
# Por nome
./strategies.py --url <url> --token <token> view --name "Default"
# Por GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Ativar ou desativar uma estratégia:**
```bash
./strategies.py --url <url> --token <token> enable --name "NomeEstrategia"
./strategies.py --url <url> --token <token> disable --name "NomeEstrategia"
```
**Atribuir estratégia a dispositivos, usuários ou grupos de dispositivos:**
```bash
# Atribuir a dispositivos (por ID de dispositivo)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Atribuir a usuários (por nome de usuário)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Atribuir a grupos de dispositivos (por nome de grupo)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Atribuição mista
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Cancelar atribuição de estratégia:**
```bash
# Cancelar de dispositivos
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Cancelar de usuários
./strategies.py --url <url> --token <token> unassign --users "admin"
# Cancelar de grupos de dispositivos
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Notas:**
- O script suporta nomes e GUIDs para usuários e grupos de dispositivos
- IDs de dispositivos são automaticamente convertidos em GUIDs
- Todas as operações assign/unassign podem trabalhar com múltiplos alvos de uma vez
**Requisitos de permissões:**
- Os comandos `list/view/enable/disable/assign/unassign` requerem **Permissão de Estratégia**
- `--peers` requer **Permissão de Dispositivo:r** (para pesquisa de ID para GUID)
- `--users` requer **Permissão de Usuário:r** (para pesquisa de nome de usuário para GUID)
- `--device-groups` requer **Permissão de Grupo de Dispositivos:r** (para pesquisa de nome de grupo para GUID)
---
#### Auditorias (`audits.py`)
**Mostrar ajuda:**

View File

@ -143,17 +143,195 @@ Linia de comandă pe Windows nu afișează output implicit. Pentru a obține out
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**Filtre:**
`--name`: username
`--group_name`: grup utilizatori
- `--name`: username (căutare aproximativă)
- `--group_name`: grup utilizatori (potrivire exactă)
**Exemplu:**
`./users.py --url https://example.com --token <token> view --group_name admins`
`./users.py --url https://example.com --token <token> view --group_name Default`
**Operații:**
`view` poate fi înlocuit cu `enable`, `disable`, sau `delete`.
**Operații de bază:**
**Exemplu (dezactivează utilizator):**
`./users.py --url https://example.com --token <token> disable --name testuser`
- **Dezactivează utilizator:**
`./users.py --url <url> --token <token> disable --name testuser`
- **Activează utilizator:**
`./users.py --url <url> --token <token> enable --name testuser`
- **Șterge utilizator:**
`./users.py --url <url> --token <token> delete --name testuser`
**Creare și invitare utilizatori:**
- **Creează utilizator nou:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "notă"]`
Necesar: `--name`, `--password`, `--group_name`
Opțional: `--email`, `--note`
- **Invită utilizator prin email:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "notă"]`
Necesar: `--email`, `--name`, `--group_name`
Opțional: `--note`
**Operații 2FA și securitate:**
- **Activează impunere 2FA:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
Necesar: `--web-console-url`
- **Dezactivează impunere 2FA:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
Opțional: `--web-console-url`
- **Resetează 2FA:**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **Dezactivează verificare email:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **Deconectare forțată:**
`./users.py --url <url> --token <token> force-logout --name username`
**Notă:**
- La operații pe mai mulți utilizatori (potriviți prin filtre), se va solicita confirmare
- Dacă nu există utilizatori potriviți, se va afișa "Found 0 users"
---
#### Management grupuri utilizatori (`user_group.py`)
**Afișează help:**
`./user_group.py -h`
**Vezi grupuri utilizatori:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**Exemplu:**
`./user_group.py --url https://example.com --token <token> view --name "Echipa Vânzări"`
**Operații pe grupuri:**
- **Creează grup utilizatori:**
`./user_group.py --url <url> --token <token> add --name "NumeGrup" [--note "descriere"] [--accessed-from '<json>'] [--access-to '<json>']`
Exemplu cu control acces:
`./user_group.py --url <url> --token <token> add --name "Inginerie" --accessed-from '[{"type":0,"name":"Manageri"}]' --access-to '[{"type":1,"name":"Servere Dev"}]'`
- **Actualizează grup utilizatori:**
`./user_group.py --url <url> --token <token> update --name "NumeGrup" [--new-name "Nume Nou"] [--note "notă nouă"] [--accessed-from '<json>'] [--access-to '<json>']`
- **Șterge grup utilizatori:**
`./user_group.py --url <url> --token <token> delete --name "NumeGrup"`
Suportă nume separate prin virgulă: `--name "Grup1,Grup2,Grup3"`
**Management utilizatori în grupuri:**
- **Vezi utilizatori în grup:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
Filtre:
- `--name`: nume grup (potrivire exactă, opțional)
- `--user-name`: username (căutare aproximativă, opțional)
Exemplu:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **Adaugă utilizatori în grup:**
`./user_group.py --url <url> --token <token> add-users --name "NumeGrup" --users "user1,user2,user3"`
**Parametri control acces:**
- `--accessed-from`: array JSON ce definește cine poate accesa acest grup de utilizatori
- Type 0 = Grup utilizatori (ex. `[{"type":0,"name":"Admins"}]`)
- Type 2 = Utilizator (ex. `[{"type":2,"name":"john"}]`)
- `--access-to`: array JSON ce definește la ce poate accesa acest grup de utilizatori
- Type 0 = Grup utilizatori (ex. `[{"type":0,"name":"Suport"}]`)
- Type 1 = Grup dispozitive (ex. `[{"type":1,"name":"Servere"}]`)
**Notă:** Folosiți ghilimele simple în jurul array-urilor JSON pentru a evita probleme de parsare shell.
**Cerințe de permisiuni:**
- Comenzile `view/add/update/delete/add-users` necesită **Permisiune Grup Utilizatori**
- Comanda `view-users` necesită **Permisiune Utilizator**
---
#### Management grupuri dispozitive (`device_group.py`)
**Afișează help:**
`./device_group.py -h`
**Vezi grupuri dispozitive:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**Exemplu:**
`./device_group.py --url https://example.com --token <token> view`
**Operații pe grupuri:**
- **Creează grup dispozitive:**
`./device_group.py --url <url> --token <token> add --name "NumeGrup" [--note "descriere"] [--accessed-from '<json>']`
Exemplu:
`./device_group.py --url <url> --token <token> add --name "Producție" --accessed-from '[{"type":0,"name":"Admins"}]'`
- **Actualizează grup dispozitive:**
`./device_group.py --url <url> --token <token> update --name "NumeGrup" [--new-name "Nume Nou"] [--note "notă nouă"] [--accessed-from '<json>']`
- **Șterge grup dispozitive:**
`./device_group.py --url <url> --token <token> delete --name "NumeGrup"`
Suportă nume separate prin virgulă: `--name "Grup1,Grup2,Grup3"`
**Management dispozitive în grupuri:**
- **Vezi dispozitive în grup:**
`./device_group.py --url <url> --token <token> view-devices [filtre]`
Filtre disponibile:
- `--name`: nume grup dispozitive (potrivire exactă)
- `--id`: ID dispozitiv (căutare aproximativă)
- `--device-name`: nume dispozitiv (căutare aproximativă)
- `--user-name`: username/proprietar (căutare aproximativă)
- `--device-username`: username conectat pe dispozitiv (căutare aproximativă)
Exemple:
```bash
# Vezi toate dispozitivele dintr-un grup
./device_group.py --url <url> --token <token> view-devices --name Producție
# Caută după nume dispozitiv
./device_group.py --url <url> --token <token> view-devices --device-name server
# Combină filtre
./device_group.py --url <url> --token <token> view-devices --name Producție --user-name john
```
- **Vezi grupuri dispozitive accesibile:**
`./device_group.py --url <url> --token <token> accessible`
Afișează toate grupurile de dispozitive accesibile utilizatorului curent.
- **Adaugă dispozitive în grup:**
`./device_group.py --url <url> --token <token> add-devices --name "NumeGrup" --ids "deviceid1,deviceid2"`
- **Elimină dispozitive din grup:**
`./device_group.py --url <url> --token <token> remove-devices --name "NumeGrup" --ids "deviceid1,deviceid2"`
**Parametru control acces:**
- `--accessed-from`: array JSON ce definește cine poate accesa acest grup de dispozitive
- Type 0 = Grup utilizatori (ex. `[{"type":0,"name":"Ingineri"}]`)
- Type 2 = Utilizator (ex. `[{"type":2,"name":"admin"}]`)
**Cerințe permisiuni:**
- Comenzile `view/add/update/delete/add-devices/remove-devices` necesită **Permisiune Grup Dispozitive**
- Comanda `view-devices` necesită **Permisiune Dispozitiv**
---
@ -227,6 +405,74 @@ Linia de comandă pe Windows nu afișează output implicit. Pentru a obține out
---
#### Gestionarea Strategiilor (`strategies.py`)
**Afișați ajutor:**
`./strategies.py -h`
**Listați toate strategiile:**
`./strategies.py --url <url> --token <token> list`
**Vezi o strategie specifică:**
```bash
# După nume
./strategies.py --url <url> --token <token> view --name "Default"
# După GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**Activați sau dezactivați o strategie:**
```bash
./strategies.py --url <url> --token <token> enable --name "NumeStrategie"
./strategies.py --url <url> --token <token> disable --name "NumeStrategie"
```
**Atribuiți strategia dispozitivelor, utilizatorilor sau grupurilor de dispozitive:**
```bash
# Atribuiți dispozitivelor (după ID dispozitiv)
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# Atribuiți utilizatorilor (după nume utilizator)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# Atribuiți grupurilor de dispozitive (după nume grup)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# Atribuire mixtă
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**Anulați atribuirea strategiei:**
```bash
# Anulați de la dispozitive
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# Anulați de la utilizatori
./strategies.py --url <url> --token <token> unassign --users "admin"
# Anulați de la grupuri de dispozitive
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**Note:**
- Scriptul acceptă atât nume cât și GUID-uri pentru utilizatori și grupuri de dispozitive
- ID-urile dispozitivelor sunt convertite automat în GUID-uri
- Toate operațiunile assign/unassign pot lucra cu mai multe ținte simultan
**Cerințe de permisiuni:**
- Comenzile `list/view/enable/disable/assign/unassign` necesită **Permisiune Strategie**
- `--peers` necesită **Permisiune Dispozitiv:r** (pentru căutarea ID la GUID)
- `--users` necesită **Permisiune Utilizator:r** (pentru căutarea nume utilizator la GUID)
- `--device-groups` necesită **Permisiune Grup Dispozitive:r** (pentru căutarea nume grup la GUID)
---
#### Audits (`audits.py`)
**Afișează help:**

View File

@ -147,34 +147,204 @@ Windows 命令行默认无输出,如需查看输出,可使用如下方式运
### Python CLI 管理工具
#### 用户管理 users.py
#### 用户管理 (`users.py`)
**查看帮助:**
./users.py -h
`./users.py -h`
**查看用户:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**过滤条件:**
`--name`:用户名
`--group_name`:用户组名
- `--name`:用户名(模糊搜索)
- `--group_name`:用户组名(精确匹配)
**示例:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**基本操作:**
**操作命令:**
`view` 可替换为 `enable`(启用)、`disable`(禁用)或 `delete`(删除)。
- **禁用用户:**
`./users.py --url <url> --token <token> disable --name testuser`
**示例(禁用用户):**
- **启用用户:**
`./users.py --url <url> --token <token> enable --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
- **删除用户:**
`./users.py --url <url> --token <token> delete --name testuser`
**用户创建和邀请:**
- **创建新用户:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "备注"]`
必需参数:`--name`、`--password`、`--group_name`
可选参数:`--email`、`--note`
- **通过邮箱邀请用户:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "备注"]`
必需参数:`--email`、`--name`、`--group_name`
可选参数:`--note`
**2FA 和安全操作:**
- **启用 2FA 强制要求:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
必需参数:`--web-console-url`
- **禁用 2FA 强制要求:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
可选参数:`--web-console-url`
- **重置 2FA**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **禁用邮箱验证:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **强制登出:**
`./users.py --url <url> --token <token> force-logout --name username`
**注意事项:**
- 当操作多个用户时(通过过滤器匹配),系统会提示确认
- 如果没有匹配的用户,将显示 "Found 0 users"
---
#### 设备管理 devices.py
#### 用户组管理 (`user_group.py`)
**查看帮助:**
`./user_group.py -h`
**查看用户组:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**示例:**
`./user_group.py --url https://example.com --token <token> view --name "销售团队"`
**组操作:**
- **创建用户组:**
`./user_group.py --url <url> --token <token> add --name "组名" [--note "描述"] [--accessed-from '<json>'] [--access-to '<json>']`
带访问控制的示例:
`./user_group.py --url <url> --token <token> add --name "工程部" --accessed-from '[{"type":0,"name":"管理层"}]' --access-to '[{"type":1,"name":"开发服务器"}]'`
- **更新用户组:**
`./user_group.py --url <url> --token <token> update --name "组名" [--new-name "新名称"] [--note "新备注"] [--accessed-from '<json>'] [--access-to '<json>']`
- **删除用户组:**
`./user_group.py --url <url> --token <token> delete --name "组名"`
支持逗号分隔的多个组名:`--name "组1,组2,组3"`
**组内用户管理:**
- **查看组内用户:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
过滤条件:
- `--name`:组名(精确匹配,可选)
- `--user-name`:用户名(模糊搜索,可选)
示例:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **添加用户到组:**
`./user_group.py --url <url> --token <token> add-users --name "组名" --users "user1,user2,user3"`
**访问控制参数:**
- `--accessed-from`:定义谁可以访问此用户组的 JSON 数组
- Type 0 = 用户组(例如:`[{"type":0,"name":"管理员"}]`
- Type 2 = 用户(例如:`[{"type":2,"name":"john"}]`
- `--access-to`:定义此用户组可以访问什么的 JSON 数组
- Type 0 = 用户组(例如:`[{"type":0,"name":"支持"}]`
- Type 1 = 设备组(例如:`[{"type":1,"name":"服务器"}]`
**注意:** 使用单引号包围 JSON 数组以避免 shell 解析问题。
**权限要求:**
- `view/add/update/delete/add-users` 命令需要 **用户组权限**
- `view-users` 命令需要 **用户权限**
---
#### 设备组管理 (`device_group.py`)
**查看帮助:**
`./device_group.py -h`
**查看设备组:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**示例:**
`./device_group.py --url https://example.com --token <token> view`
**组操作:**
- **创建设备组:**
`./device_group.py --url <url> --token <token> add --name "组名" [--note "描述"] [--accessed-from '<json>']`
示例:
`./device_group.py --url <url> --token <token> add --name "生产环境" --accessed-from '[{"type":0,"name":"管理员"}]'`
- **更新设备组:**
`./device_group.py --url <url> --token <token> update --name "组名" [--new-name "新名称"] [--note "新备注"] [--accessed-from '<json>']`
- **删除设备组:**
`./device_group.py --url <url> --token <token> delete --name "组名"`
支持逗号分隔的多个组名:`--name "组1,组2,组3"`
**组内设备管理:**
- **查看组内设备:**
`./device_group.py --url <url> --token <token> view-devices [过滤条件]`
可用的过滤条件:
- `--name`:设备组名(精确匹配)
- `--id`:设备 ID模糊搜索
- `--device-name`:设备名称(模糊搜索)
- `--user-name`:用户名/所有者(模糊搜索)
- `--device-username`:设备上登录的用户名(模糊搜索)
示例:
```bash
# 查看组内所有设备
./device_group.py --url <url> --token <token> view-devices --name 生产环境
# 按设备名搜索
./device_group.py --url <url> --token <token> view-devices --device-name server
# 组合过滤条件
./device_group.py --url <url> --token <token> view-devices --name 生产环境 --user-name john
```
- **添加设备到组:**
`./device_group.py --url <url> --token <token> add-devices --name "组名" --ids "deviceid1,deviceid2"`
- **从组中移除设备:**
`./device_group.py --url <url> --token <token> remove-devices --name "组名" --ids "deviceid1,deviceid2"`
**访问控制参数:**
- `--accessed-from`:定义谁可以访问此设备组的 JSON 数组
- Type 0 = 用户组(例如:`[{"type":0,"name":"工程师"}]`
- Type 2 = 用户(例如:`[{"type":2,"name":"admin"}]`
**权限要求:**
- `view/add/update/delete/add-devices/remove-devices` 命令需要 **设备组权限**
- `view-devices` 命令需要 **设备权限**
---
#### 设备管理 (`devices.py`)
**查看帮助:**
@ -258,6 +428,73 @@ Windows 命令行默认无输出,如需查看输出,可使用如下方式运
---
#### 策略管理 (`strategies.py`)
**查看帮助:**
`./strategies.py -h`
**列出所有策略:**
`./strategies.py --url <url> --token <token> list`
**查看指定策略:**
```bash
# 通过名称
./strategies.py --url <url> --token <token> view --name "Default"
# 通过 GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**启用或禁用策略:**
```bash
./strategies.py --url <url> --token <token> enable --name "策略名称"
./strategies.py --url <url> --token <token> disable --name "策略名称"
```
**分配策略到设备、用户或设备组:**
```bash
# 分配到设备(使用设备 ID
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# 分配到用户(使用用户名)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# 分配到设备组(使用组名)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# 混合分配
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**取消分配策略:**
```bash
# 取消设备的策略
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# 取消用户的策略
./strategies.py --url <url> --token <token> unassign --users "admin"
# 取消设备组的策略
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**注意事项:**
- 脚本支持用户和设备组的名称或 GUID
- 设备 ID 会自动转换为 GUID
- 所有 assign/unassign 操作都支持同时操作多个目标
**权限要求:**
- `list/view/enable/disable/assign/unassign` 命令需要 **策略权限**
- `--peers` 需要 **设备权限:r**(用于 ID 到 GUID 的查找)
- `--users` 需要 **用户权限:r**(用于用户名到 GUID 的查找)
- `--device-groups` 需要 **设备组权限:r**(用于组名到 GUID 的查找)
---
#### 审计日志 audits.py
**查看帮助:**

View File

@ -142,29 +142,200 @@ Windows 命令列預設不會輸出結果。若要查看輸出,可使用:
#### 使用者管理 (`users.py`)
**顯示幫助:**
./users.py -h
`./users.py -h`
**查看使用者:**
./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
**篩選條件:**
--name : 使用者名稱
--group_name : 使用者群組
- `--name`:使用者名稱(模糊搜尋)
- `--group_name`:使用者群組名稱(精確匹配)
**範例:**
`./users.py --url https://example.com --token <token> view --group_name Default`
./users.py --url https://example.com --token <token> view --group_name admins
**基本操作:**
**操作:**
- **停用使用者:**
`./users.py --url <url> --token <token> disable --name testuser`
`view` 可替換為 `enable`、`disable` 或 `delete`
- **啟用使用者:**
`./users.py --url <url> --token <token> enable --name testuser`
**範例(停用使用者):**
- **刪除使用者:**
`./users.py --url <url> --token <token> delete --name testuser`
./users.py --url https://example.com --token <token> disable --name testuser
**使用者建立和邀請:**
- **建立新使用者:**
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "備註"]`
必要參數:`--name`、`--password`、`--group_name`
選用參數:`--email`、`--note`
- **透過電子郵件邀請使用者:**
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "備註"]`
必要參數:`--email`、`--name`、`--group_name`
選用參數:`--note`
**2FA 和安全操作:**
- **啟用 2FA 強制要求:**
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
必要參數:`--web-console-url`
- **停用 2FA 強制要求:**
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
選用參數:`--web-console-url`
- **重設 2FA**
`./users.py --url <url> --token <token> reset-2fa --name username`
- **停用電子郵件驗證:**
`./users.py --url <url> --token <token> disable-email-verification --name username`
- **強制登出:**
`./users.py --url <url> --token <token> force-logout --name username`
**注意事項:**
- 當操作多個使用者時(透過篩選器匹配),系統會提示確認
- 如果沒有匹配的使用者,將顯示 "Found 0 users"
---
#### 使用者群組管理 (`user_group.py`)
**顯示幫助:**
`./user_group.py -h`
**查看使用者群組:**
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
**範例:**
`./user_group.py --url https://example.com --token <token> view --name "銷售團隊"`
**群組操作:**
- **建立使用者群組:**
`./user_group.py --url <url> --token <token> add --name "群組名稱" [--note "描述"] [--accessed-from '<json>'] [--access-to '<json>']`
帶存取控制的範例:
`./user_group.py --url <url> --token <token> add --name "工程部" --accessed-from '[{"type":0,"name":"管理層"}]' --access-to '[{"type":1,"name":"開發伺服器"}]'`
- **更新使用者群組:**
`./user_group.py --url <url> --token <token> update --name "群組名稱" [--new-name "新名稱"] [--note "新備註"] [--accessed-from '<json>'] [--access-to '<json>']`
- **刪除使用者群組:**
`./user_group.py --url <url> --token <token> delete --name "群組名稱"`
支援逗號分隔的多個群組名稱:`--name "群組1,群組2,群組3"`
**群組內使用者管理:**
- **查看群組內使用者:**
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
篩選條件:
- `--name`:群組名稱(精確匹配,選用)
- `--user-name`:使用者名稱(模糊搜尋,選用)
範例:
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
- **新增使用者到群組:**
`./user_group.py --url <url> --token <token> add-users --name "群組名稱" --users "user1,user2,user3"`
**存取控制參數:**
- `--accessed-from`:定義誰可以存取此使用者群組的 JSON 陣列
- Type 0 = 使用者群組(例如:`[{"type":0,"name":"管理員"}]`
- Type 2 = 使用者(例如:`[{"type":2,"name":"john"}]`
- `--access-to`:定義此使用者群組可以存取什麼的 JSON 陣列
- Type 0 = 使用者群組(例如:`[{"type":0,"name":"支援"}]`
- Type 1 = 設備群組(例如:`[{"type":1,"name":"伺服器"}]`
**注意:** 使用單引號包圍 JSON 陣列以避免 shell 解析問題。
**權限要求:**
- `view/add/update/delete/add-users` 命令需要 **使用者群組權限**
- `view-users` 命令需要 **使用者權限**
---
#### 設備群組管理 (`device_group.py`)
**顯示幫助:**
`./device_group.py -h`
**查看設備群組:**
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
**範例:**
`./device_group.py --url https://example.com --token <token> view`
**群組操作:**
- **建立設備群組:**
`./device_group.py --url <url> --token <token> add --name "群組名稱" [--note "描述"] [--accessed-from '<json>']`
範例:
`./device_group.py --url <url> --token <token> add --name "生產環境" --accessed-from '[{"type":0,"name":"管理員"}]'`
- **更新設備群組:**
`./device_group.py --url <url> --token <token> update --name "群組名稱" [--new-name "新名稱"] [--note "新備註"] [--accessed-from '<json>']`
- **刪除設備群組:**
`./device_group.py --url <url> --token <token> delete --name "群組名稱"`
支援逗號分隔的多個群組名稱:`--name "群組1,群組2,群組3"`
**群組內設備管理:**
- **查看群組內設備:**
`./device_group.py --url <url> --token <token> view-devices [篩選條件]`
可用的篩選條件:
- `--name`:設備群組名稱(精確匹配)
- `--id`:設備 ID模糊搜尋
- `--device-name`:設備名稱(模糊搜尋)
- `--user-name`:使用者名稱/擁有者(模糊搜尋)
- `--device-username`:設備上登入的使用者名稱(模糊搜尋)
範例:
```bash
# 查看群組內所有設備
./device_group.py --url <url> --token <token> view-devices --name 生產環境
# 按設備名稱搜尋
./device_group.py --url <url> --token <token> view-devices --device-name server
# 組合篩選條件
./device_group.py --url <url> --token <token> view-devices --name 生產環境 --user-name john
```
- **查看可存取的設備群組:**
顯示目前使用者可存取的所有設備群組。
- **新增設備到群組:**
`./device_group.py --url <url> --token <token> add-devices --name "群組名稱" --ids "deviceid1,deviceid2"`
- **從群組中移除設備:**
`./device_group.py --url <url> --token <token> remove-devices --name "群組名稱" --ids "deviceid1,deviceid2"`
**存取控制參數:**
- `--accessed-from`:定義誰可以存取此設備群組的 JSON 陣列
- Type 0 = 使用者群組(例如:`[{"type":0,"name":"工程師"}]`
- Type 2 = 使用者(例如:`[{"type":2,"name":"admin"}]`
**權限要求:**
- `view/add/update/delete/add-devices/remove-devices` 命令需要 **設備群組權限**
- `view-devices` 命令需要 **設備權限**
---
@ -254,6 +425,73 @@ Windows 命令列預設不會輸出結果。若要查看輸出,可使用:
---
#### 策略管理 (`strategies.py`)
**顯示幫助:**
`./strategies.py -h`
**列出所有策略:**
`./strategies.py --url <url> --token <token> list`
**查看指定策略:**
```bash
# 通過名稱
./strategies.py --url <url> --token <token> view --name "Default"
# 通過 GUID
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
```
**啟用或禁用策略:**
```bash
./strategies.py --url <url> --token <token> enable --name "策略名稱"
./strategies.py --url <url> --token <token> disable --name "策略名稱"
```
**分配策略到設備、使用者或設備群組:**
```bash
# 分配到設備(使用設備 ID
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
# 分配到使用者(使用使用者名稱)
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
# 分配到設備群組(使用群組名稱)
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
# 混合分配
./strategies.py --url <url> --token <token> assign \
--name "Default" \
--peers "1849118658" \
--users "admin" \
--device-groups "device_group1"
```
**取消分配策略:**
```bash
# 取消設備的策略
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
# 取消使用者的策略
./strategies.py --url <url> --token <token> unassign --users "admin"
# 取消設備群組的策略
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
```
**注意事項:**
- 腳本支援使用者和設備群組的名稱或 GUID
- 設備 ID 會自動轉換為 GUID
- 所有 assign/unassign 操作都支援同時操作多個目標
**權限要求:**
- `list/view/enable/disable/assign/unassign` 命令需要 **策略權限**
- `--peers` 需要 **設備權限:r**(用於 ID 到 GUID 的查找)
- `--users` 需要 **使用者權限:r**(用於使用者名稱到 GUID 的查找)
- `--device-groups` 需要 **設備群組權限:r**(用於群組名稱到 GUID 的查找)
---
#### 稽核 (`audits.py`)
**顯示幫助:**