Вы, вероятно, неправильно читали обратные галочки как одинарные кавычки в строке:
sum = 'expr $num1 + $num2'
Посмотрите Wiki Greg на использовании $(...)
вместо этого.
Это работает как ожидалось:
sum=$(expr "$num1" + "$num2")
Также примечание там не является никакими разрывами вокруг, равняется знаку (переменное присвоение).
Указать "myvps"
как имя хоста.
rsync /var/bar myvps:/home/foo ...
У меня это не сработало. У меня прыгающий хостинг в моем ~ / .ssh / config
Host 10.x.y.z
User cloud-user
HostName vm-pivot
IdentityFile /path_to_vm_key
Host 21ct-dev1-*
User cloud-user
HostName %h.example.com
ProxyCommand ssh 10.x.y.z -W %h:%p
IdentityFile /path_to_vm_key
rsync -e "ssh" local_path vm-app01:/remote_path
ssh: Не удалось разрешить имя хоста vm-app01 : указано имя узла или имя сервера или неизвестно rsync: соединение неожиданно закрыто ( Пока получено 0 байт) [отправитель] ошибка rsync: необъяснимая ошибка (код 255) в /SourceCache/rsync/rsync-42/rsync/io.c(452) [sender = 2.6.9]
Однако это работает нормально
[kbroughton@kbroughton:project + (develop)] ssh vm-app01
Last login: Thu Apr 17 12:10:37 2014 from 10.a.b.c
Редактировать, мне удалось обойти разрешение имен, заставив rsync ssh загрузить файл конфигурации с помощью -F sudo rsync -az -e "ssh -F / Users / kbroughton /.ssh / config "
При этом одна ошибка переходит в другую. В доступе отказано (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: соединение закрыто удаленным хостом
Также попытался явно установить -i и user @ в соединении, но возникла та же ошибка.
EDIT
Другая точка данных. Если я использую плавающий IP-адрес pivot vm (хост перехода) вместо его имени vm- pivot rsync работает. Но явный сброс всех моих ssh / config в -e "ssh" не работает. Подробности: локальный Mac, обновленный до rsync 3.1.0, удаленный centos rsync 3.0.9.
[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22" /var/data/sources/data.tar.gz user@vm-pivot:/home/user
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]
[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22" /var/data/sources/data.tar.gz user@10.x.y.z:/home/user
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.1.0]
Это работает
[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key" /var/data/sources/data.tar.gz user@10.x.y.z:/home/user
@darKoram. В случаях, когда вы вызываете ssh с нестандартным путем и пытаетесь использовать ssh в ProxyCommand, это проблема, потому что нет наследования. У вас есть два варианта: напрямую предоставить тот же файл во внутренней команде или динамически взломать его. Вы можете посмотреть подробное описание этого в моем сообщении в блоге: http://hubbitus.info/wiki/Blog : Ssh_forwarding_with_same_config_file_hack
Вскоре в вашей ситуации должна помочь конфигурация, например:
Host 21ct-dev1-*
User cloud-user
HostName %h.example.com
ProxyCommand ssh $( egrep -z -A1 '^-F$' /proc/$PPID/cmdline ) 10.x.y.z -W %h:%p
IdentityFile /path_to_vm_key
@darKoram. Ejecute el proceso SSH con sudo:
sudo /usr/local/bin/rsync -az -e "sudo -u usuario ssh" /var/data/sources/data.tar.gz vm -app01 :/ hogar/usuario
@darKoram
Какое полное DNS-имя "vm -app01"? Он должен быть общедоступным, поскольку вы утверждаете, что можете получить к нему доступ через ssh без rsync. Но вы ожидаете, что ssh поймает ваш хост по шаблону «21ct -dev1 -*». Я действительно не понимаю, как это может работать в любом случае. Если вы попытаетесь создать шаблон имен хостов, это должно выглядеть примерно так:
Host *.21ct-dev1-domain.tld
Тогда вызов rsync должен выглядеть примерно так:
rsync -e "ssh" /local/path/ vm-app01.21ct-dev1-domain.tld:/remote/path/
Как разрешается «vm -app01»? Файл hosts, wins, nis, nss? У вас есть псевдоним? Вы находитесь в домене? Это, безусловно, похоже на «простую» проблему DNS.