Formatando pwd / ls para uso com scp

2

Eu tenho duas janelas de terminal com bash . Um é local no computador client , outro tem uma sessão SSH no server . No server , estou em um diretório e vendo um arquivo que gostaria de copiar para meu client usando scp do client .

No server , vejo:

user@server:/path$ ls filename
filename

Agora posso digitar scp no shell client , selecionar e copiar o user@server:/path do shell server e colá-lo no shell client , digite slash e copie e cole o filename e acrescente um ponto para obter:

user@client:~$ scp user@server:/path/filename .

para scp de um arquivo do server para o client .

Agora estou procurando um comando no server , que funcionaria assim:

user@server:/path$ special_ls filename
user@server:/path/filename

que me forneceria a string completa pronta para scp para copiar e colar no client shell.

Algo na forma

echo $USER@$HOSTNAME:${pwd}/$filename

trabalhando com caminhos relativos / absolutos.

Existe alguma combinação de comando / troca ou eu mesmo tenho que hackear?

Muito obrigado.

    
por eumiro 11.06.2012 / 10:00

1 resposta

4

Um snippet rápido para imprimir essa saída para colar:

#!/bin/sh
SCPUSER="myuser"
SERVER="myserver"
while [ $# -ne 0 ]; do
    printf '%s@%s:%s\n' "${SCPUSER}" "${SERVER}" "$(readlink -f "${1}")"
    shift
done

A construção while; shift permite que você forneça vários argumentos que serão impressos, separados por novas linhas.

Isso é simples; o "truque" acima que você provavelmente está procurando provavelmente é apenas readlink .

Você também pode, por exemplo configure ssh-agent ou login sem senha por meio de chaves (se for um servidor local e a segurança não for muito rigorosa para isso) para agrupar scp do lado do servidor para evitar a etapa de colagem e diretamente scp arquivos do servidor. / p>     

por 11.06.2012 / 10:39