Argumentos da linha de comando para "Conexão de área de trabalho remota para Mac"?

19

Não consegui encontrar nenhuma documentação que indicasse isso é possível, mas existe alguma maneira de passar o nome do host ao qual você deseja se conectar como argumento da linha de comando para o Remote Desktop Connection for Mac da Microsoft?

Algumas informações básicas para os interessados:

Sou administrador de sistemas e estou no processo de mudar para o MacBook Air como meu computador principal de trabalho em um laptop com Windows 7. Eu freqüentemente uso o Remote Desktop Client para conectar-me a servidores e, no Windows, uso o Launchy como meu iniciador de teclado. Eu designei "rdp" como uma palavra-chave, portanto, quando chamo o Launchy, digite "rdp {tab} servername" e transmite o texto após a tecla tab como o nome do host para o mstsc.exe (isto é, mstsc.exe / v: servername) . Isso resulta no cliente da área de trabalho remota abrindo uma sessão para o nome do host especificado.

billc
fonte
2
Infelizmente, não há acesso à linha de comando ou acesso ao AppleScript ao Remote Desktop Client. Perguntei ao desenvolvedor do CoRD se ele consideraria adicioná-lo ao CoRD. E há meu plug para um cliente melhor que o cliente RDP da MS: cord.sourceforge.net . :)
Ian C.
@ Ian C., eu tinha usado o CRRD no passado, no meu MacBook pessoal ... parece que já faz alguns anos. Não estava realmente satisfeito com isso em comparação com a estabilidade e a aparência mais "polida" do cliente da Microsoft. Na verdade, eu apenas baixei novamente, porque notei que em uma das capturas de tela, houve uma menção ao manuseio de links rdp: //. Isso faz exatamente o que estou procurando, então, obrigado por me apontar de volta para o CRRD! Consegui configurar uma extensão "shell script" no Alfred que executa "open rdp: // {query}". Felicidades!
billc
Oh uau. Eu nem percebi que tratava de links rdp: //. Fantástico. Vou fazer o meu comentário uma resposta. :)
Ian C.

Respostas:

11

Não há acesso à linha de comando para o Microsoft Remote Desktop Client. Mas o cliente de desktop remoto gratuito e mais excelente do CoRD lida com rdp://links que permitem chamá-lo a partir de um iniciador de sua escolha ou até mesmo openna linha de comando.

A documentação do CoRD no github mostra como você pode usar parâmetros codificados por URL para abrir sessões RDP totalmente configuradas.

rdp: // sintaxe do URL

O CoRD lida com URLs rdp: //, que você pode usar de muitos lugares no OS X. Infelizmente, não há como estender a caixa de diálogo "Conectar ao Servidor" do Finder, que suporta o lançamento de URLs VNC, portanto, não podemos iniciar o CoRD a partir daí. . Se a Apple mudar isso (ou se alguém souber de uma maneira de estendê-lo), gostaríamos de ouvir sobre isso.

Saved Servers

Se você deseja usar rdp://URLs com servidores salvos existentes, pode (a partir de 0.5.3)! Basta usar o rótulo no lugar de um nome de host:

open rdp://label

Novos Servidores

Em um shell (usando o Terminal):

open rdp://hostname

Parâmetros adicionais podem ser usados ​​para iniciar uma sessão totalmente configurada via URL:

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

