conclusão da guia do nome do arquivo SCP

12

Eu uso SCP regularmente para mover arquivos entre servidores e ouvi rumores de que você pode usar o preenchimento de tabulação no servidor remoto, se você estiver usando chaves públicas, mas até agora não tive sorte.

O que estou tentando realizar é o seguinte:

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/

Um ls no servidor remoto de /dir/ revelaria 3 pastas:

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3

Eu gostaria que o SCP revelasse quais pastas correspondem (se houver), assim como a conclusão do caminho normal ao navegar pelo sistema de arquivos local. A conclusão da tabulação funciona nos caminhos locais na linha de comando scp , mas notei que quando o caminho da máquina remota corresponde ao local (isto é: "~ /"), ela completa / sugere arquivos / pastas da sistema de arquivos local em vez do remoto.

Executando os seguintes trabalhos para login sem senha:

'ssh remote.ip.address'

... então eu sei que as chaves estão configuradas corretamente. Alguma idéia de como fazer isso funcionar?

    
por rkthkr 16.06.2009 / 20:11

4 respostas

15

Qual shell você está usando? Se você estiver usando bash você pode precisar permitir completações "avançadas" no bash ...

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

No seu ~ / .bashrc

No OSX você pode fazer:

$ sudo port install bash-completion

Para seu add ~ / .profile:

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi
    
por 16.06.2009 / 20:16
2

Se alguém quiser fazer isso para o Mac OSX Mountain Lion com o método do rkthkr, ele precisará instalar o Mac Ports ( link ) primeiro, execute o comando que ele mencionou:

$ sudo port install bash-completion

configure seu aplicativo terminal de acordo com as instruções encontradas aqui: link

    
por 06.04.2013 / 21:28
0

Outra solução, talvez mais simples, é usar sshfs .

This is a file system client based on the SSH File Transfer Protocol. Since most SSH servers already support this protocol it is very easy to set up: i.e. on the server side there's nothing to do. On the client side mounting the filesystem is as easy as logging into the server with ssh.

É um sistema de arquivos baseado em fuse que vincula sua pasta remota a uma pasta local. Sob o capô, scp é usado, mas você pode operar o comando cp como copiar arquivos em sua máquina local. Assim, o tab-completion funciona automaticamente! sshfs está disponível para a maioria das distribuições, por ex. do sudo apt-get install sshfs (isso também carrega o módulo do kernel fuse )

Comece assim:

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs [email protected]:/home/remote-username /mnt/server1
$ ls /mnt/server1
 .. <bunch of files> ...
$ cp /mnt/server1/.bash<tab><tab>
.bash_history  .bash_logout   .bashrc
$ cp /mnt/server1/.bashrc .
    
por 05.05.2011 / 15:08
0

Eu recomendo strongmente o uso de yafc .

Ele suporta a finalização de nomes de arquivos e também tem alguns outros recursos úteis (por exemplo, get / put / fxp / ls / rm recursivo)

    
por 05.05.2011 / 15:15