退出码
🚪 snir 进程退出码语义。
snir 遵循 Unix 惯例:成功退出 0,失败退出非零。
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功完成 |
非 0 | 执行过程出错 |
退出码与单目标失败的语义需区分:
按退出码类别归类的心智图:
错误处理
scan 命令对常见错误做了美化,给出可操作建议而非原始堆栈:
| 错误特征 | 美化建议 |
|---|---|
Could not find node with given id | 增加超时/延迟,可能反爬或结构不符 |
timeout | 增加 --timeout,检查网络 |
net::ERR_* | 网络错误,检查可达性/DNS/代理 |
在脚本中使用
bash
if snir scan file -f urls.txt --write-jsonl; then
echo "✅ 扫描成功"
else
echo "❌ 扫描失败,退出码 $?"
fi注意
退出码 ≠ 单目标成败
这是最容易误解的点:
- 进程退出码:反映 snir 进程整体是否正常结束(参数错、Chrome 找不到等致命错误才非零)
- 单目标
failed字段:批量扫描中某个 URL 失败通常不会让进程退出非零,而是记在results.jsonl的failed=true
→ 脚本里判断"扫没扫好"不能只看 $?,必须查 failed 字段:
bash
snir scan file -f urls.txt --write-jsonl
# $? 为 0 不代表每个 URL 都成功
jq 'select(.failed == true)' results.jsonl # 这才是真正的失败列表