"मैक के लिए दूरस्थ डेस्कटॉप कनेक्शन" के लिए कमांड लाइन तर्क?


19

मैं ऐसा कोई भी दस्तावेज़ नहीं ढूंढ सका हूँ जो यह इंगित करता हो कि यह संभव है, लेकिन क्या होस्टनाम को पास करने का कोई तरीका है जो आप मैक के लिए Microsoft के दूरस्थ डेस्कटॉप कनेक्शन में कमांड-लाइन तर्क के रूप में कनेक्ट करना चाहेंगे?

उन लोगों के लिए कुछ पृष्ठभूमि जानकारी:

मैं एक सिस्टम प्रशासक हूं, और मैं विंडोज 7 लैपटॉप से ​​अपने प्राथमिक कार्य कंप्यूटर के रूप में मैकबुक एयर में जाने की प्रक्रिया में हूं। मैं सर्वर से कनेक्ट करने के लिए अक्सर दूरस्थ डेस्कटॉप क्लाइंट का उपयोग करता हूं, और विंडोज में, मैं लॉन्चर का उपयोग अपने कीबोर्ड लांचर के रूप में करता हूं। मैंने "rdp" को एक कीवर्ड के रूप में असाइन किया है, इसलिए जब मैं लॉन्ची को आमंत्रित करता हूं, तो "rdp {tab} servername" टाइप करता हूं, यह टैब कुंजी के बाद टेक्स्ट को होस्टनाम के रूप में mstsc.exe (यानी, mstsc.exe / v: servername) के रूप में पास करता है। । इसके परिणामस्वरूप दूरस्थ डेस्कटॉप क्लाइंट में निर्दिष्ट होस्टनाम के लिए एक सत्र खुलता है।


2
अफसोस की बात है, कोई भी कमांड लाइन एक्सेस या AppleScript रिमोट डेस्कटॉप क्लाइंट तक पहुंच नहीं है। मैंने CoRD डेवलपर से पूछा है कि क्या वह इसे CoRD से जोड़ने पर विचार करेगा। और MS 'RDP क्लाइंट: cord.sourceforge.net से बेहतर क्लाइंट के लिए मेरा प्लग है । :)
इयान सी।

@ इयान सी।, मैं अपने व्यक्तिगत मैकबुक पर अतीत में सीओआरडी का उपयोग करता था ... ऐसा लगता है कि यह कुछ साल रहा है। Microsoft के क्लाइंट की स्थिरता और अधिक "पॉलिश" लुक की तुलना में वास्तव में इससे संतुष्ट नहीं था। मैंने वास्तव में बस इसे फिर से डाउनलोड किया, क्योंकि मैंने उनके एक स्क्रीनशॉट में देखा, इसमें आरडीपी: // लिंक को संभालने का उल्लेख था। यह वही है जो मैं देख रहा हूँ, इसलिए मुझे वापस CoRD की ओर इशारा करने के लिए धन्यवाद! मैं अल्फ्रेड में "शेल स्क्रिप्ट" एक्सटेंशन स्थापित करने में सक्षम था जो "ओपन आरडीपी: // {क्वेरी}" निष्पादित करता है। चीयर्स!
बिल

ओह वाह। मैंने यह भी नहीं देखा कि यह rdp: // लिंक संभाला है। वह तो कमाल है। मैं अपनी टिप्पणी का उत्तर दूंगा। :)
इयान सी

जवाबों:


11

Microsoft दूरस्थ डेस्कटॉप क्लाइंट के लिए कोई कमांड लाइन एक्सेस नहीं है। लेकिन मुफ्त और सबसे उत्कृष्ट सीओआरडी रिमोट डेस्कटॉप क्लाइंटrdp:// लिंक को संभालता है जो आपको इसे अपनी पसंद के लॉन्चर से या यहां तक openकि कमांड लाइन पर कॉल करने देता है ।

गितुब पर सीओआरडी प्रलेखन यह बताता है कि आप पूर्ण-कॉन्फ़िगर आरडीपी सत्र खोलने के लिए URL एनकोडेड मापदंडों का उपयोग कैसे कर सकते हैं।

