我对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