gpt4 book ai didi

linux - smbclient 的退出代码

转载 作者:IT王子 更新时间:2023-10-29 01:27:00 59 4
gpt4 key购买 nike

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

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

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

我的问题是退出代码。如果文件下载完成,退出代码为 0 (OK)如果无法下载文件,则退出代码为 1 (OK)如果测试机由于下载文件而失去与共享的连接,则退出代码为 0(不好),但错误(“失去连接...等”)会写入控制台。 (好的)

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

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

附言。我检查了 smbclient 来源。看起来他们忘记设置退出代码了。因为每次出现另一个错误时都会设置错误消息并执行(例如退出(1))。但是对于超时,他们只设置错误消息。

提前致谢!

最佳答案

最好的方法是使用 smbclient 的 -E 参数并从命令行重定向 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 opening remote file \foo

关于linux - smbclient 的退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19805874/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com