rdp: // URL सिंटैक्स

CoRD हैंडल rdp: // URL, जिसे आप OS X के अंदर कई जगहों से उपयोग कर सकते हैं। दुर्भाग्य से, फाइंडर के "सर्वर से कनेक्ट" संवाद को बढ़ाने का कोई तरीका नहीं है, जो VNC URL को लॉन्च करने का समर्थन करता है, इसलिए हम CoRD को वहां से लॉन्च नहीं कर सकते। । यदि Apple इसे बदलता है (या यदि किसी को इसे बढ़ाने के तरीके के बारे में पता है) तो हम इसके बारे में सुनना पसंद करेंगे।

Saved Servers

यदि आप rdp://मौजूदा सहेजे गए सर्वर के साथ यूआरएल का उपयोग करना चाहते हैं, तो आप (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

ध्यान दें:

कमांड लाइन से ampersands (&) का उपयोग करते समय, उन्हें बैकस्लैश () के साथ भागना पड़ता है। Colons (:) का उपयोग एम्परर्सैंड्स के स्थान पर एक ही प्रभाव के लिए किया जा सकता है, बिना भागने की आवश्यकता के।

URL, एन्कोडिंग प्रारूप के अनुसार पासवर्ड, @,:, &, आदि में किसी विशेष वर्ण वाले कूटशब्द को कूटबद्ध करने की आवश्यकता है

कमांड लाइन का उपयोग

CoRD निम्नलिखित कमांड लाइन विकल्पों का समर्थन करता है: -होस्ट -पोर्ट -u -d -p -a- [8 | 16 | 24 | 32] सेट स्क्रीन डेप्थ-इनवॉइस सेट स्क्रीन रिज़ॉल्यूशन चौड़ाई -हाई सेट स्क्रीन रिज़ॉल्यूशन ऊंचाई

उदाहरण

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

चेतावनियां

कमांड लाइन से CoRD को इस तरह लॉन्च करने से CoRD का एक नया उदाहरण खुलता है। इसका एक लक्षण मल्टीपल डॉक आइकन है। यह एकीकृत सत्रों सहित CoRD मजबूत बिंदुओं में से कई की प्रभावशीलता को ओवरराइड या कम करता है, इस कारण से, हम खुले कमांड का उपयोग करने की सलाह देते हैं, और सत्रों को लॉन्च करने के लिए rdp: // URL का उपयोग करते हैं।

यहाँ छवि विवरण दर्ज करें


1
बहुत अजीब! मैं अपने प्रश्न का उत्तर दे रहा था जैसे आपने उत्तर दिया। आपकी सहायता के लिए एक बार फिर से धन्यवाद!
२39

CoRD GitHub पेज के अनुसार , यह परियोजना अब 16 अगस्त, 2015 तक कायम नहीं रहेगी
kenorb

अफ़सोस की बात है। यह अच्छा था।
इयान सी

यह उत्तर पुराना है: मैक समर्थन rdp://लिंक के लिए Microsoft दूरस्थ डेस्कटॉप के नए संस्करण (हालांकि एक अलग योजना का उपयोग करके)। जैक डगलस का जवाब देखें।
chrstphrchvz

7

मैं CoRD से प्यार नहीं करता। यह काम करता है, लेकिन यह समय-समय पर बाहर निकलने लगता है। मैंने Microsoft RDP के लिए अपनी CLI स्क्रिप्ट बनाई। मैंने Microsoft दूरस्थ डेस्कटॉप क्लाइंट के लिए 2 तर्क पारित करना संभव बनाने के लिए एक सीड + ओपन बैश स्क्रिप्ट बनाई। मैं एक होस्ट नाम पारित कर सकता हूं, और मैं सर्वर 2003 मेजबानों के कंसोल से कनेक्ट करने के लिए एक स्विच फेंक सकता हूं।

