ruby - 通过 Ruby 系统调用通过 SSH 发送美元符号

标签 ruby ssh

我正在尝试对服务器进行 SSH 系统调用并回显一个字符串。该字符串由 ruby​​ 定义并带有美元符号。

#!/usr/bin/env ruby
string = '$$%%$#@%$#@%325dg345345'

puts %x(ssh server "echo \'#{string}\'")

当我执行时,返回的输出不是字符串。远程服务器将美元符号解释为变量。我可以采取任何形式的巧妙转义来防止这种情况发生吗?字符是随机的,因此仅编辑字符串以转义美元符号是行不通的。

最佳答案

您可以使用标准库的 Shellwords库不仅可以转义美元符号,还可以转义空格和您的字符串可能包含的任何其他“危险”字符:

require 'shellwords'

string = '$$%%$#@%$#@%325dg345345'
escaped_string = Shellwords.escape(string)
# "\\$\\$\\%\\%\\$\\\#@\\%\\$\\\#@\\%325dg345345"

puts %x(ssh server "echo #{string}")

关于ruby - 通过 Ruby 系统调用通过 SSH 发送美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738025/

相关文章:

ruby - Net-SSH Ruby 身份验证

ruby - 对象分配和指针

ruby 这里的文件

尝试在远程桌面上运行应用程序时出现 Python 错误

linux - 使用 rsync 同步通过网桥的两台计算机

ssh - "vagrant provision"有效,但我无法使用 Ansible 发送临时命令

ruby - 在 ruby​​ 中重现 curl 请求

ruby - 将成功和失败处理程序传递给 ActiveJob

android - 通过 ssh 连接到安卓

ssh - SSH解压缩但具有大小写敏感性