ruby - 在 Ruby 中正确转义 shell 参数

标签 ruby rake rakefile

代码如下:

desc "Find 301 errors on production servers"
task :find301 do
  command = "grep 'HTTP/1.1\" 301' /var/log/httpd/*ssl-access.log | grep -v 'gclid' | awk '{print \$7}' | sort | uniq -c | sort -nr"

  production_servers.each do |server|
    sh "ssh root@#{server} #{command}"
  end
end

是否有更好的方法来转义 shell 命令,最好是采用允许 sh "ssh root@#{server} #{command}" 与任意 命令一起使用的格式是什么?

最佳答案

使用 require 'shellwords'Shellwords.escape 您可以在“shellescape”和“Shellwords”中找到有关这些内容的更多信息

关于ruby - 在 Ruby 中正确转义 shell 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307289/

相关文章:

ruby - 我怎样才能检查一个单词是否已经全部大写?

ruby-on-rails - 如何使用 Clockwork Rails 调度程序 Gem?

ant - 显示 rakefile 任务的所有描述的命令?

ruby - 如何正确地包含来自 Ruby rakefile 的其他项目文件

ruby-on-rails - rakefile 可以用来做什么?

ruby - 如何优化代码 - 它有效,但我知道我错过了很多学习

ruby-on-rails - 获取 Mechanize 以处理来自任意 POST 的 cookie(以编程方式登录网站)

mysql - 尝试在 Ruby 1.9.3、Rails 3.2.7、mstwjs Noel Rappin 教程应用程序中加载 gem 'mysql2' 时出错

c# - 从 .NET Windows 服务运行 Rake

ruby-on-rails - ImageScience 在更新到 Rails 3 时中断