“Mac 용 원격 데스크톱 연결”에 대한 명령 줄 인수?


19

이것이 가능하다는 문서를 찾지 못했지만 연결하려는 호스트 이름을 명령 줄 인수로 Microsoft의 Mac 용 원격 데스크톱 연결에 전달할 수있는 방법이 있습니까?

관심있는 사람들을위한 몇 가지 배경 정보 :

저는 시스템 관리자이고 Windows 7 랩톱에서 주 업무용 컴퓨터로 MacBook Air로 이동하는 중입니다. 자주 원격 데스크톱 클라이언트를 사용하여 서버에 연결하고 Windows에서는 Launchy를 키보드 실행기로 사용합니다. 키워드로 "rdp"를 할당 했으므로 Launchy를 호출 할 때 "rdp {tab} servername"을 입력하면 탭 키 뒤의 텍스트가 호스트 이름으로 mstsc.exe (예 : mstsc.exe / v : servername)로 전달됩니다. . 그 결과 원격 데스크톱 클라이언트가 지정된 호스트 이름에 대한 세션을 엽니 다.


2
슬프게도 원격 데스크톱 클라이언트에 대한 명령 줄 액세스 나 AppleScript 액세스가 없습니다. CoRD 개발자에게 CoRD에 추가를 고려할 것인지 물었습니다. 그리고 MS의 RDP 클라이언트보다 더 나은 클라이언트를위한 플러그인이 있습니다 : cord.sourceforge.net . :)
Ian C.

@Ian C., 나는 과거에 개인용 MacBook에서 CoRD를 사용 했었습니다. 몇 년이 지난 것 같습니다. Microsoft 클라이언트의 안정성과 "광택 된"외관에 비해 실제로 만족하지 못했습니다. 스크린 샷 중 하나에서 rdp : // 링크 처리에 대한 언급이 있었기 때문에 실제로 다시 다운로드했습니다. 이것은 내가 찾고있는 것과 정확히 일치 하므로 CoRD로 다시 돌아와 주셔서 감사합니다! Alfred에서 "open rdp : // {query}"를 실행하는 "shell script"확장을 설정할 수있었습니다. 건배!
billc

오 와우. 나는 그것이 rdp : // 링크를 처리하는 것을 보지 못했습니다. 대단해. 내 의견에 답을 드리겠습니다. :)
Ian C.

답변:


11

Microsoft 원격 데스크톱 클라이언트에는 명령 줄 액세스가 없습니다. 그러나 무료이며 가장 우수한 CoRD 원격 데스크톱 클라이언트rdp://원하는 실행기 또는 open명령 줄을 통해 호출 할 수있는 링크를 처리 합니다 .

githubCoRD 설명서 에는 URL 인코딩 매개 변수를 사용하여 전체 구성된 RDP 세션을 여는 방법이 나와 있습니다.

rdp : // URL 구문

CoRD는 OS X 내부의 여러 곳에서 사용할 수있는 rdp : // URL을 처리합니다. 불행하게도 VNC URL 실행을 지원하는 Finder의 "서버에 연결"대화 상자를 확장 할 수있는 방법이 없으므로 거기서부터 CoRD를 시작할 수 없습니다 . Apple이이를 변경하거나 다른 사람이이를 확장 할 수있는 방법을 알고 있다면 Apple에 대해 듣고 싶습니다.

Saved Servers

rdp://기존 저장된 서버에서 URL 을 사용하려는 경우 (0.5.3 현재) 가능합니다! 호스트 이름 대신 레이블을 사용하십시오.

open rdp://label

새로운 서버

쉘에서 (터미널 사용) :

open rdp://hostname

URL을 통해 완전히 구성된 세션을 시작하는 데 추가 매개 변수를 사용할 수 있습니다.

open rdp://[username[:password]@]hostname[:port][/domain][?parameters]

