【问题标题】:How can I tell smbclient not to translate a particular forward slash into a backward slash?如何告诉 smbclient 不要将特定的正斜杠转换为反斜杠?
【发布时间】: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


    【解决方案1】:

    你没有。 smbclient dir 命令不采用与 Windows 中的 dir 命令相同的选项。它识别的唯一参数是可选的“掩码”/通配符模式。它对正斜杠没有用处。

    https://www.samba.org/samba/docs/man/manpages/smbclient.1.html查看完整文档

    【讨论】:

    • 我现在明白了。 :/“dir 命令”不是系统“dir”命令,就像我在 cmd.exe 中键入它一样。这很难过(对我来说),但我想我可以在本地过滤。
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2019-11-19
    • 2020-11-10
    • 2016-08-07
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多