Os seguintes parâmetros podem ser definidos para a sessão por meio de uma sequência de consultas (a partir de 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

Exemplo

open rdp://jsmith:[email protected]/BigCoDomain?screendepth###24\&consoleSession###true\&themes###false\&screenWidth###1280\&screenHeight###800

Nota:

Ao usar e comercial (&) na linha de comando, eles precisam ser escapados com uma barra invertida (). Dois pontos (:) podem ser usados ​​no lugar de e comercial para o mesmo efeito, sem a necessidade de escapar.

Senhas com caracteres especiais, @,:, &, etc precisam ser codificadas de acordo com o formato de codificação de URL

Uso da linha de comando

O CoRD suporta as seguintes opções de linha de comando: -host -port -u -d -p -a [8 | 16 | 24 | 32] define a profundidade da tela -width define a largura da resolução da tela -height define a altura da resolução da tela

Exemplo

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

Ressalvas

Iniciar o CoRD a partir da linha de comando dessa maneira faz com que uma nova instância do CoRD seja aberta. Um sintoma disso são vários ícones do Dock. Isso substitui ou diminui a eficácia de muitos dos pontos fortes do CRRD, incluindo sessões unificadas, etc. Por esse motivo, recomendamos o uso do comando open e URLs rdp: // para iniciar sessões.

insira a descrição da imagem aqui

Ian C.
fonte
11
Muito engraçado! Eu estava respondendo minha própria pergunta, assim como você respondeu. Obrigado novamente por sua ajuda!
billc
De acordo com cabo de página GitHub , este projecto não está mais sendo mantida a partir de 16 de agosto de 2015.
kenorb
Pena. Foi bom.
Ian C.
Esta resposta está desatualizada: as versões mais recentes do Microsoft Remote Desktop para Mac suportam rdp://links (embora usando um esquema diferente). Veja a resposta de Jack Douglas.
chrstphrchvz
7

Eu não amo o CRRD. Funciona, mas parece esfarelar periodicamente. Criei meu próprio script CLI para o Microsoft RDP. Criei um script sed + open bash para possibilitar a passagem de 2 argumentos para o Microsoft Remote Desktop Client. Posso passar um nome de host e ativar um switch para conectar-se ao console dos hosts do Server 2003.

Eu sei que isso poderia ser levado mais longe. Por exemplo:

  • Meu script bash não funcionará com espaços nos caminhos ou nomes de arquivos :)
  • Eu imagino que qualquer um dos dados XML no arquivo .RDP possa ser modificado com o sed.
  • Incluí várias variações de um switch para conectar ao console, porque sou velho e nunca consigo me lembrar de qual deles gosto. Aposto que o script bash tem uma solução mais elegante do que eu uso.

Aqui está como eu fiz isso:

  1. Crie um perfil de modelo do Microsoft RDP com todas as suas configurações preferidas. Nomeie-o como 'template.rdp'. Faça com que ele se conecte a um servidor falso. Eu usei o nome de um servidor 'zzxyzyz'. Isso é usado no comando 'sed' como a cadeia de caracteres para procurar e substituir por um nome de servidor real.
  2. Crie um script bash para copiar o template.rdp para um temp.rdp e sedie o temp.rdp com o nome do host desejado que é passado ao chamar o script. Eu nomeei meu script bash 'rdp.sh'.
  3. Modifique seu '~ / .bash_profile' para incluir um alias em 'rdp.sh'
  4. Torne o script bash executável: chmod + x rdp.sh
  5. O tio de Bob

Conteúdo do meu script 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}

Alias ​​adicionado ao .bash_profile
(Isso pressupõe que meu arquivo de script rdp.sh esteja no meu diretório pessoal, ~ /)

alias rdp=~/rdp.sh

Torne o script executável:

sudo chmod +x rdp.sh

Execute o script:
Aqui está um exemplo que inclui a opção de console. Deixei uma linha de depuração no script que mostra o que será sedado no arquivo t.rdp.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>
Levi
fonte
Consegui fazer com que esse conceito funcionasse, mas somente após algumas modificações. O comando que eu usei para iniciar o RDP foiopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits
6

Não sei quando isso foi alterado, mas o Microsoft Remote Desktop Client lida com os links rdp: // agora:

A Área de trabalho remota da Microsoft usa o esquema de URI rdp: // query_string para armazenar configurações de atributos pré-configuradas usadas ao iniciar o cliente. As cadeias de consulta representam um único ou conjunto de atributos RDP fornecidos na URL. Os atributos RDP são separados pelo símbolo e comercial (&).

Por exemplo, ao conectar-se a um PC, a sequência é:

