21 votos

¿Argumentos de la línea de comandos para "Remote Desktop Connection for Mac"?

No he podido encontrar ninguna documentación que indique que esto es posible, pero ¿hay alguna manera de pasar el nombre de host al que te gustaría conectarte como un argumento de línea de comandos a la Conexión a Escritorio Remoto de Microsoft para Mac?

Algunos antecedentes para los interesados:

Soy un administrador de sistemas y estoy en proceso de cambiar a un Macbook Air como mi ordenador principal de trabajo desde un portátil con Windows 7. Con frecuencia utilizo el Cliente de Escritorio Remoto para conectarme a los servidores, y en Windows, utilizo Launchy como mi lanzador de teclado. He asignado "rdp" como palabra clave, de modo que cuando invoco Launchy y escribo "rdp {tab} nombre del servidor", pasa el texto que sigue a la tecla de tabulación como el nombre del host a mstsc.exe (es decir, mstsc.exe /v:nombre del servidor). Esto hace que el cliente de escritorio remoto abra una sesión con el nombre de host especificado.

2 votos

Lamentablemente, no hay acceso a la línea de comandos ni a AppleScript en el Cliente de Escritorio Remoto. Sin embargo, he preguntado al desarrollador de CoRD si consideraría añadirlo a CoRD. Y ahí está mi propuesta de un cliente mejor que el cliente RDP de MS: cord.sourceforge.net . :)

0 votos

@Ian C., había utilizado CoRD en el pasado, en mi MacBook personal... parece que han pasado unos cuantos años. No estaba realmente satisfecho con él en comparación con la estabilidad y el aspecto más "pulido" del cliente de Microsoft. De hecho, acabo de descargarlo de nuevo, porque me di cuenta de que en una de sus capturas de pantalla, se mencionaba el manejo de enlaces rdp://. Esto hace exactamente lo que estoy buscando, así que gracias por indicarme el camino de CoRD. He podido configurar una extensión "shell script" en Alfred que ejecuta "open rdp://{query}". ¡Saludos!

0 votos

Oh, vaya. No me había dado cuenta de que manejaba enlaces rdp://. Eso es impresionante. Haré que mi comentario sea una respuesta :)

12voto

shsteimer Puntos 8749

No hay acceso a la línea de comandos para el Cliente de Escritorio Remoto de Microsoft. Sin embargo, el excelente y gratuito Cliente de escritorio remoto CoRD se encarga de rdp:// que le permitiría llamarlo desde un lanzador de su elección o incluso a través de open en la línea de comandos.

El Documentación de CoRD en github establece cómo se pueden utilizar parámetros codificados en la URL para abrir sesiones RDP completamente configuradas.

rdp:// Sintaxis de la URL

CoRD maneja las URLs rdp://, que puedes usar desde muchos lugares dentro de OS X. Desafortunadamente, no hay manera de extender el diálogo "Conectar al servidor" del Finder, que soporta el lanzamiento de URLs VNC, por lo que no podemos lanzar CoRD desde allí. Si Apple cambia esto (o si alguien conoce una forma de ampliarlo) nos encantaría saberlo.

Saved Servers

Si desea utilizar rdp:// urls con servidores guardados existentes, ¡puedes hacerlo (a partir de la versión 0.5.3)! Sólo tiene que utilizar la etiqueta en lugar de un nombre de host:

open rdp://label

Nuevos servidores

Desde un shell (utilizando el Terminal):

open rdp://hostname

Se pueden utilizar parámetros adicionales para iniciar una sesión completamente configurada a través de la URL:

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

Los siguientes parámetros se pueden establecer para la sesión a través de una cadena de consulta (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

Ejemplo

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

Nota:

Cuando se utilizan ampersands (&) desde la línea de comandos, deben escaparse con una barra invertida (). Los dos puntos (:) pueden utilizarse en lugar de los ampersands para obtener el mismo efecto, sin necesidad de escaparlos.

Las contraseñas con caracteres especiales, @, :, &, etc. deben codificarse de acuerdo con la norma Formato de codificación de la URL

Uso de la línea de comandos

CoRD admite las siguientes opciones de línea de comandos: -host -port -u -d -p -a [8|16|24|32] establecer la profundidad de la pantalla -width establecer la resolución de la pantalla width -height establecer la resolución de la pantalla height

Ejemplo

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

Advertencias

Al iniciar CoRD desde la línea de comandos, se abre una nueva instancia de CoRD. Un síntoma de esto son los múltiples iconos del Dock. Esto anula o disminuye la eficacia de muchos de los puntos fuertes de CoRD, como las sesiones unificadas, etc. Por ello, recomendamos utilizar el comando open, y las URLs rdp:// para lanzar sesiones.

enter image description here

1 votos

Muy gracioso. Estaba respondiendo a mi propia pregunta mientras tú también la respondías. Gracias de nuevo por tu ayuda.

0 votos

Según Página GitHub de CoRD , este proyecto ya no se mantiene a partir del 16 de agosto de 2015.

0 votos

Lástima. Estuvo bien.

9voto

kwcto Puntos 2099

No me gusta el CDR. Funciona, pero parece que se escapa periódicamente. Hice mi propio CLI script para Microsoft RDP. He creado un sed+open bash script para que sea posible pasar 2 argumentos a Microsoft Remote Desktop Client. Puedo pasar un nombre de host, y puedo lanzar un interruptor para conectarse a la consola de los hosts de Server 2003.

Sé que esto podría llevarse más lejos. Por ejemplo:

  • Mi bash script no funciona con espacios en las rutas o nombres de archivos :)
  • Imagino que cualquiera de los datos XML del archivo .RDP podría ser modificado con sed.
  • Incluí varias variaciones de un interruptor para conectarse a la consola porque soy viejo y nunca puedo recordar cuál me gusta. Apuesto a que los scripts de bash tienen una solución más elegante que la que yo uso.

