You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器后台运行免费Azure Data Explorer上传脚本的认证问题

解决Ubuntu后台运行Azure Data Explorer上传脚本的设备登录认证问题

设备登录认证依赖交互式终端输出认证代码并等待用户完成登录,但nohup后台运行时脚本无法访问交互式终端,导致进程停滞。以下是几种可行的解决方式:

方法1:改用服务主体认证(推荐,适合长期后台运行)

服务主体认证无需交互式操作,是后台脚本的理想认证方式:

  1. 创建Azure AD服务主体:
    用Azure CLI执行命令:
    az ad sp create-for-rbac --name "kusto-ingest-service-principal"
    
    执行后会返回tenantId、clientId、clientSecret,保存好这些信息。
  2. 给服务主体授予ADX权限:
    在Azure Data Explorer集群的权限设置中,给该服务主体添加Ingestor角色权限,确保它能向集群写入数据。
  3. 修改脚本的认证代码:
    替换原脚本中设备登录的代码段:
    # 原设备登录代码
    # kcsb = KustoConnectionStringBuilder.with_aad_device_authentication(cluster)
    
    # 替换为服务主体认证
    tenant_id = "你的租户ID"
    client_id = "你的服务主体ID"
    client_secret = "你的服务主体密钥"
    
    kcsb = KustoConnectionStringBuilder.with_aad_application_key_authentication(
        cluster, client_id, client_secret, tenant_id
    )
    
    修改后,脚本后台运行时无需手动干预即可完成认证。

方法2:先前台完成认证,利用缓存凭据后台运行

Azure SDK会将认证凭据缓存到~/.azure目录下,可先在前台完成一次认证,之后后台运行时自动复用缓存:

  1. 前台运行脚本:
    python3 azure_upload.py
    
    按照提示完成设备登录认证,确认数据上传成功。
  2. 后台运行脚本:
    nohup python3 azure_upload.py &
    
    脚本会自动读取缓存的认证凭据,无需再次交互。

    注意:缓存凭据有有效期,到期后需重新前台执行认证更新缓存。

方法3:捕获认证输出,手动完成登录(临时场景适用)

让脚本把设备登录的提示信息输出到日志文件,手动查看并完成认证:

  1. 运行脚本时指定日志输出:
    nohup python3 azure_upload.py > upload.log 2>&1 &
    
  2. 查看日志文件获取认证代码:
    cat upload.log
    
    日志中会包含设备登录的代码和验证链接,手动访问链接输入代码完成认证,脚本即可继续执行。

内容的提问来源于stack exchange,提问作者Parth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:30:30