쿼리 문자열을 통해 세션에 대해 다음 매개 변수를 설정할 수 있습니다 (0.5.2 기준).

  • screenDepth ### [8|16|24|32]
  • screenWidth <width in pixels>
  • screenHeight <height in pixels>
  • consoleSession ### [true|false|yes|no]
  • fullscreen ### [true|false|yes|no]
  • windowDrags ### [true|false|yes|no]
  • drawDesktop ### [true|false|yes|no]
  • windowAnimation ### [true|false|yes|no]
  • themes ### [true|false|yes|no]
  • fontSmoothing ### [true|false|yes|no]
  • forwardDisks ### [true|false|yes|no]
  • forwardPrinters ### [true|false|yes|no]
  • forwardAudio ### [0|1|2]
    • 0 - Forward Audio to the Local Machine (Currently not used since CoRD doesn't present audio)
    • 1 - Leave Audio at the Remote Machine
    • 2 - Disable Audio at both Machines

open rdp://jsmith:securePassword@hostname.bigco.com/BigCoDomain?screendepth###24\&consoleSession###true\&themes###false\&screenWidth###1280\&screenHeight###800

노트 :

명령 행에서 앰퍼샌드 (&)를 사용할 때는 백 슬래시 ()로 이스케이프해야합니다. 콜론 (:)은 이스케이프 할 필요없이 동일한 효과를 위해 앰퍼샌드 대신 사용할 수 있습니다.

@, :, & 등의 특수 문자가 포함 된 비밀번호는 URL 인코딩 형식 에 따라 인코딩해야합니다.

커맨드 라인 사용

CoRD는 다음 명령 줄 옵션을 지원합니다. -host -port -u -d -p -a [8 | 16 | 24 | 32] 화면 깊이 설정-너비 설정 화면 해상도 너비-높이 설정 화면 해상도 높이

/Applications/CoRD.app/Contents/MacOS/CoRD -host example.com -port 3389 -u username

경고

이런 식으로 명령 줄에서 CoRD를 시작하면 새로운 CoRD 인스턴스가 열립니다. 이 중 하나의 증상은 여러 Dock 아이콘입니다. 이는 통합 세션 등을 포함하여 많은 CoRD 장점의 효과를 무시하거나 줄입니다. 따라서 open 명령 및 rdp : // URL을 사용하여 세션을 시작하는 것이 좋습니다.

여기에 이미지 설명을 입력하십시오


1
너무 웃기다! 당신도 대답하면서 내 질문에 대답하고있었습니다. 도와 주셔서 감사합니다!
billc

CoRD GitHub 페이지 에 따르면 이 프로젝트는 2015 년 8 월 16 일 현재 더 이상 유지 관리되지 않습니다.
kenorb

동정. 좋았습니다.
Ian C.

이 답변은 구식입니다. 최신 버전의 Mac 용 Microsoft Remote Desktop rdp://은 다른 구성표를 사용하더라도 링크를 지원 합니다. Jack Douglas의 답변을 참조하십시오.
chrstphrchvz

7

나는 CoRD를 좋아하지 않습니다. 작동하지만 주기적으로 찌그러지는 것처럼 보입니다. Microsoft RDP에 대한 고유 한 CLI 스크립트를 만들었습니다. Microsoft Remote Desktop Client에 2 개의 인수를 전달할 수 있도록 sed + open bash 스크립트를 만들었습니다. 호스트 이름을 전달할 수 있으며 Server 2003 호스트의 콘솔에 연결하기위한 스위치를 던질 수 있습니다.

나는 이것이 더 나아질 수 있다는 것을 안다. 예를 들어 :

  • 내 bash 스크립트는 경로 또는 파일 이름의 공백으로 작동하지 않습니다. :)
  • .RDP 파일의 XML 데이터가 sed로 수정 될 수 있다고 생각합니다.
  • 나는 나이가 들었고 내가 좋아하는 것을 기억할 수 없기 때문에 콘솔에 연결하기위한 스위치의 여러 변형을 포함했습니다. bash 스크립팅은 내가 사용하는 것보다 더 우아한 솔루션을 가지고 있다고 확신합니다.

