【发布时间】:2015-08-31 13:07:43
【问题描述】:
smbclient 实用程序似乎无条件地转换正在传递到远程 Windows 系统的命令中的正斜杠。当它们是远程文件系统中路径的一部分时,这可能是有意义的——smbclient 认为它可以帮助用户避免错误。但不是这样的情况:
auth='-Ubldguru%secret11'
homedir='\AutoHelp\prod'
UNC='//build2.company.com/c$'
keith@build1:~/build2> smbclient $auth --directory $homedir $UNC --command 'dir'
Domain=[BUILDDOM] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
. D 0 Mon Jun 15 13:19:31 2015
.. D 0 Mon Jun 15 13:19:31 2015
adldap D 0 Wed Jun 10 15:37:14 2015
jdfoutput D 0 Wed Jun 10 15:39:49 2015
Version34 D 0 Wed Jun 10 15:34:39 2015
WORKING A 8 Mon Jun 15 10:33:02 2015
_COMMON_DITA D 0 Tue Jun 9 15:11:21 2015
_COMMON_GRAPHICS D 0 Tue Jun 9 15:11:36 2015
51174 blocks of size 4194304. 38373 blocks available
keith@build1:~/build2> smbclient $auth --directory $homedir $UNC --command 'dir /s'
Domain=[BUILDDOM] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
NT_STATUS_NO_SUCH_FILE listing \s
keith@build1:~/build2> smbclient $auth --directory $homedir $UNC --command 'dir \/s'
Domain=[BUILDDOM] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
NT_STATUS_NO_SUCH_FILE listing \\s
keith@build1:~/build2> smbclient $auth --directory $homedir $UNC --command 'dir \\/s'
Domain=[BUILDDOM] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
NT_STATUS_NO_SUCH_FILE listing \\\s
keith@build1:~/build2> smbclient $auth --directory $homedir $UNC --command 'dir \\\/s'
Domain=[BUILDDOM] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
NT_STATUS_NO_SUCH_FILE listing \\\\s
keith@build1:~/build2> smbclient $auth --directory $homedir $UNC --command 'dir \\\\/s'
Domain=[BUILDDOM] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
NT_STATUS_NO_SUCH_FILE listing \\\\\s
keith@build1:~/build2>
正如您在上面看到的,smbclient(和我)知道如何在远程端获得一个简单的列表。问题是将带有正斜杠的标志传递给远程命令。 smbclient 在解析其 ARGV 时看到的所有斜杠都被盲目地转换为反斜杠,我没有找到任何方法来逃避应该是正斜杠/纯斜杠的那些。
(如果 smbclient 的手册页没有具体说明 UNC 字符串周围的斜线,那么“在那里”找到帮助可能会更容易 - 如果它甚至存在的话。)
我在手册页中遗漏了什么吗?我应该阅读源代码吗?这是众所周知的吗?
基思
【问题讨论】:
标签: command escaping smb slash