Conclusão da guia Nome do arquivo SCP


13

Eu uso o SCP regularmente para mover arquivos entre servidores e ouvi rumores de que você pode usar o preenchimento de guias no servidor remoto se 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 lsno 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 no sistema de arquivos local. O preenchimento de tabulação funciona nos caminhos locais na scplinha de comando, mas notei que quando o caminho da máquina remota corresponde ao local (ou seja: "~ /"), ele conclui / sugere arquivos / pastas do sistema de arquivos local. que o controle remoto.

A execução do seguinte funciona para logon 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?


Apenas usada isso - omgbbq
William Entriken

Respostas:


16

Qual shell você está usando? Se você estiver usando o bash, talvez seja necessário ativar conclusõ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

Ao seu ~ / .profile, adicione:

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

Estou usando o OSX como estação de trabalho, esse arquivo não existe. No entanto, estou assumindo que, com qualquer distrubtion, preciso instalar o pacote bash-complete para que isso funcione?

Vou atualizar a minha resposta ..
rkthkr

Acabei de terminar essas etapas sozinho, tudo funciona bem. Obrigado companheiro!

Sem problemas, feliz em ajudar!
Rkthkr 16/06/09

1
Obviamente, a parte de instalação da porta para o OS X funcionará apenas se você tiver instalado o pacote MacPorts (www.macports.org). E acho que há um pacote disponível se você usar o fink em vez do MacPorts.
Sven

2

Se alguém quiser fazer isso no Mac OSX Mountain Lion com o método rkthkr, precisará instalar primeiro as portas do Mac ( http://www.macports.org/install.php ), execute o comando que ele mencionou:

$ sudo port install bash-completion

em seguida, configure seu aplicativo de terminal de acordo com estas instruções encontradas aqui: https://trac.macports.org/wiki/howto/bash-completion


Quando você tem reputação suficiente para deixar comentários, acréscimos às respostas existentes geralmente funcionam melhor com elas. (se você não está indo para editar as respostas)
Andrew B

Obrigado. Era isso que eu queria fazer, mas, como você mencionou, eu não tinha representante suficiente para fazê-lo.
perfil completo de Shawn Conn

0

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

Este é um cliente do sistema de arquivos baseado no SSH File Transfer Protocol. Como a maioria dos servidores SSH já suporta esse protocolo, é muito fácil de configurar: ou seja, no lado do servidor, não há nada a fazer. No lado do cliente, montar o sistema de arquivos é tão fácil quanto fazer login no servidor com ssh.

É um sistema de arquivos baseado em fusíveis que vincula sua pasta remota a uma local. Sob o capô, scp é usado, mas você pode operar o cpcomando da mesma forma que copia arquivos na sua máquina local. Assim, o preenchimento de guias funciona automaticamente! O sshfs está disponível para a maioria das distribuições, por exemplo, faça sudo apt-get install sshfs(isso também carrega o fusemódulo do kernel)

Comece assim:

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs remote-username@server1.example.com:/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 .

0

Eu recomendo fortemente o uso do yafc .

Ele suporta a conclusão de nomes de arquivos e também possui outros recursos úteis (por exemplo, get / put / fxp / ls / rm recursivos)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.