내가 한 방법은 다음과 같습니다.

  1. 원하는 모든 설정으로 Microsoft RDP 템플릿 프로필을 만듭니다. 이름을 'template.rdp'로 지정하십시오. 가짜 서버에 연결하십시오. 서버 이름 'zzxyzyz'를 사용했습니다. 이것은 'sed'명령에서 실제 서버 이름을 검색하고 바꿀 문자열로 사용됩니다.
  2. bash 스크립트를 작성하여 template.rdp를 temp.rdp에 복사 한 다음 스크립트를 호출 할 때 전달되는 원하는 호스트 이름으로 temp.rdp를 sed하십시오. bash 스크립트 이름을 'rdp.sh'로 지정했습니다.
  3. '~ p.sh'에 대한 별칭을 포함하도록 '~ / .bash_profile'을 수정하십시오.
  4. bash 스크립트를 실행 가능하게 만드십시오 : chmod + x rdp.sh
  5. 밥의 외삼촌

내 bash 스크립트의 내용 :

    #! /bin/bash
rdpTemplateFile='/Users/levi/Dropbox/RDC_Connections/RDS/template.rdp'
rdpTempRDP='/Users/levi/Dropbox/RDC_Connections/RDS/t.rdp'
rdpRunCommand="/Applications/Remote Desktop Connection.app/Contents/MacOS/Remote Desktop Connection"
rdpHost=${1}

