2017-08-28 83 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 –