Я использую OSX Mountain Lion, а удаленный сервер - CentOS 6. У меня есть несколько сценариев на локальном компьютере, которые я хочу запустить на удаленном сервере, и с этой целью я подумал написать один сценарий, который подключается через ssh, который принимает второй сценарий для выполнения в качестве параметра. Таким образом, я могу писать сценарии bash естественным образом, не беспокоясь о ssh и обо всех проблемах, связанных с этим, и эти же сценарии также можно будет переназначить на моем локальном компьютере. Например,
exec_remote.sh
!#/bin/bash
ssh -t -t jeff@remoteserver 'bash -s' < $1
make_dir.sh (обратите внимание на sudo)
!#/bin/bash
sudo mkdir -p /some/path/to/a/new/location
И идея в том, чтобы бежать как
./exec_remote.sh make_dir.sh
Я столкнулся со многими проблемами, большинство из которых мне удалось преодолеть. Однако теперь, когда я выполняю сценарии, как указано выше, терминал зависает на несколько минут, удаленный каталог не создается и сообщения об ошибке нет.
Более того, поскольку я не вызывал logout
, у меня по-прежнему открыт терминал ssh, и все последующие команды (т.е. ls
) полностью заморожены. Я позволил ls
бежать в течение 70 минут, прежде чем сломать его. Примечание: я на самом деле не забочусь о выполнении команд после; Я просто включаю это как признак того, что не так.
Как мне это исправить? Или еще лучше, есть ли лучший способ решить эту проблему?
РЕДАКТИРОВАТЬ
Если я обновлю свой сценарий make_dir.sh
чтобы создать каталог, для которого не требуется sudo
, сценарий выполняется совершенно нормально, как и ожидалось. Известна ли проблема с удаленным запуском команд sudo? Возможно только с CentOS?