Exit codes of smbclient

狂风中的少年 提交于 2020-01-02 04:48:07

问题


i've a problem with the commandline command "smbclient" of samba on arm.

I wrote a script to download files from a Windows Share. Here the smb-part of this script.

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

My problem ar the exit codes. If the file is downloaded completely, the exit code is 0 (OK) If the file cannot be downloaded, the exit code is 1 (OK) If the testmaschine loses the connection to the share due downloading a file, the exit code is 0 (NOT GOOD), but error ("Lost connection...etc.") is written to console. (OK)

I tried it with two different versions. samba-3.0.32 samba-3.6.19 Both the same.

Does someone know a good workaround (or smbclient-argument) to let my script know, that the download failed?

PS. I checked the smbclient sources. It looks like they forgot to set the exitcode. Because everytime there is another error the set the Errormessage and do an (e.g. exit(1)). But for timeouts, they only set the Errormessage.

Thank you in advance!


回答1:


What would be best is to use the -E argument to smbclient and redirect 2>/errorlog from the command line. You can then check this file to see if any errors occurred.

Warning, the first line is always the Domain=......... so you may need to strip that line out.

Something like this:

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

In the errorlog you should find something like below, your log file will be empty

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



来源:https://stackoverflow.com/questions/19805874/exit-codes-of-smbclient

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!