【发布时间】:2011-03-22 09:01:26
【问题描述】:
我一直在尝试使用 Thor 编写一个小型库,以帮助我快速创建新项目和网站。我写了这个小方法:
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:
但是在输入之后整个事情就挂了。
有谁知道它为什么会完全挂起,以及我可以做些什么来在 Net::SSH(或其他替代方法)下的远程服务器上运行 sudo 命令?
*注意:在建议之前,我最初是在 Capistrano 下将这个库作为一个食谱编写的,直到我遇到了 Thor,并认为这是一个尝试的好机会。如果需要,我不反对将整个事情切换回 Capistrano,但如果没有一种简单的方法可以在远程服务器上运行 sudo 命令,我会感到非常惊讶。
【问题讨论】:
-
你能输入密码吗?
ssh("sudo cp #{from} #{to} < "mysupass") -
我当然忘记转义上一条评论中的双引号了。
-
试过这个,但它不起作用。它带有 "bash: mysupass: No such file or directory" 。这是尝试将密码传递到提示符吗?如果是这样,这个想法可能会奏效,但语法可能刚刚结束。我会看看我能找到什么。
标签: ruby sudo net-ssh sudoers thor