Não foi possível usar o scp com um alias do bash

15

Este código não funciona:

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

O alias é:

alias nameOfBashAlias='ssh [email protected]'

Como eu resolvo este problema?

Editar

É possível algo semelhante ao código a seguir, como executar várias instâncias de bash?

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

Não recebi o código acima para funcionar.

Léo Léopold Hertz 준영
fonte

Respostas:

22

Eu não recomendaria o uso de um alias do Bash para o que você está tentando realizar. Você pode simplesmente inserir todas as informações no arquivo de configuração do SSH e concluir o processo. Leia a página de manual para ssh_configsaber se de onde eles vêm. Você pode fazer algumas coisas legais comssh_config

O arquivo está localizado aqui ~/.ssh/config

Use seu editor favorito, crie o arquivo e ajuste-o à sua situação.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Agora você está configurado para emitir o seguinte comando:

$ ssh nameOfBashAlias 

Algo que aposto que você não sabia é como tudo isso é integrado. Agora que você tem essa configuração, os seguintes comandos também funcionam

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

Não é mais necessário lembrar que scp usa "-P" para porta e ssh usa "-p". Além disso, esse "alias" também funciona em aplicativos de interface gráfica do OS X, como o Transmit.

O OpenSSH obtém dados de configuração das seguintes fontes na seguinte ordem:

  1. opções de linha de comando
  2. arquivo de configuração do usuário ~/.ssh/config
  3. arquivo de configuração em todo o sistema /etc/ssh_config
Von Landfried
fonte
Sim, concordo plenamente com o seu. Atualmente, também estou usando esse método, pois ele sincroniza muito melhor com outros sistemas e outras ferramentas.
Léo Léopold Hertz 준영
não funciona para mim no MacOSX
Jabran Saeed
@JabranSaeed Por favor, abra uma nova pergunta ou aqui um wiki da comunidade como resposta sobre o seu caso, com algumas informações sobre seu sistema operacional, versão, shell etc. Por favor, forneça também um link sobre seu desafio aqui no comentário. Este tópico é relevante para o GNU scp.
Léo Léopold Hertz 준영 16/1015
FWIW, isso parece funcionar no OS X (pelo menos no meu, El Capitain 10.11.6) #
Alex W
5

scpnão executa bash. Você precisaria executar o seguinte:

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

Se tudo o que você tem é o alias e o código acima não for possível, considere executá-lo assim:

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

Dessa forma, você está realmente chamando sshe direcionando o conteúdo do arquivo para um arquivo no disco. Isso pode ser escrito de outra maneira para envios.


fonte
O primeiro comando deve ser scp ~ / Desktop / favicon.ico [email protected]: / public_html / mySite / templates / blog /
Léo Léopold Hertz 준영
2

Os aliases são substituídos quando são a primeira palavra de um comando bash. Seu alias aparece no início da terceira palavra.

Eu usaria uma variável de shell para isso.

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

Btw, acho que seu apelido original não deveria ter ssh nele. E o último exemplo de código tem um> que também parece errado.

Andrej Panjkov
fonte
@ mataap: Muito obrigado pela sua resposta!
Léo Léopold Hertz,
0

Não, seus exemplos não funcionarão, porque não é assim que os BASHaliases funcionam. Eu sugiro que você use uma variável. Coloque isso no seu ~/.profileou ~/.bashrc[o que você usar]:
site="[email protected]"
depois no seu terminal, isso funcionará:
scp favicon.ico $site:/dir/


Ou você pode escrever um script como eu faço para o meu iPod. no bashrc eu tenho ipod=192.168.2.60, depois no meu script, source ~/.bashrcpara que minhas variáveis ​​sejam inseridas no script e depois no script: scp $1 $ipod
a desvantagem é que eu teria que editar o script para fazer recursividade. e eu posso fazer apenas 1 arquivo. mas quando preciso de um desses, costumo usar scpdiretamente do terminal!
~ Matt

Matt
fonte