如何在 shell 脚本中对 rdesktop 密码参数进行编码?

如何在 shell 脚本中对 rdesktop 密码参数进行编码?

我可以使用此脚本从 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 命令行中,特殊字符需要用“\”进行转义。

您可以发布您的密码,我会告诉您它应该是什么样子。;)开玩笑……当然。

相关内容