Kor*_*rbi 5 linux shell smb samba arm
我在手臂上使用samba的命令行命令“ smbclient”有问题。
我编写了一个脚本来从Windows共享下载文件。这是该脚本的smb部分。
smbclient //CNAME/SNAME -I0.0.0.0 -N -c "case_sensitive; cd folder; prompt; mget file"
echo $?
Run Code Online (Sandbox Code Playgroud)
我的问题是退出代码。如果文件已完全下载,则退出代码为0(确定)。如果无法下载文件,则退出代码为1(确定)。如果testmaschine由于下载文件而失去了与共享的连接,则退出代码为0(不好),但是错误(“丢失连接...等”)被写入控制台。(好)
我尝试了两个不同的版本。samba-3.0.32 samba-3.6.19两者相同。
有人知道一个好的解决方法(或smbclient-argument)让我的脚本知道下载失败吗?
PS。我检查了smbclient源。看来他们忘记了设置退出代码。因为每次都存在另一个错误,请设置Errormessage并执行一个操作(例如exit(1))。但是对于超时,它们仅设置Errormessage。
先感谢您!
小智 3
最好的方法是使用 smbclient 的 -E 参数并从命令行重定向 2>/errorlog。然后您可以检查该文件以查看是否发生任何错误。
警告,第一行始终是 Domain=......... 因此您可能需要删除该行。
像这样的东西:
smbclient Hostname -A authfile -E 1>log 2>errorlog <<-EOF
get foo
EOF
Run Code Online (Sandbox Code Playgroud)
在错误日志中,您应该找到类似下面的内容,您的日志文件将为空
域=[主机名] 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