2

У меня есть два оконных окна с bash . Один локальный на client компьютере, другой имеет SSH-сеанс на server . На server я нахожусь в каталоге и вижу файл, который я хотел бы скопировать на мой client используя scp от client .

На server я вижу:

user@server:/path$ ls filename
filename

Теперь я могу ввести scp в client оболочке, выбрать и скопировать user@server:/path из server оболочки и вставить в client оболочку, затем набрать косую черту, скопировать и вставить filename и добавить точку, чтобы получить:

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

scp файл с server на client .

Сейчас я ищу команду на server , которая бы работала так:

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

что даст мне полную готовую к scp строку для копирования и вставки в client оболочку.

Что-то в форме

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

работа с относительными / абсолютными путями.

Есть ли такая комбинация команд / переключателей, или я должен взломать ее сам?

Большое спасибо.

1 ответ1

4

Быстрый фрагмент, чтобы напечатать такой вывод для вставки:

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

Время ; Конструкция while; shift позволяет вам указать несколько аргументов, которые будут напечатаны, разделенные символами новой строки.

Это просто; "хитрость" выше, которую вы, вероятно, ищете, вероятно, просто readlink .

Вы также можете, например, настроить ssh-agent или вход без пароля с помощью ключей (если это локальный сервер и безопасность не слишком строгая для этого), чтобы обернуть сторону сервера scp чтобы избежать шага вставки и непосредственно scp файлов с сервера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .