No se puede usar scp con un alias bash

15

Este código no funciona:

scp ~/Desktop/favicon.ico nameOfBashAlias:/public_html/mySite/templates/blog/

El alias es:

alias nameOfBashAlias='ssh [email protected]'

¿Cómo resuelvo este problema?

Editar

¿Es posible algo similar al siguiente código, como ejecutar muchas instancias de bash?

scp ~/Desktop/favicon.ico (nameOfBashAlias)>:/public_html/mySite/templates/blog/

No obtuve el código anterior para trabajar.

Léo Léopold Hertz 준영
fuente

Respuestas:

22

No recomendaría usar un alias Bash para lo que está tratando de lograr. Simplemente puede ingresar toda la información en el archivo de configuración de SSH y terminar con eso. Lea la página de manual para ssh_configsaber si tiene curiosidad de dónde provienen. Puedes hacer algunas cosas buenas conssh_config

El archivo se encuentra aquí. ~/.ssh/config

Use su editor favorito y cree el archivo y luego ajústelos a su situación.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Ahora está configurado para emitir el siguiente comando:

$ ssh nameOfBashAlias 

Algo que apuesto a que no sabías es lo integrado que está todo esto. Ahora que tiene esta configuración, los siguientes comandos también funcionan

$ scp /some/file nameOfBashAlias:/path/to/storage/location/ 

No más recordando que scp usa "-P" para puerto y ssh usa "-p". Además, este "alias" también funciona en aplicaciones OS X GUI como Transmitir.

OpenSSH obtiene datos de configuración de las siguientes fuentes en el siguiente orden:

  1. opciones de línea de comandos
  2. archivo de configuración del usuario ~/.ssh/config
  3. archivo de configuración de todo el sistema /etc/ssh_config
Von Landfried
fuente
Sí, estoy completamente de acuerdo con tu. Hoy en día también uso ese método, ya que se sincroniza mucho mejor con otros sistemas y otras herramientas.
Léo Léopold Hertz 준영
no funciona para mí en MacOSX
Jabran Saeed
@JabranSaeed Por favor, abra una nueva pregunta o aquí un wiki de la comunidad como respuesta sobre su caso con información sobre su sistema operativo, versión, shell, etc. Por favor, proporcione también un enlace sobre su desafío aquí en los comentarios. Este hilo es relevante para GNU scp.
Léo Léopold Hertz 준영
FWIW esto parece funcionar en OS X (al menos lo hizo en el mío, El Capitain 10.11.6)
Alex W
5

scpno corre bash. Necesitarías ejecutar esto:

 scp ~/Desktop/favicon.ico 11.11.11.111:/public_html/mySite/templates/blog/

Si todo lo que tiene es el alias y el código anterior no es posible para usted, considere ejecutarlo así:

nameOfBashAlias cat /public_html/mySite/templates/blog/ > ~/Desktop/favicon.ico

De esta manera, en realidad estás invocando sshy dirigiendo el contenido del archivo a un archivo en el disco. Esto se puede escribir de otra manera para las cargas.


fuente
El primer comando debe ser scp ~ / Desktop / favicon.ico [email protected]: / public_html / mySite / templates / blog /
Léo Léopold Hertz 준영
2

Los alias se sustituyen cuando son la primera palabra de un comando bash. Su alias aparece al comienzo de la tercera palabra.

Usaría una variable de shell para esto.

blah='[email protected]'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

Por cierto, creo que tu alias original no debería tener ssh. Y el último ejemplo de código tiene un> que también se ve mal.

Andrej Panjkov
fuente
@mataap: ¡Muchas gracias por tu respuesta!
Léo Léopold Hertz 준영
0

No, sus ejemplos no funcionarán, porque no es así como BASHfuncionan los alias. Te sugiero que uses una variable. Pon esto en tu ~/.profileo ~/.bashrc[lo que uses]:
site="[email protected]"
luego en tu terminal, esto funcionará:
scp favicon.ico $site:/dir/


O podrías escribir un guión como lo hago para mi iPod. en mi bashrc tengo ipod=192.168.2.60, luego en mi script, source ~/.bashrcasí que obtiene mis variables en el script, luego en el script: scp $1 $ipod
el inconveniente es que tendría que editar el script para hacer recursivo. y solo puedo hacer 1 archivo. ¡pero cuando necesito cualquiera de los que suelo usar scpdirectamente desde el terminal!
~ Matt

Mate
fuente