Справочник

Интерфейс командной строки

Запуск сканирований из терминала или скрипта вместо консоли.

Инструмент командной строки общается с сервером ScanSuite удалённо: запускает сканирования, запрашивает их статус, получает отчёты. Каждый скрипт автоматизирует одну задачу и ожидает как минимум URL сервера, имя пользователя и пароль.

Вводите пароль по запросу, а не флагом -p в командной строке. Запрос не оставляет пароль в истории команд, и на сборочном агенте это важнее, чем на ноутбуке.

Запустите любой скрипт с -h, чтобы увидеть все принимаемые параметры.

СкриптНазначение
scansuite-scan-git.pyСтатический анализ Git-репозитория.
scansuite-scan-zip.pyСтатический анализ ZIP-архива.
scansuite-scan-web.pyДинамическое веб-сканирование.
scansuite-scan-infra.pyИнфраструктурное сканирование.
bitbucket-clone-projects-repos.pyМассовое клонирование репозиториев с локального сервера Bitbucket.

Статический анализ репозитория

Одно сканирование со сканерами по умолчанию (mlsast,secrets):

bash
python scansuite-scan-git.py \
  -s "https://my-scansuite-server.com" \
  -u user \
  -l python \
  -g "https://github.com/NetSPI/django.nV" \
  -b main

Опустите --branch-name, чтобы сканировать ветку репозитория по умолчанию. Ссылки в уязвимостях секретов строятся по --repository-url, значение которого по умолчанию берётся из --giturl: указывайте его явно, когда URL для клонирования отличается от URL для просмотра, например при клонировании по SSH.

Режимы сканирования

--mode принимает значения once, daily, weekly, monthly, incremental, monitor-changes и custom-scope. Режимы с расписанием и мониторингом используют --scan-name как имя сохранённой конфигурации; инкрементальный режим и собственная область — всегда разовые операции.

Инкрементальное сканирование
python scansuite-scan-git.py \
  -s "https://my-scansuite-server.com" \
  -u user \
  -l java \
  -g "https://github.com/cepxeo/vulnado" \
  --engagement-id local-0123456789ab \
  -b main \
  --mode incremental

Сервер сравнивает текущую ревизию с самым свежим совместимым успешным сканированием репозитория, и первый инкрементальный запуск выполняется как полное сканирование. При последующих запусках переиспользуйте тот же идентификатор engagement, URL репозитория, конфигурацию сканеров, ветку и язык, чтобы сервер смог найти контрольную точку. Успешное сканирование в режиме --mode once также создаёт её — см. Периодические и инкрементальные сканирования.

Если --engagement-id опущен, инструмент создаёт продукт с именем репозитория или значением --product-name и печатает полученный идентификатор engagement. Сохраните это значение и используйте его повторно.

Собственная область сканирования

Заключайте glob-шаблоны в кавычки, чтобы их не развернул ваш локальный shell:

bash
python scansuite-scan-git.py \
  -s "https://my-scansuite-server.com" \
  -u user \
  -l java \
  -g "https://github.com/cepxeo/vulnado" \
  --engagement-id local-0123456789ab \
  --mode custom-scope \
  --scope src/main/java/ \
  --scope pom.xml \
  --scope '**/*Controller.java'

Шаблоны также можно считать по одному на строку из файла в UTF-8 с помощью --scope-file ./scan-scope.txt.

Шаблоны разрешаются сервером по отслеживаемым файлам выбранной ревизии. Сканируются только найденные файлы, при этом полная копия репозитория остаётся доступной для необязательного анализа достижимости и архитектуры.

Пустая или небезопасная область приводит к сбою сканирования, а не к откату на полное сканирование. Это сделано намеренно: опечатка в glob-шаблоне не должна молча обходиться вам в полный AI-прогон по всему репозиторию.

Выбор сканеров

--scanners принимает список через запятую. Доступные идентификаторы:

text
mlsast  sast_quick  sast_full  sast_custom  secrets
snyk    dep_checks  iacs_kics  gen_docs     code_flow
Примеры
# Собственные сканеры без AI Native SAST
python scansuite-scan-git.py ... --scanners sast_quick,iacs_kics

# AI Native SAST с проверкой достижимости, без анализа истории git и архитектуры
python scansuite-scan-git.py ... \
  --scanners mlsast \
  --no-mlsast-git-history \
  --no-security-architecture

# AI Native SAST без проверки достижимости
python scansuite-scan-git.py ... --scanners mlsast --no-reachability

Режим собственной области поддерживает только mlsast, sast_quick, sast_full, sast_custom и iacs_kics; CLI проверяет это до отправки задания. Поэтому его сканер по умолчанию — mlsast, тогда как в остальных режимах по умолчанию используется mlsast,secrets.

Статический анализ архива

bash
python scansuite-scan-zip.py \
  -s "https://my-scansuite-server.com" \
  -u user \
  -l java \
  -f /path/to/test.zip \
  --engagement-id local-0123456789ac

Инструмент для ZIP поддерживает те же параметры области, сканеров и репозитория, что и инструмент для Git. Анализ истории Git для архивов по умолчанию отключён и включается ключом --mlsast-git-history, если архив содержит метаданные Git.

Режимы incremental и monitor-changes для ZIP-архивов намеренно недоступны: у архива нет идентификатора удалённого коммита и проверяемой предыдущей ревизии для сравнения.

Динамическое веб-сканирование

bash
python scansuite-scan-web.py \
  -s "https://my-scansuite-server.com" \
  -u user \
  -w "https://scanthisserver.com, https://anotherserver.edu"

Инфраструктурное сканирование

bash
python scansuite-scan-infra.py \
  -s "https://my-scansuite-server.com" \
  -u admin \
  -t "192.168.23.3, 192.168.24.0/24" \
  --ping "No" \
  --ports "All TCP" \
  --scan_type "vulnerability_scan" \
  --product_name "DMZ Scan January"

Проверено: 2026-08-16