Я пытался написать небольшую библиотеку с помощью Thor, чтобы помочь мне быстро создавать новые проекты и сайты. Я написал этот небольшой метод:Net :: SSH sudo command зависает после ввода пароля
def ssh(cmd)
Net::SSH.start(server_ip, user, :port => port) do |session|
session.exec cmd
end
end
, чтобы помочь мне в выполнении быстрых команд на удаленных серверах при необходимости.
Проблема в том, когда мне нужно запустить команду под sudo на удаленном конце, сценарий, похоже, висит на мне. Например, при выполнении этого ...
ssh("sudo cp #{file_from_path} #{file_to_path}")
скрипт запросит у меня пароль
[sudo] password for user:
Но тогда все hhangs после ввода его.
ли кто-нибудь случится знать почему он точно висит, и что я могу сделать, чтобы запустить команду sudo на удаленном сервере в Net :: SSH (или какой-то другой)?
* примечание: перед тем, как я предложил, я начал писать эту библиотеку в качестве рецепта под Капистрано, пока не натолкнулся на Тора, и подумал, что это будет хороший шанс попробовать. Я не против того, чтобы переключать все это обратно на Capistrano, если это необходимо, но я был бы очень удивлен, если бы не было простого способа запуска команд sudo на удаленном сервере.
Вы можете подключить пароль? 'ssh (" sudo cp # {from} # {to} <"mysupass") ' – Fosco
, конечно, я забыл избежать двойных кавычек в предыдущем комментарии. – Fosco
Пробовал это, но он не работает. msgstr "bash: mysupass: Нет такого файла или каталога" .Это попытка передать пароль в приглашение? Если это так, идея может работать, но синтаксис, вероятно, совсем не работает. Я посмотрю, что я могу найти – joeellis