我在 ARM 上使用samba的命令行命令“smbclient”有问题。

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

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

我的问题是退出代码。
如果文件已完全下载,则退出代码为0(确定)
如果无法下载文件,则退出代码为1(确定)
如果testmaschine由于下载文件而失去了与共享的连接,则退出代码为0(不正确),但错误(“丢失连接...等”)被写入控制台。 (好的)

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

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

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

先感谢您!

最佳答案

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

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

像这样的东西:

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

在错误日志中,您应该找到类似以下的内容,您的日志文件将为空

10-07 13:43