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