मुझे पता है कि इसे और आगे ले जाया जा सकता है। उदाहरण के लिए:

  • मेरी बैश स्क्रिप्ट पथ या फ़ाइल नाम में रिक्त स्थान के साथ काम नहीं करेगी :)
  • मुझे लगता है कि .RDP फ़ाइल में किसी भी XML डेटा को sed के साथ संशोधित किया जा सकता है।
  • मैंने कंसोल से जुड़ने के लिए एक स्विच के कई रूपांतर शामिल किए क्योंकि मैं बूढ़ा हो गया हूं और कभी भी यह याद नहीं रख सकता कि मुझे कौन सा पसंद है। मैं शर्त लगाता हूं कि मेरे द्वारा उपयोग किए जाने की तुलना में बैश स्क्रिप्टिंग में अधिक सुरुचिपूर्ण समाधान है।

यहाँ देखें कि मैंने यह कैसे किया:

  1. अपनी सभी पसंदीदा सेटिंग्स के साथ एक Microsoft RDP टेम्प्लेट प्रोफ़ाइल बनाएं। इसे 'template.rdp' नाम दें। इसे एक नकली सर्वर से कनेक्ट करें। मैंने एक सर्वर नाम 'zzxyzyz' का इस्तेमाल किया। इसका उपयोग 'सेड' कमांड में वास्तविक सर्वर नाम के साथ खोजने और बदलने के लिए स्ट्रिंग के रूप में किया जाता है।
  2. टेम्प्लेट कॉपी करने के लिए एक bash स्क्रिप्ट बनाएं। temp.rdp को कॉपी करें, फिर temp.rdp को इच्छित होस्ट नाम के साथ सीड करें जो स्क्रिप्ट को इनवॉइस करते समय पास हो जाता है। मैंने अपनी बैश स्क्रिप्ट का नाम 'rdp.sh' रखा।
  3. एक उपनाम को 'rdp.sh' में शामिल करने के लिए अपने '~ / .bash_profile' को संशोधित करें।
  4. बैश स्क्रिप्ट को निष्पादन योग्य बनाएं: chmod + x rdp.sh
  5. बॉब के यार चाचा

मेरी बैश स्क्रिप्ट की सामग्री :

    #! /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'd होने वाली है।

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

मैं इस अवधारणा को काम करने में सक्षम था, लेकिन केवल कुछ संशोधन के बाद। आरडीपी शुरू करने के लिए मैंने जो कमांड का इस्तेमाल किया था, वह थाopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits

6

मुझे पता नहीं है कि यह कब बदल गया, लेकिन Microsoft दूरस्थ डेस्कटॉप क्लाइंट rdp को संभालता है: // लिंक अब:

Microsoft दूरस्थ डेस्कटॉप क्लाइंट लॉन्च करते समय उपयोग की जाने वाली पूर्व-कॉन्फ़िगर विशेषता सेटिंग्स को संग्रहीत करने के लिए URI स्कीम rdp: // query_string का उपयोग करता है। क्वेरी स्ट्रिंग्स URL में प्रदान किए गए RDP विशेषताओं के एकल या सेट का प्रतिनिधित्व करते हैं। RDP विशेषताएँ एम्परसेंड प्रतीक (और) द्वारा अलग की जाती हैं।

उदाहरण के लिए, पीसी से कनेक्ट करते समय, स्ट्रिंग है:

आरडीपी: // पूर्ण% 20address = रों: MyPC: 3389 और audiomode = मैं: 2 और अक्षम% 20themes = मैं: 1

सभी विशेषताओं को दूरस्थ डेस्कटॉप क्लाइंट URI स्कीम समर्थन TechNet पृष्ठ पर प्रलेखित किया गया है ।


मैं कुछ नमूना URL को देखना पसंद करूंगा। मेरे पास अपना स्थानीय पोर्ट 3389 एक विंडोज मशीन के लिए भेजा गया है और मैं आधिकारिक माइक्रोसॉफ्ट रिमोट डेस्कटॉप ऐप का उपयोग करके उपयोगकर्ता "एट" के रूप में जुड़ता हूं। लेकिन, मैं एक ऐसे URL का निर्माण नहीं कर सकता जो कोई त्रुटि न दे।
ब्रूनो ब्रोंस्की

लोकलहोस्ट के बजाय 127.0.0.2 का उपयोग करने का प्रयास करें?

1
पासवर्ड कैसे स्टोर / पास करें, इस बारे में कोई विचार है?
ब्रूनो ब्रोंस्की

