Я могу подключиться с помощью этого скрипта из 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.
Вы можете опубликовать свой пароль, и я покажу вам, как он должен выглядеть. ;) Шучу ... конечно.