rdp: // endereço% 20 completo = s: mypc: 3389 & audiomode = i: 2 & desativar% 20themes = i: 1

Todos os atributos estão documentados na página TechNet de suporte ao esquema de URI do cliente de área de trabalho remota .


fonte
Eu adoraria ver alguns exemplos de URLs. Tenho minha porta local 3389 encaminhada para uma máquina Windows e me conecto como usuário "et" usando o aplicativo oficial da Área de Trabalho Remota da Microsoft. Mas não consigo construir um URL que não dê erro.
de Bruno Bronosky
Tente usar 127.0.0.2 em vez de localhost?
11
Tem alguma idéia sobre como armazenar / passar senhas?
Bruno Bruno #
11
Salvar a senha no aplicativo Microsoft Remote Desktop (para Mac) é o que eu faço atualmente. No entanto, meu objetivo é iniciar uma conexão com um novo IP: Port via linha de comando após abrir essa porta via túnel ssh. Eu só estou tentando melhorar o meu script que atualmente termina com "Agora altere o anfitrião da ligação guardada para 10.10.1.23:5589 e ligar"
de Bruno Bronosky
11
Por favor, deixe-me saber se você encontrar uma maneira :)
1

Bem, depois de consultar o Microsoft TAM, descobri que não há como passar um nome de host para o cliente da Microsoft por meio da linha de comando.

O CoRD, por outro lado, pode realmente fazer o que eu gostaria tratando os links rdp: //. Depois de instalar o CoRD, se você digitar

open rdp://servername

no Terminal ou no iTerm2, ele abrirá uma sessão para o nome do servidor host no CoRD.

Eu uso Alfred (http://www.alfredapp.com/) como minha alternativa "Launchy" no Mac, depois de descobri-la depois de ser um usuário antigo do Quicksilver. Comprei o Powerpack para Alfred, que permite usar várias extensões, uma das quais permite ativar scripts de shell. Então, eu criei uma extensão de script de shell, atribuai a palavra-chave rdp, defina-a como "parâmetro obrigatório" e defina o script como:

open rdp://{query}

Isso permite que eu chame alfred e digite rdp {tab} servername {return} para abrir uma sessão de Conexão de Área de Trabalho Remota no servidor remoto.

billc
fonte
0

O script acima não funciona com o "Microsoft Remote Desktop" mais recente. Fazer referência ao aplicativo com uma variável era problemático, então eu codifiquei o caminho (que é diferente do exemplo original). Eu também precisava remover o parâmetro '--args' e ele começou a funcionar.

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

Portanto, isso é principalmente para descobrir outras respostas e evitar hackers de script:

(TL; DR: pode não ter sido verdade antes, mas o RDP da Microsoft agora lida com arquivos .rdp automaticamente com open)

Já tenho muitos perfis armazenados na GUI do RDP. (BTW, a lista é ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist, como sempre, plutil -convert xml1 xyz.listpara visualização em humanos)

(Referência adicional: https://macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/ )

Para torná-lo comandável:

  1. Selecione o perfil na GUI
  2. Arquivo -> Exportar cria o .rdparquivo, observando que ele não terá informações de senha
  3. (Estude o .rdp para ver como os parâmetros correspondem ao manual rdp: // sintaxe)
  4. Simplesmente opennome.rdp de arquivo na linha de comando
BaseZen
fonte
-1

Eu acho que seria igualmente fácil criar um modelo para cada servidor ao qual você deseja se conectar, bem como um com um campo de servidor vazio para as conexões "uma vez na vida". Basta colocá-los em uma pasta e nomeá-los ou numerá-los para fazer o pedido corretamente. Arraste a pasta para o dock e eu tenho um ponto em que posso clicar para obter uma lista rápida dos modelos de PDR, que podem ser clicados apenas para conectar. Ou eu posso Command + Space e digite o nome do arquivo e pressione enter para executá-lo. OU PODE TIPO TIPO TIPO TIPO E instale todos os tipos de aplicativos de gerenciamento.

Randy Travis
fonte