13

Этот код не работает:

scp ~/Desktop/favicon.ico nameOfBashAlias:/public_html/mySite/templates/blog/

Псевдоним:

alias nameOfBashAlias='ssh myUsername@11.11.11.111'

Как мне решить эту проблему?

редактировать

Возможно ли что-то похожее на следующий код, например, запускать много экземпляров bash?

scp ~/Desktop/favicon.ico (nameOfBashAlias)>:/public_html/mySite/templates/blog/

Я не получил вышеуказанный код для работы.

4 ответа4

21

Я бы не рекомендовал использовать псевдоним Bash для того, чего вы пытаетесь достичь. Вы можете просто ввести всю информацию в конфигурационный файл SSH и покончить с этим. Прочтите справочную страницу ssh_config если вам интересно, откуда они берутся. Вы можете сделать некоторые полезные вещи с ssh_config

Файл находится здесь ~/.ssh/config

Используйте ваш любимый редактор и создайте файл, а затем настройте его в соответствии с вашей ситуацией.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Теперь вы можете выполнить следующую команду:

$ ssh nameOfBashAlias 

Бьюсь об заклад, вы не знали, насколько это все интегрировано. Теперь, когда у вас есть эта настройка, следующие команды также работают

$ scp /some/file nameOfBashAlias:/path/to/storage/location/ 

Больше не нужно помнить, что scp использует «-P» для порта, а ssh использует «-p». Этот псевдоним также работает в приложениях с графическим интерфейсом OS X, таких как Transmit.

OpenSSH получает данные конфигурации из следующих источников в следующем порядке:

  1. параметры командной строки
  2. файл конфигурации пользователя ~/.ssh/config
  3. Общесистемный файл конфигурации /etc/ssh_config
5

scp не запускает bash. Вам нужно будет запустить это:

 scp ~/Desktop/favicon.ico 11.11.11.111:/public_html/mySite/templates/blog/

Если все, что у вас есть, это псевдоним и приведенный выше код невозможен для вас, попробуйте запустить его следующим образом:

nameOfBashAlias cat /public_html/mySite/templates/blog/ > ~/Desktop/favicon.ico

Таким образом, вы фактически вызываете ssh и направляете содержимое файла в файл на диске. Это может быть написано другим способом для загрузки.

2

Псевдонимы заменяются, когда они являются первым словом команды bash. Ваш псевдоним появляется в начале третьего слова.

Я бы использовал переменную оболочки для этого.

blah='myUsername@11.11.11.111'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

Кстати, я думаю, что ваш первоначальный псевдоним не должен содержать ssh. И последний пример кода содержит>, что тоже выглядит неправильно.

0

Нет, ваши примеры не будут работать, потому что это не то, как работают псевдонимы BASH . Я предлагаю вам использовать переменную. Поместите это в ваш ~/.profile или ~/.bashrc [в зависимости от того, что вы используете]:
site="user@site.com"
тогда в вашем терминале это будет работать:
scp favicon.ico $site:/dir/


Или вы могли бы написать сценарий, как я делаю для моего iPod. в моем bashrc у меня ipod=192.168.2.60 , затем в моем скрипте я использую source ~/.bashrc чтобы он получал мои переменные в скрипте, а затем в скрипте: scp $1 $ipod
Недостатком является то, что мне придется редактировать скрипт, чтобы сделать рекурсивным. и я могу сделать только 1 файл. но когда мне нужен любой из них, я обычно использую scp прямо из терминала!
~ Matt

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