因為 Remmina 一定要記住 User Name & Password 才能連線
有安全上的疑慮, 因此利用 Bash Script 搭配 xfreerdp 來進行連線作業
需要將連線資源寫成文字檔放在 Web Server 上讓 Bash Script 去下載解讀
如此如果資源有異動, 就不需要去 Client 更換 Script, 只要修改 Web Server 上的資源檔案就行了
經過測試, 如果不裝 Remmina 的話 xfreerdp 無法裝到 2.0 以上版本 (才支援 RDG)
安裝時參考 Microsoft 2012 R2 VDI 攻略 中 ubuntu 的安裝方法
- Install Remmina and FreeRDP to Connect to VDI Through RD Gateway
- sudo apt-get update
- sudo apt-get dist-upgrade
- sudo apt-add-repository ppa:remmina-ppa-team/remmina-next
- sudo apt-get update
- sudo apt-get install freerdp-x11 remmina remmina-plugin-rdp
- sudo apt-get upgrade
- xfreerdp --version
連線參數有需要可以自己改
# Need a website (RD Web is first choice) to store and download three files: # # # Menu_Connection.txt for connection info, Single Line # Logon Domain.com;RDCB Server FQDN;RDGateway FQDN; # # Menu_Workstation.txt for VM Base, Multi-Line # Collection Name;Desc;Load Balance Info; # # Menu_Application.txt for RemoteAPP, Multi-Line # App Name;Desc;Load Balance Info;App Alternate Name; # # End with ; at the end of line #!/bin/bash clear SettingsURL="http://RDWeb.Contoso.com/Raspberry" TypeVar=("Connection" "Workstation" "Application") # # Menu_Connection.txt for connection info, Single Line # Logon Domain.com;RDCB Server FQDN;RDGateway FQDN; # # Menu_Workstation.txt for VM Base, Multi-Line # Collection Name;Desc;Load Balance Info; # # Menu_Application.txt for RemoteAPP, Multi-Line # App Name;Desc;Load Balance Info;App Alternate Name; # # End with ; at the end of line function MainMenu { Type=$(dialog --clear \ --backtitle "Main Menu" \ --title "Contoso VDI" \ --menu "Choose Resource Type:" \ 10 40 3 \ "Exit" "" \ "${TypeVar[1]}" "" \ "${TypeVar[2]}" "" \ 3>&1 1>&2 2>&3 3>&-) if [ -z $Type ]; then clear exit fi unset ConnectionLine unset MenuLine unset ConnectionItems unset MenuItems unset Options unset Resource unset UserName unset UserPassword unset Domain unset RDCBServer unset Gateway unset ItemName unset ItemConnectionInfo unset ItemAppInfo ConnectionFile="Menu_${TypeVar[0]}.txt" if [ $Type = 'Exit' ]; then clear exit elif [ $Type = "${TypeVar[1]}" ]; then MenuFile="Menu_${TypeVar[1]}.txt" elif [ $Type = "${TypeVar[2]}" ]; then MenuFile="Menu_${TypeVar[2]}.txt" fi rm -rf $ConnectionFile wget "$SettingsURL/$ConnectionFile" while read -r ConnectionLine do IFS=';' read -a ConnectionItems <<< $ConnectionLine Domain=("${ConnectionItems[0]}") RDCBServer=("${ConnectionItems[1]}") Gateway=("${ConnectionItems[2]}") done < $ConnectionFile rm -rf $ConnectionFile rm -rf $MenuFile wget "$SettingsURL/$MenuFile" while read -r MenuLine do IFS=';' read -a MenuItems <<< $MenuLine Options+=("${MenuItems[0]}") Options+=("${MenuItems[1]}") ItemName+=("${MenuItems[0]}") ItemConnectionInfo+=("${MenuItems[2]}") ItemAppInfo+=("${MenuItems[3]}") done < $MenuFile rm -rf $MenuFile if [ ${#ItemName[@]} = 0 ]; then dialog --clear --title "[ Warning ]" --msgbox "\nNo Resources Found\nPlease contact your Administrator" 8 40 MainMenu fi ChooseTarget clear exit } function ChooseTarget { Resource=$(dialog --clear \ --backtitle "Resource Type: $Type" \ --title "$Type" \ --menu "Choose Resource:" \ 18 50 11 \ "&1 1>&2 2>&3 3>&-) if [ "$Resource" = '' ]; then MainMenu elif [ "$Resource" = '&1 1>&2 2>&3 3>&-) if [ "$UserName" = '' ]; then MainMenu else InputUserPassword fi clear exit } function InputUserPassword { UserPassword=$(whiptail --clear \ --backtitle "Authentication" \ --title "Password" \ --passwordbox "Enter Password of [$UserName] \nfor [$Resource]:" \ 8 40 3>&1 1>&2 2>&3 3>&-) ret=$? if [ -z "$UserPassword" ]; then MainMenu fi if [ "$UserPassword" = '' ]; then MainMenu fi i=0 until [ $i -gt ${#ItemName[@]} ]; do if [[ ${ItemName[$i]} != '' ]]; then if [ "$Resource" = "${ItemName[$i]}" ]; then Connection=("${ItemConnectionInfo[$i]}") App=("${ItemAppInfo[$i]}") fi fi let i+=1 done ConnectToEnvironment clear exit } function ConnectToEnvironment { ConnectionString="xfreerdp /v:\"$RDCBServer\"" ConnectionString+=" /w:1024 /h:768 /size:100% /f /multimon /span" ConnectionString+=" /t:\"$Resource\" /d:\"$Domain\" /g:\"$Gateway\"" ConnectionString+=" /load-balance-info:\"$Connection\"" if [ $Type = "${TypeVar[2]}" ]; then ConnectionString+=" /app:\"$App\"" fi ConnectionString+=" /sound:sys:alsa /codec-cache:rfx /rfx /rfx-mode:video" ConnectionString+=" /cert-ignore /log-level:ERROR" ConnectionString+=" /u:\"$UserName\" /p:\"$UserPassword\"" clear echo echo " Press [Enter] to Connect -> $Type - $Resource" echo echo " Please wait with patient" echo echo " Press [Ctrl] + [Alt] + [Enter] to Switch Full Screen Mode" echo echo " If you found any trouble in connecting to the environment," echo " Please contact administrator with below information." echo echo "--------------------------------------------------------------------------------" eval $ConnectionString echo "--------------------------------------------------------------------------------" echo echo " If you found any trouble in connecting to the environment," echo " Please contact administrator with above information." echo read -rsp $' Press any key to back to Main Menu... \n\n' -n1 key read -rsp $'\n' -n1 key MainMenu exit } MainMenu exit
沒有留言:
張貼留言