![如何从 Linux 命令检查 Windows 远程路径是否存在?](https://linux22.com/image/15541/%E5%A6%82%E4%BD%95%E4%BB%8E%20Linux%20%E5%91%BD%E4%BB%A4%E6%A3%80%E6%9F%A5%20Windows%20%E8%BF%9C%E7%A8%8B%E8%B7%AF%E5%BE%84%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%EF%BC%9F.png)
我的 Jenkins 管道从 Linux 机器运行,我想'\\domain\parent\child\grand-child\
通过 shell 脚本检查 Windows 共享路径(例如 - )是否存在。
如果同样是从 Windows 机器运行,那么以下内容会有帮助 -
if exist <windows-shared-path> echo "Path present"
如果 Linux 机器上存在 Windows 共享路径,您能否共享 linux 命令来实现此目的?
答案1
你可以smbclient
这样使用:
smbclient -U'<domain>\<user>%<password>' '\\server\path\to\dir' -c exit && echo exists || echo does not exist
即smbclient
会失败或成功,具体取决于给定位置的可用性,并分别返回退出代码0
或1
。通过直接发出exit
命令,我们对共享本身不执行任何操作。
答案2
@FelixJN 答案对我不起作用,smbclient
连接\\server\path\to\dir
到,如果至少存在的话,\\server\path
并不总是成功,也就是说,受此启发,我另外使用了,很好地替换为else ,因为我得到了错误,并且还转义了选项:\\server\path\to\dir
\\server\path
-D
\
/
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
\
-U
smbclient -U'<domain>\\<user>%<password>' '//server/path/' -D 'to/dir' -c exit && echo exists || echo does not exist