1
Microsoft दूरस्थ डेस्कटॉप (मैक के लिए) ऐप में पासवर्ड सेव करना वही है जो मैं वर्तमान में करता हूं। हालाँकि, मेरा लक्ष्य एक नया आईपी: पोर्ट टू कमांड लाइन के माध्यम से उस पोर्ट को ssh सुरंग के माध्यम से खोलने के लिए एक कनेक्शन लॉन्च करना है। मैं सिर्फ अपनी स्क्रिप्ट को बेहतर बनाने की कोशिश कर रहा हूं, जो वर्तमान में "अब सहेजे गए कनेक्शन के होस्ट को 10.10.1.23:5589 में बदल दें और कनेक्ट करें"
ब्रूनो ब्रोंस्की

1
कृपया मुझे बताएं कि क्या आपको कोई तरीका लगता है :)

1

खैर, अपने Microsoft टैम से परामर्श करने के बाद, मैंने पाया है कि कमांड लाइन के माध्यम से Microsoft क्लाइंट के लिए एक होस्टनाम पास करने का कोई तरीका नहीं है।

दूसरी ओर, CoRD, वास्तव में वही कर सकता है जो मैं rdp को संभाल कर करना चाहता हूं: // लिंक। CoRD स्थापित करने के बाद, यदि आप टाइप करते हैं

open rdp://servername

टर्मिनल या iTerm2 में, यह की मेजबानी के लिए एक सत्र खुल जाएगा सर्वर की हड्डी के भीतर।

मैं अल्फ्रेड (http://www.alfredapp.com/) का उपयोग मैक पर मेरे "लॉन्ची" विकल्प के रूप में करता हूं, जिसे क्विकसिल्वर का एक लंबे समय के उपयोगकर्ता होने के बाद इसे खोज लिया गया है। मैंने अल्फ्रेड के लिए पावरपैक खरीदा, जो आपको कई एक्सटेंशन का उपयोग करने की अनुमति देता है, जिनमें से एक इसे शेल स्क्रिप्ट लॉन्च करने की क्षमता देता है। इसलिए मैंने एक शेल स्क्रिप्ट एक्सटेंशन बनाया, कीवर्ड rdp को असाइन किया, इसे "आवश्यक पैरामीटर" पर सेट किया, और स्क्रिप्ट को इसके लिए सेट किया:

open rdp://{query}

यह मुझे अल्फ़्रेड को लागू करने की अनुमति देता है, और दूरस्थ सर्वर से दूरस्थ डेस्कटॉप कनेक्शन सत्र खोलने के लिए rdp {tab} servername {return} टाइप करता है।


0

उपरोक्त स्क्रिप्ट नवीनतम "Microsoft दूरस्थ डेस्कटॉप" के साथ काम नहीं करती है। एक चर के साथ आवेदन को संदर्भित करना समस्याग्रस्त था इसलिए मैंने पथ को कोडित किया (जो मूल उदाहरण से अलग है)। मुझे '--args' पैरामीटर निकालने की भी जरूरत थी और यह काम करने लगा।

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

0

इसलिए यह ज्यादातर अन्य उत्तरों को मांस देने और हैकिंग की स्क्रिप्ट से बचने के लिए है:

(TL; DR: पहले सच नहीं रहा होगा, लेकिन Microsoft का RDP अब .rdp फ़ाइलों को अपने आप संभालता है open)

मेरे पास आरडीपी जीयूआई में पहले से ही कई प्रोफाइल हैं। (बीटीडब्लू, प्लिस्ट ~/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 टेम्प्लेट की त्वरित सूची प्राप्त करने के लिए क्लिक कर सकता हूं जिसे मैं कनेक्ट करने के लिए सिर्फ एक-क्लिक कर सकता हूं। या मैं कमांड + स्पेस दे सकता हूं और फाइल के नाम पर टाइप कर सकता हूं और इसे चलाने के लिए एंटर दबा सकता हूं। या आप TYPEY TYPEY TYPE को टाइप कर सकते हैं और सभी प्रकार के मैनेजमेंट ऐप्स इंस्टॉल कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.