if [ "${2}" = "/console" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

if [ "${2}" = "-console" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

if [ "${2}" = "-admin" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

cp -f ${rdpTemplateFile} ${rdpTempRDP}

sed -i '' "s|zzxyzyz|${rdpHost}|g" ${rdpTempRDP}

open -na "${rdpRunCommand}" --args ${rdpTempRDP}

별칭
.bash_profile에 추가되었습니다 (이것은 내 rdp.sh 스크립트 파일이 ~ / 홈 디렉토리에 있다고 가정합니다)

alias rdp=~/rdp.sh

스크립트를 실행 가능하게 만드십시오.

sudo chmod +x rdp.sh

스크립트를 실행하십시오.
다음은 콘솔 스위치가 포함 된 예입니다. 스크립트에 t.rdp 파일로 sed 될 내용을 보여주는 디버깅 라인을 남겼습니다.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>

나는이 개념을 작동시킬 수 있었지만 약간의 수정 후에 만 ​​가능했습니다. RDP를 시작하는 데 사용한 명령은 다음과 같습니다.open -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits

6

이것이 언제 변경되었는지는 모르지만 Microsoft 원격 데스크톱 클라이언트는 이제 rdp : // 링크를 처리합니다.

Microsoft Remote Desktop은 URI 체계 rdp : // query_string을 사용하여 클라이언트를 시작할 때 사용되는 사전 구성된 속성 설정을 저장합니다. 쿼리 문자열은 URL에 제공된 단일 또는 RDP 속성 집합을 나타냅니다. RDP 속성은 앰퍼샌드 기호 (&)로 구분됩니다.

예를 들어 PC에 연결할 때 문자열은 다음과 같습니다.

rdp : // full % 20address = s : mypc : 3389 & audiomode = i : 2 & disable % 20themes = i : 1

모든 속성은 Remote Desktop Client URI Scheme Support TechNet 페이지에 설명되어 있습니다.


샘플 URL을 좋아합니다. 로컬 포트 ​​3389를 Windows 컴퓨터로 전달했으며 공식 Microsoft 원격 데스크톱 앱을 사용하여 "et"사용자로 연결했습니다. 그러나 오류가 발생하지 않는 URL을 만들 수 없습니다.
Bruno Bronosky

localhost 대신 127.0.0.2를 사용해보십시오?

1
비밀번호 저장 / 통과 방법에 대한 아이디어가 있습니까?
Bruno Bronosky

1
Microsoft 원격 데스크톱 (Mac 용) 앱에 비밀번호를 저장하는 것이 현재하고 있습니다. 그러나 내 목표는 ssh 터널을 통해 해당 포트를 연 후 명령 줄을 통해 새 IP : 포트에 대한 연결을 시작하는 것입니다. 방금 "현재 저장된 연결의 호스트를 10.10.1.23:5589로 변경하고 연결"로 끝나는 스크립트를 개선하려고합니다.
Bruno Bronosky

1
당신은 방법 :) 발견하면 알려 주시기 바랍니다

1

음, Microsoft TAM에 문의 한 후 명령 줄을 통해 호스트 이름을 Microsoft 클라이언트에 전달할 방법이 없다는 것을 알았습니다.

반면 CoRD는 실제로 rdp : // 링크를 처리하여 원하는 것을 수행 할 수 있습니다. CoRD를 설치 한 후 다음을 입력하면

open rdp://servername

터미널 또는 iTerm2에서는 CoRD 내의 호스트 서버 이름에 대한 세션을 엽니 다 .

저는 Quickfred를 오랫동안 사용하고 나서 Mac에서 알프레드 (http://www.alfredapp.com/)를 "Launchy"대안으로 사용했습니다. Alfred 용 Powerpack을 구입하여 여러 확장을 사용할 수 있으며 그 중 하나는 쉘 스크립트를 실행할 수 있습니다. 그래서 쉘 스크립트 확장을 만들고 키워드 rdp를 할당하고 "필수 매개 변수"로 설정 한 후 스크립트를 다음과 같이 설정했습니다.

open rdp://{query}

이를 통해 alfred를 호출하고 rdp {tab} servername {return} 을 입력하여 원격 서버에 대한 원격 데스크톱 연결 세션을 열 수 있습니다.


0

위의 스크립트는 최신 "Microsoft Remote Desktop"에서 작동하지 않습니다. 변수로 응용 프로그램을 참조하는 것이 문제가되었으므로 경로를 하드 코딩했습니다 (원래 예제와 다릅니다). 또한 '--args'매개 변수를 제거해야했고 작동하기 시작했습니다.

open -na /Applications/Microsoft\ Remote\ Desktop.app/Contents/MacOS/Microsoft\ Remote\ Desktop ${rdpTempRDP}

0

따라서 이것은 대부분 다른 답변을 제거하고 스크립팅 해킹을 피하는 것입니다.

(TL; DR : 이전에는 사실이 아니었지만 Microsoft의 RDP는 이제 .rdp 파일을 자동으로 처리합니다. open)

RDP GUI에 이미 많은 프로필이 저장되어 있습니다. (BTW, plist는 ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist항상 plutil -convert xml1 xyz.list사람이 보는 것처럼 )

(추가 참조 : https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

명령 행 가능하게하려면 다음을 수행하십시오.

  1. GUI에서 프로파일을 선택하십시오.
  2. 파일-> 내보내기 .rdp는 비밀번호 정보가 부족하다는 점을 지적 하여 파일을 작성합니다.
  3. (.rdp를 연구하여 매개 변수가 수동 rdp : // 구문과 어떻게 일치하는지 확인하십시오)
  4. 명령 줄에서 간단히 open파일 이름.rdp

-1

연결하려는 각 서버에 대한 템플릿과 "일생에 한 번"연결을위한 빈 서버 필드가있는 템플릿을 만드는 것이 쉽다고 생각합니다. 그냥 폴더에 넣고 이름이나 번호를 붙여 주문을 올바르게하십시오. 폴더를 독으로 드래그하면 클릭 한 번으로 rdp 템플릿의 빠른 목록을 얻을 수 있습니다. 한 번 클릭하면 연결할 수 있습니다. 또는 Command + Space를 입력하고 파일 이름을 입력 한 후 Enter 키를 눌러 실행할 수 있습니다. 또는 TYPEY TYPEY TYPE을 타이핑하고 모든 종류의 관리 앱을 설치할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.