Интерфейс командной строки
Запуск сканирований из терминала или скрипта вместо консоли.
Инструмент командной строки общается с сервером 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):
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:
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 принимает список через запятую. Доступные идентификаторы:
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.
Статический анализ архива
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-архивов намеренно недоступны: у архива нет идентификатора удалённого коммита и проверяемой предыдущей ревизии для сравнения.
Динамическое веб-сканирование
python scansuite-scan-web.py \
-s "https://my-scansuite-server.com" \
-u user \
-w "https://scanthisserver.com, https://anotherserver.edu"Инфраструктурное сканирование
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