Así es como lo hice:

  1. Cree un perfil de plantilla RDP de Microsoft con todas sus configuraciones preferidas. Nómbrelo 'template.rdp'. Haz que se conecte a un servidor falso. He utilizado un nombre de servidor 'zzxyzyz'. Esto se utiliza en el comando 'sed' como la cadena para buscar y reemplazar con un nombre de servidor real.
  2. Crea un bash script para copiar el template.rdp a un temp.rdp, luego sed el temp.rdp con el nombre de host deseado que se pasa al invocar el script. Llamé a mi bash script 'rdp.sh'.
  3. Modifique su '~/.bash_profile' para incluir un alias a 'rdp.sh'
  4. Haz que el bash script sea ejecutable: chmod +x rdp.sh
  5. Bob es tu tío

Contenido de mi bash script :

    #! /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 añadido a .bash_profile
(Esto supone que mi archivo rdp.sh script está en mi directorio personal, ~/ )

alias rdp=~/rdp.sh

Haz que el script sea ejecutable:

sudo chmod +x rdp.sh

Ejecuta el script:
Este es un ejemplo que incluye el interruptor de la consola. Dejé una línea de depuración en el script que muestra lo que va a ser sed'd en el archivo t.rdp.

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

1 votos

Pude conseguir que este concepto funcionara, pero sólo después de algunas modificaciones. El comando que utilicé para iniciar el RDP fue open -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp

8voto

Jack Douglas Puntos 126

No sé cuándo cambió esto, pero el Cliente de Escritorio Remoto de Microsoft sí maneja los enlaces rdp:// ahora:

Microsoft Remote Desktop utiliza el esquema URI rdp://query_string para almacenar los ajustes de atributos preconfigurados que se utilizan al iniciar el cliente. Las cadenas de consulta representan un único o un conjunto de atributos RDP proporcionados en la URL. Los atributos RDP están separados por el símbolo del ampersand (&).

Por ejemplo, cuando se conecta a un PC, la cadena es:

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

Todos los atributos están documentados en el Soporte del esquema URI del cliente de escritorio remoto Página de TechNet.

0 votos

Me encantaría ver algunos ejemplos de URLs. Tengo mi puerto local 3389 redirigido a una máquina Windows y me conecto como usuario "et" usando la aplicación oficial de Microsoft Remote Desktop. Pero, no puedo construir una URL que no da un error.

0 votos

¿Intenta utilizar 127.0.0.2 en lugar de localhost?

0 votos

Gracias. Pude entrar con rdp://full%20address=s:localhost:3389&audiomode=i:2&disable%‌​20themes=i:1 la parte que me desconcertó fue que no me di cuenta de que significaba literalmente "full%20address". Lo tomé como "reemplazar con la dirección completa" porque el patrón URI común es scheme://host/optional_path?query=value&etc=value Así que, mi cerebro trasnochado rechazaba la idea de no tener un host o un ? en él.

2voto

billc Puntos 171

Bueno, después de consultar mi TAM de Microsoft, he descubierto que no hay manera de pasar un nombre de host al cliente de Microsoft a través de la línea de comandos.

CoRD, en cambio, puede hacer lo que me gustaría al manejar los enlaces rdp://. Después de instalar CoRD, si escribes

open rdp://servername

en Terminal o iTerm2, se abrirá una sesión en el host nombre del servidor dentro del CDR.

Utilizo Alfred (http://www.alfredapp.com/) como mi alternativa a "Launchy" en Mac, ya que acabo de descubrirlo después de haber sido usuario durante mucho tiempo de Quicksilver. Compré el Powerpack para Alfred, que permite utilizar una serie de extensiones, una de las cuales le da la capacidad de lanzar shell scripts. Así que creé una extensión shell scriptsscriptscripts, le asigné la palabra clave rdp, la puse como "parámetro requerido", y puse el scriptsscriptscripts:

open rdp://{query}

Esto me permite invocar a alfred, y escribir rdp {tab} nombre del servidor {retorno} para abrir una sesión de Conexión a Escritorio Remoto con el servidor remoto.

-1voto

Randy Travis Puntos 19

Creo que sería igual de fácil hacer una plantilla para cada servidor al que quieras conectarte, así como una con un campo de servidor vacío para esas conexiones "únicas". Yo simplemente las meto en una carpeta y las nombro o numero para que queden bien ordenadas. Arrastro la carpeta al dock y tengo un punto en el que puedo hacer clic para obtener una lista rápida de las plantillas rdp que luego puedo hacer un solo clic para conectarme. O puedo Comando+Espacio y escribir el nombre del archivo y pulsar enter para ejecutarlo. O PUEDE TIPAR TIPAR TIPAR e instalar todo tipo de aplicaciones de gestión.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X