SCP one-liner para fazer upload do arquivo no final da linha

3

Costumo fazer isso:

scp some_file [email protected]

Estou incomodado com isso porque sempre copio e colo essa linha e preciso editar o meio para alterar o arquivo que quero carregar.

É possível mexer com esta linha para que o nome do arquivo esteja no final e ainda funcione?

Basicamente eu quero qualquer cadeia de caracteres que eu possa colar em um shell, então digite um nome de arquivo e faça o upload do arquivo com scp para o servidor.

    
por Ram Rachum 30.09.2016 / 20:25

5 respostas

1

Uma das possíveis soluções:

(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file
    
por 30.09.2016 / 20:49
3

Por que não criar um script super simples? Basta editar um arquivo chamado say myscp contendo

#!/bin/bash
scp $1 [email protected]

e, em seguida, chmod +x myscp , para que mais tarde você possa simplesmente

./myscp some_file

Isso tudo está assumindo que o script myscp está localizado no diretório atual, caso contrário, adicione o caminho

/path/to/myscp some_file

ou melhor ainda, adicione o caminho do local e este e -seja futuros scripts para o seu $path .

    
por 30.09.2016 / 20:50
1

Adicione ao final do seu .bashrc ou equivalente para o seu shell:

my_function_name() {
    if [ -r "$1" ]; then
        scp "$1" [email protected]
    else
        echo "File does not exists or can not be read, $1" >&2
        return 1
    fi
}

Altere my_function_name de acordo com suas necessidades.

Agora você pode simplesmente invocar a função pelo nome e passar um arquivo como argumento e ele será testado para acesso de leitura e executar scp com ele ou sair se não puder lê-lo.

Observe que usei return em vez de exit porque ele será carregado pelo seu shell interativo e, se você usar exit , o shell será encerrado.

    
por 30.09.2016 / 22:07
1

Use ssh_config para encurtar seu [email protected] . Crie um arquivo ~/.ssh/config com

Host alias
  HostName long.server.name.com
  User really

e, em seguida, conecte-se simplesmente usando scp some_file alias .

    
por 30.09.2016 / 23:19
0

Não, você não pode alterar a ordem dos parâmetros sem envolvê-los em um shell script, mas você pode ...

R='[email protected]'
scp some_file $R
scp other_file $R
...
    
por 30.09.2016 / 21:30

Tags