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