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

我可以连接这个脚本从Linux到Windows RDP会话:

#!/bin/bash /usr/bin/rdesktop -N -xm -u Administrator -p secret123 -d DOMAIN1 127.0.0.1:33891 

(远程Windows服务器的rdp端口安全地通过本地主机上的端口33891)

但是这个脚本不能正确地传输密码:

 #!/bin/bash /usr/bin/rdesktop -N -xm -u Administrator -p #secret$123# -d DOMAIN2 127.0.0.1:33892 

我该如何编码密码中的特殊字符?

我也想知道,如果我select/ bin / sh作为脚本的shell是否会有所作为。

编辑:

我发现这个作品:

\ #secret \ $ 123 \#

我build议您将密码存储在一个文件中,并通过pipe道将其传递到rdesktop 。 这样,运行ps或类似命令时,密码不会在命令行中显示为参数。

 cat secretfile | /usr/bin/rdesktop -N -xm -u Administrator -p - -d ... 

但是,要回答你的问题,只要引用这个论点就足以使其发挥作用:

 /usr/bin/rdesktop -N -xm -u Administrator -p '#secret$123#' -d ... 

编辑:

要使用一个variables(该值将在ps输出中可见):

 var='#secret$123#' /usr/bin/rdesktop -N -xm -u Administrator -p "$var" -d ... 

要么

 var=$(<secretfile) # read from a file (doesn't work in sh) /usr/bin/rdesktop -N -xm -u Administrator -p "$var" -d ... 

特殊字符需要在Linux命令行中用'\'转义。

你可以发布你的密码,我会告诉你它应该看起来如何。 ;)开玩笑…当然。