Назад | Перейти на главную страницу

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

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

#!/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 \ #

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

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