9

我对 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(不好),但错误(“丢失连接...等”)被写入控制台。(好的)

我尝试了两个不同的版本。samba-3.0.32 samba-3.6.19 两者相同。

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

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

先感谢您!

4

1 回答 1

3

最好的方法是使用 -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 Service Pack 1] Server=[Windows Server 2008 R2 Standard 6.1] NT_STATUS_OBJECT_NAME_NOT_FOUND 打开远程文件 \foo

于 2014-09-23T10:35:04.673 回答