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

11

Este código não funciona:

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

O alias é:

alias nameOfBashAlias='ssh [email protected]'

Como resolvo este problema?

Editar

É algo semelhante ao seguinte código possível, como a execução de muitas instâncias de bash ?

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

Eu não consegui o código acima funcionar.

    
por Léo Léopold Hertz 준영 09.03.2009 / 17:37

4 respostas

20

Eu não recomendaria usar um alias de Bash para o que você está tentando realizar. Você pode simplesmente inserir todas as informações no arquivo de configuração do SSH e fazer isso. Leia a man page de ssh_config se você está curioso de onde eles vêm. Você pode fazer algumas coisas legais com ssh_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

Você está agora configurado para emitir o seguinte comando:

$ ssh nameOfBashAlias 

Algo que eu aposto que você não sabia é como isso tudo é 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 lembrando que scp usa "-P" para port e ssh usa "-p". Além disso, esse "alias" também funciona em aplicativos de gui do OS X, como Transmitir.

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

  1. opções da linha de comando
  2. arquivo de configuração do usuário ~/.ssh/config
  3. arquivo de configuração de todo o sistema /etc/ssh_config
por 25.04.2012 / 16:02
5

scp não executa bash. Você precisaria executar isso:

 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 da seguinte forma:

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

Dessa forma, você está realmente invocando ssh e direcionando o conteúdo do arquivo para um arquivo no disco. Isso pode ser escrito de outra maneira para uploads.

    
por 09.03.2009 / 17:39
2

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

Eu usaria uma variável shell para isso.

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

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

    
por 30.04.2009 / 05:01
0

Não, seus exemplos não funcionarão, porque não é assim que BASH aliases funcionam. Eu sugiro que você use uma variável. Coloque isso no seu ~/.profile ou ~/.bashrc [o que você usa]: site="[email protected]" Em seguida, no seu terminal, isso funcionará:
scp favicon.ico $site:/dir/


Ou você poderia escrever um roteiro como eu faço para o meu iPod. no meu bashrc eu tenho ipod=192.168.2.60 , então no meu script eu source ~/.bashrc assim que obtém minhas variáveis no script, então no script: scp $1 $ipod
a desvantagem é que eu teria que editar o script para fazer recursivo. e eu posso fazer apenas 1 arquivo. mas quando eu preciso de um desses eu costumo usar scp diretamente do terminal!
~ Matt

    
por 04.04.2011 / 21:08