我可以使用此脚本从 Linux 连接到 Windows RDP 会话:
#!/bin/bash
/usr/bin/rdesktop -N -x m -u Administrator -p secret123 -d DOMAIN1 127.0.0.1:33891
(远程 Windows 服务器的 RDP 端口已安全地隧道传输到本地主机的 33891 端口)
但是此脚本不能正确传输密码:
#!/bin/bash
/usr/bin/rdesktop -N -x m -u Administrator -p #secret$123# -d DOMAIN2 127.0.0.1:33892
我该如何对密码中的特殊字符进行编码?
我还想知道如果我选择 /bin/sh 作为脚本的 shell 是否会有所不同。
编辑:
我发现这个有效:
\#秘密\$123\#
答案1
我建议你将密码存储在一个文件中,并rdesktop
通过管道传递。这样,密码就不会在运行ps
或类似操作时作为命令行中的参数显示出来。
cat secretfile | /usr/bin/rdesktop -N -x m -u Administrator -p - -d ...
然而,要回答你的问题,只需引用该论点就足以使其发挥作用:
/usr/bin/rdesktop -N -x m -u Administrator -p '#secret$123#' -d ...
编辑:
要使用变量(该值将在输出中可见ps
):
var='#secret$123#'
/usr/bin/rdesktop -N -x m -u Administrator -p "$var" -d ...
或者
var=$(<secretfile) # read from a file (doesn't work in sh)
/usr/bin/rdesktop -N -x m -u Administrator -p "$var" -d ...
答案2
在 Linux 命令行中,特殊字符需要用“\”进行转义。
您可以发布您的密码,我会告诉您它应该是什么样子。;)开玩笑……当然。