現時点では、次のコマンドを使用してFreeRDPセッションを開始しています。
$ Sudo xfreerdp /v:farm.company.com /d:company.com \
/u:oshiro /p:oshiro_password /g:rds.company.com
正常に動作します。ただし、そのようなコマンドラインにパスワードを含めたくありません。だから私はパスワードなしでそれを試しました:
$ Sudo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com
そして、なんらかのダイアログボックスやパスワードの入力を求めるプロンプトではなく、接続エラーメッセージが表示されました。
これを取得してユーザーにパスワードを要求することは可能ですか?
更新:/p
スイッチの省略
/p
スイッチがないと、次のようになります。
oshiro@ubuntu:~$ xfreerdp /v:farm.company.com /d:company.com -u:oshiro /g:rds.company.com
connected to rds.company.com:443
connected to rds.company.com:443
Could not open SAM file!
Could not open SAM file!
Could not open SAM file!
Could not open SAM file!
rts_connect error! Status Code: 401
HTTP/1.1 401 Unauthorized
Content-Type: text/plain
Server: Microsoft-IIS/7.5
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="rds.company.com"
X-Powered-By: ASP.NET
Date: Sun, 23 Mar 2014 10:40:30 GMT +12
Content-Length: 13
rts_connect error!
rpc_connect failed!
Error: protocol security negotiation or connection failure
slm'ssolution について詳しく説明します。 1つのウィンドウですべての情報を入力し、RemoteAppをすべて一度に指定できるようにしたかったので、彼がzenityで提案したものを基に作成しました。
XFreeRDPプロンプト
コード:
#!/bin/bash
# XFreeRDP RemoteApp W/ Prompt Script
# Version 0.3
# Description:
# XFreeRDP Remote App Script utilizing Zentity to populate variables
# Written by Jarrett Higgins 12-2015
OUTPUT=$(zenity --forms --title="Connection Information" \
--text="Enter information about your Remote Connection" \
--separator="," \
--add-entry="Server" \
--add-entry="Port (Default: 3389)" \
--add-entry="Domain (Optional)" \
--add-entry="Username" \
--add-password="Password" \
--add-entry="Remote App Name (Optional)")
OUTPUT_RESULTS=$?
if ((OUTPUT_RESULTS != 0)); then
echo "something went wrong"
exit 1
fi
Blank=""
Server=$(awk -F, '{print $1}' <<<$OUTPUT)
Port=$(awk -F, '{print $2}' <<<$OUTPUT)
if ["$Port" = "$Blank"]
then
Port="3389"
else
Port="$Port"
fi
Domain=$(awk -F, '{print $3}' <<<$OUTPUT)
Username=$(awk -F, '{print $4}' <<<$OUTPUT)
Password=$(awk -F, '{print $5}' <<<$OUTPUT)
App=$(awk -F, '{print $6}' <<<$OUTPUT)
if ["$App" = "$Blank"]
then
App="$App"
Title="$Server"
else
AppName="$App"
Title="$AppName on $Server"
App="/app:||$App"
fi
#zenity --info --title="Information Return" --text="$Server $Port $Domain $Username $Password $App"
xfreerdp /t:"$Title" /v:$Server:$Port /d:$Domain /u:$Username /p:$Password $App /cert-ignore /workarea +clipboard
Password=""
特徴:
予定:
私はこれを#!++ラップトップで使用して会社への接続に大きな成功を収め、VMリモートアプリとクライアントサーバーです。スクリプト作成の経験がないので、誰かが何か提案やフィードバック、私はそれらを聞いてみたいです。
Tls securityを指定すると、リモートコンピューターはパスワードを要求します。
Xfreerdp --sec tls
新しいパラメーター形式:
/sec:tls
空のパラメーター(パスワード値なし)を指定する必要があります。これを試して:
Sudo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p
それが機能しない場合は、単純なbashスクリプトでこれを実現できます。
これをrdp.sh
として保存:
#!/bin/bash
# Read Password
echo -n Password:
read -s password
echo
# Run Command
Sudo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p:$password
次に、ファイルを実行可能にします。
chmod +x rdp.sh
起動します:
./rdp.sh
これはxfreerdpのgithubの問題でより徹底的に尋ねられ、議論されました: https://github.com/FreeRDP/FreeRDP/issues/1358
Bashスクリプトのアイデアは以下から取得されます https://stackoverflow.com/questions/3980668/how-to-get-a-password-from-a-Shell-script-without-echoing
次のシェルスクリプトを使用して、yadも好きです。
#!/bin/sh
frmdata=$(yad --title "Connect to remote computer" --form --field="Remote computer" --field="Username" --field="Password:H" --field="Domain" --field="Gateway")
frmcomputer=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $1 }')
frmusername=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $2 }')
frmpassword=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $3 }')
frmdomain=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $4 }')
frmgateway=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $5 }')
xfreerdp /v:$frmcomputer /f /d:$frmdomain /u:$frmusername /g:$frmgateway /p:$frmpassword /cert-ignore
それは良いインターフェースを提供し、パスワードを隠します。
--from-stdinも使用できます。次に、提供されていない必要な値を入力するよう求められます。
私はJarrettsソリューションが好きでしたが、yad zenityではなく、コンボボックスを作成できます。
OUTPUT=$(yad --center --button="gtk-ok:0" --title "Remote Desktop" --form \
--field="Server:CB" "rds1.domain.local\!rds2.domain.local\!rds3.domain.local" \
--field="Port" "3389" \
--field="Domain" "DOMAIN.local" \
--field="Username" "" \
--field="Password:H" \
--field="Remote App Name" "")