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

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

Costumo fazer isso:

scp some_file [email protected]

Fico chateado com isso porque sempre copio e colo essa linha e depois preciso editar o meio para alterar o arquivo que desejo enviar.

É possível mexer nesta linha para que o nome do arquivo fique no final e ainda funcione?

Basicamente, quero qualquer sequência de caracteres que possa colar em um shell, digitar um nome de arquivo e fazer o upload do arquivo para scpo servidor.

Responder1

Por que não fazer um script super simples? Basta editar um arquivo chamado say myscpcontendo

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

e então chmod +x myscp, para que mais tarde você possa simplesmente

./myscp some_file

Tudo isso assumindo que seu myscpscript esteja 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, esperançosamente, scripts futuros ao seu arquivo $path.

Responder2

Uma das soluções possíveis:

(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file

Responder3

Adicione ao final do seu .bashrcshell ou equivalente:

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
}

Mude my_function_namede 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 executado scpcom ele ou encerrado se não conseguir lê-lo.

Observe que usei returnem vez de exitporque ele será carregado pelo seu shell interativo e, se você usar, exito shell será encerrado.

Responder4

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

R='[email protected]'
scp some_file $R
scp other_file $R
...

informação relacionada