我在 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
在错误日志中,您应该找到类似以下的内容,您的日志文件将为空