2017-08-28 28 views
-1

创建单反斜线我想执行:在Ruby中

echo aA1.-_#*~^%\':\;[email protected]=/ | passwd --stdin user 

它可与"aA1.-_#*~^%':;[email protected]=/"登录。

我试图

str = "aA1.-_#*~^%':;[email protected]=/" 
password = str.gsub("'", "\\\\'").gsub(";", "\\;") 

passwd_command = "echo" + 
    " #{password}" + 
    " | passwd" + 
    " --stdin user" 

但结果却是:

echo aA1.-_#*~^%\\':\\;[email protected]=/ | passwd --stdin aaa 

我执行它:

[[email protected] ~]# echo aA1.-_#*~^%\\':\\;[email protected]=/ | passwd --stdin aaa 
> 

的命令尚未完成。你有什么建议吗?

回答

1

我建议Shellwords#escape,因为这是它的目的。

require 'shellwords' 

Shellwords.escape("aA1.-_#*~^%':;[email protected]=/") 
#=> "aA1.-_\\#\\*\\~\\^\\%\\':\\;\\?\\[email protected]\\=/" 
+0

我 回声AA1 \\ \\#* \\ \\〜^ \\%\\\\'-_:\\\\; \\? \\!@ \\ =/| passwd --stdin aaa 我们是否在同一页上? –

+0

它工作?我在我有用的Windows系统上执行了我的操作,所以它可能会将其输出裁剪到操作系统。 –

+0

>它有用吗? - >没有。我使用CentOS –