2009-09-01 10 views
8

Mi solución actual para la edición de archivos en un servidor web remoto es utilizar Fetch para navegar por la máquina remota y TextWrangler a realizar las modificaciones. Pero como me siento más cómodo navegando por la línea de comando en la máquina remota (pero no lo suficientemente cómodo como para usar VIM ...), me gustaría poder escribir algo como 'abrir nombre de archivo.txt' en la máquina remota y tener abierto TextWrangler en mi máquina local. Escuché el término "túnel inverso" como una opción, pero no tengo idea de qué hacer a continuación. Cualquier sugerencia es muy apreciada, ¡gracias!apertura de un archivo remoto con TextWrangler

+0

hombre, texto Wranger es tan práctica y su capacidad para editar archivos a través de SSH y no está expuesta a través de la línea de comandos :( –

Respuesta

1

Creo que lo que usted se refiere se llama "la expedición X11" a través de ssh. Eche un vistazo a la página de manual de ssh_config (5) para la configuración (o simplemente use 'ssh' con el parámetro '-X'). Por lo que yo sé, esto solo funciona con los programas X11 (gvim, xemacs, etc.), porque el editor se está ejecutando en el host al que se está conectando, solo sucede con la visualización en su máquina local. Entonces, TextWrangler no es una opción, porque no es un programa X11.

utilizo Interarchy (de nolobe) para la edición remota. Es un cliente ftp/sftp bastante avanzado que le ofrece una vista del buscador de sus archivos remotos y le permite usar su editor favorito para trabajar en esos archivos.

Si no te gusta pagar por un programa de este tipo, hay un programa de código abierto llamado "Fugu" disponible en la Univerity de Michigan que también se puede utilizar.

4

Personalmente, uso Cyberduck como mi navegador S/FTP. En las preferencias de Cyberduck, puede definir un editor de texto predeterminado para editar archivos remotos. Ahora puedo presionar Cmd + K cuando tengo un archivo seleccionado, y se abrirá en TextWrangler. Cada vez que guardo, los cambios se transfieren automáticamente al archivo remoto.

3

realidad estaba tratando de hacer lo mismo, y nadie lo había escrito, así que me di cuenta de esto hoy.

No se requieren 2 y 3 partes opcionales a esto:

  1. Habilitar inicio de sesión SSH en ambos equipos (requerido)
  2. configurar un túnel SSH de la máquina remota a su máquina (requerido)
  3. configurar un alias para el túnel SSH (opcional)
  4. configurar un alias para TextWrangler en la máquina remota (opcional)
  5. configurar las claves SSH para que no tenga que introducir su contraseña cada vez (opcional)

Debe poder pasar ssh de local a remoto para ejecutar los comandos, y debe poder pasar ssh de remoto a local para poder enviar comandos a TextWrangler.

Para configurar el túnel ssh, necesita ejecutar un comando en el equipo local como:

ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname] 

El -f y -N banderas ponen ssh a un segundo plano y te dejan en su máquina. El indicador -R vincula un puerto en la computadora remota a un puerto en su computadora local. Cualquier cosa que entre en contacto con la máquina remota en el puerto 10022 será enviada al puerto 22 en su computadora local. El puerto remoto puede ser cualquier cosa que desee, pero debe elegir un puerto> 1024 para evitar conflictos y para que no tenga que ser root. Elegí 10022 porque es similar al puerto predeterminado de ssh de 22. Reemplace los corchetes con su nombre de usuario y nombre de máquina.

Deberá ejecutarlo una vez después de iniciar sesión.Para hacer el comando más fácil para usted, puede agregar un alias en su perfil de bash. Añadir lo siguiente a su local de ~/.bash_profile:

alias open-tunnel='ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]' 

Por supuesto, se puede elegir cualquier nombre de alias que te gusta.

Una vez que haya configurado el túnel, se puede utilizar un comando como el siguiente en la máquina remota:

ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]//absolute/path/to/file.txt" 

La bandera -p dice que use el puerto 10022 (o el puerto que eligió anteriormente). Esto hará que la máquina remota se conecte a su máquina local y ejecute el comando entre comillas dobles sin abrir una sesión ssh interactiva. El comando en las comillas es el comando que ejecutaría en su máquina local para abrir el archivo remoto en TextWrangler.

Para hacer el comando más fácil para usted, puede agregar una función en su perfil de bash. Añada lo siguiente a su control remoto ~/.bash_profile:

function edit { if [[ ${1:0:1} = "/" ]]; then abs_path="$1"; else abs_path="`pwd`/$1"; fi; ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]/$abs_path"; } 

Esto es suponiendo que usted no tiene las herramientas de línea de comando TextWrangler instalados en la máquina remota. Si lo hace, debe nombrar la función algo distinto de edit. Por ejemplo, tw. Aquí, ${1:0:1} mira el primer carácter del primer parámetro de la función, que debería ser la ruta del archivo. Si no comienza con /, calculamos la ruta absoluta al agregar el directorio de trabajo actual (pwd) al principio. Ahora, si estás en la máquina remota en /home/jdoe/some/directory/ y ejecutar edit some/other/directory/file.txt, se ejecutará el siguiente en el equipo local:

edit sftp://[username on remote machine]@[remote machine hostname]//home/jdoe/some/directory/some/other/directory/file.txt 

Por último, se deben establecer las claves ssh en ambas direcciones lo que no está solicitó una contraseña cada vez. He aquí una guía a otra persona escribió: http://pkeck.myweb.uga.edu/ssh/

+0

que se ve como una buena solución. Pero, ¿para qué sirve el túnel? ¿No puedes hacer la segunda conexión ssh (la que ejecuta el comando de edición) directamente en tu computadora en lugar de hacerlo por este túnel? – Vortexfive

+0

Me gusta el enfoque aquí, aunque es intimidante –

2

no creo que esto va a permitir la apertura de la línea de comandos, pero

Eclipse con Remote-System-Explorer también es compatible con la edición de archivos a través de conexión ssh

0

Esta versión ofrece esta funcionalidad bien. You can download it here. Una vez que se haya conectado a su sftp, puede hacer clic derecho en el archivo de texto y abrirlo con el editor de texto que elija.

0

respuesta Mínimo

Puede utilizar AppleScript.Así que desde la línea de comandos ejecutar este:

osascript <<EOF 
     tell application "TextWrangler" 
     activate 
     open location {"sftp://myusername:@my.server:22222//home/username/.bashrc"} 
end tell 
EOF 

Notas

  1. obvio que no se desee escribir un documento de aquí en cada llamada, así que mi sugerencia sería poner esta lógica dentro de una shell script normal: osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF

continuación, se invoca el script como el siguiente:

sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc" 
  1. especificar una ruta de host cualificada puede resultar tedioso cada vez para codificar ya sea que en el script, o se unen la invocación script a un golpe de teclado a través de su cáscara. Para bash: bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""' Ahora se generan la mayor parte del comando presionando Alt-t
Cuestiones relacionadas