【问题标题】:Exit codes of smbclientsmbclient的退出代码
【发布时间】:2013-11-17 07:46:05
【问题描述】:

我对 arm 上 samba 的命令行命令“smbclient”有疑问。

我编写了一个脚本来从 Windows 共享中下载文件。 这里是这个脚本的 smb 部分。

smbclient  //CNAME/SNAME -I0.0.0.0 -N -c "case_sensitive; cd folder; prompt; mget file"
echo $?

我的问题是退出代码。 如果文件下载完成,退出码为0(OK) 如果文件无法下载,则退出代码为 1(OK) 如果 testmaschine 由于下载文件而失去与共享的连接,则退出代码为 0(不好),但错误(“Lost connection...etc.”)会写入控制台。 (好的)

我尝试了两个不同的版本。 桑巴-3.0.32 桑巴-3.6.19 两者都一样。

是否有人知道一个好的解决方法(或 smbclient-argument)让我的脚本知道下载失败?

PS。我检查了 smbclient 来源。看起来他们忘记设置退出代码了。因为每次出现另一个错误时,设置 Errormessage 并执行(例如 exit(1))。但是对于超时,他们只设置 Errormessage。

提前谢谢你!

【问题讨论】:

    标签: linux shell arm samba smb


    【解决方案1】:

    最好使用 -E 参数到 smbclient 并从命令行重定向 2>/errorlog。然后,您可以检查此文件以查看是否发生任何错误。

    警告,第一行始终是 Domain=.......所以您可能需要删除该行。

    类似这样的:

    smbclient Hostname -A authfile -E 1>log 2>errorlog <<-EOF 
    get foo 
    EOF
    

    在错误日志中,您应该会发现如下内容,您的日志文件将为空

    域=[主机名] OS=[Windows Server 2008 R2 Standard 7601 服务 包 1] 服务器=[Windows Server 2008 R2 标准 6.1] NT_STATUS_OBJECT_NAME_NOT_FOUND 打开远程文件\foo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多