Как скачать файл с сервера CentOS на терминале через ssh сервер [дубликат]

sudo запускает команды напрямую, а не через оболочку, и даже если он запускает оболочку для выполнения этой команды, это будет новый вызов оболочки, а не тот, который читает ваш ~/. zshrc (даже если бы он запустил интерактивный shell, он, вероятно, читал бы root ~/.zshrc, а не ваш, если вы не настроили sudo, чтобы не сбрасывать переменную $HOME).

Здесь вам нужно сказать sudo начать новую оболочку zsh и сказать этой оболочке zsh читать ваш ~/. zshrc перед запуском этой функции:

sudo zsh -c '. $0; "$@"' ~/.zshrc findPort 3306

Или:

sudo zsh -c '. $0; findPort 3306' ~/.zshrc

Или поделиться своими текущими функциями zsh с новым zsh, вызываемым sudo:

sudo zsh -c "$(functions); findPort 3306"

Хотя вы можете получить ошибку arg list too long, если у вас определено много функций (как при использовании системы завершения). Поэтому вы можете ограничиться функцией findPort (и всеми другими функциями, на которые она опирается, если таковые имеются):

sudo zsh -c "$(functions findPort); findPort 3306"

Вы также можете сделать:

sudo zsh -c "(){$functions[findPort]} 3306"

Встроить код функции findPort в анонимную функцию, которой вы передадите аргумент 3306. Или даже:

sudo zsh -c "$functions[findPort]" findPort 3306

(инлайн-скрипт, переданный в -c - это тело функции).

Можно использовать вспомогательную функцию, например:

zsudo() sudo zsh -c "$functions[$1]" "$@"

Не используйте:

sdo() { sudo zsh -c "(){$functions[$1]} ${@:2}" }

Поскольку аргументы sdo подвергнутся еще одному уровню разбора оболочки. Compare:

$ e() echo "$@"
$ sdo e 'tname;uname'
tname
Linux
$ zsudo e 'tname;uname'
tname;uname
2
29.05.2017, 15:48
2 ответа

scp это то, что вы ищете.

Скопируйте файл с удаленного хоста (example.com )в ~/Загрузки на свой компьютер

scp root@example.com:/tmp/file ~/Downloads

.. и с вашего компьютера на удаленный хост (в домашний каталог)

scp /tmp/file root@example.com:~/
1
27.01.2020, 21:58

Используйте команду scp для загрузки файла:

scp [local-path] [username]@[hostname/ip]:[remote-path]
example:

scp /etc/example.file user@example.com:/etc/example
scp /etc/passwd user@10.0.0.1:/etc/passwd 

Для загрузки файла:
1. На вашем сервере установлен веб-сервер. Поместите файл в корневой каталог веб-сайта

example:

website:http://example.com

remote file location: /webroot/example.file

wget http://example.com/example.file

2. Веб-сервер не установлен

scp [username]@[hostname/ip]:[remote-path] [localpath]

example:

scp user@example.com:/etc/passwd./passwd
scp user@10.0.0.1:/etc/passwd./passwd

ЕСЛИ вы используете iTerm2, он использует отличный способ обрабатывать загрузку/выгрузку файлов через ssh-клиент одним щелчком правой кнопкой мыши :см. здесь:iTerm2 -оболочка -интеграция

3
27.01.2020, 21:58

Теги

Похожие вопросы