退出smbclient的代码

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

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

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参数)让我的脚本知道,下载失败?

PS。 我检查了smbclient的来源。 看起来他们忘了设置退出码。 因为每次有另一个错误设置ErrorMessage并做一个(例如退出(1))。 但是对于超时,他们只设置ErrorMessage。

先谢谢你!

最好是使用-s参数来使用smbclient,并从命令行重定向2> / errorlog。 然后你可以检查这个文件来查看是否有错误发生。

警告,第一行总是Domain = ………所以你可能需要去掉那条线。

像这样的东西:

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

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

Domain = [Hostname] 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