Как кодировать параметр пароля rdesktop в сценарии оболочки?

Я могу подключиться с помощью этого скрипта из Linux для сеанса Windows RDP:

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

(Порт rdp удаленного сервера Windows безопасно подключен к порту 33891 на локальном хосте)

Но этот скрипт не передает пароль должным образом:

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

Как мне закодировать специальные символы в пароле?

Мне также интересно, имеет ли это значение, если я выберу /bin/sh в качестве оболочки для скрипта.

Редактировать:

Я узнал, что это работает:

\ #Secret\$123\#

2 ответа

Решение

Я бы порекомендовал вам сохранить пароль в файле и передать его 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 ...

Специальные символы должны быть экранированы с помощью "\" в командной строке Linux.

Вы можете опубликовать свой пароль, и я покажу вам, как он должен выглядеть.;) Шучу... конечно.

Другие вопросы по тегам