用awk裏面SSH當運行命令:從紅寶石
puts `ssh -o StrictHostKeyChecking=no -i keyfile [email protected] "sudo cat file | awk '/^server/ {print \$2}' | sort -u"`
運行此命令後,其只計算^server
,卻忽略了print $2
命令。 我得到整條線而不是第二個單詞。
用awk裏面SSH當運行命令:從紅寶石
puts `ssh -o StrictHostKeyChecking=no -i keyfile [email protected] "sudo cat file | awk '/^server/ {print \$2}' | sort -u"`
運行此命令後,其只計算^server
,卻忽略了print $2
命令。 我得到整條線而不是第二個單詞。
你正在運行幾個shell處理層,所以你需要一個額外的反斜槓:
puts `ssh -o StrictHostKeyChecking=no -i keyfile [email protected] "sudo cat file | awk '/^server/ {print \\$2}' | sort -u"`
如果你改變了這個會發生什麼:
sudo cat file | awk '/^server/ {print \$2}' | sort -u
這樣:
sudo cat file | grep '/^server' | awk '{ print \$2 }' | sort -u
如果仍然沒有工作,儘量不要逃避$ - 嘗試$ 2,而不是\ $ 2
它的作品,當我嘗試從命令行運行它,但是當我從紅寶石內運行,它忽略了打印:( – gal
可能更容易被分解成碎片。同樣使用ruby的單引號機制可以按照您的意圖發送命令。
cmd = %q(sudo cat file | awk '/^server/ {print $2}' | sort -u)
puts %x(ssh -o StrictHostKeyChecking=no -i keyfile [email protected] #{cmd})
您是否還在bash提示符下嘗試了'ssh'命令,以確保它符合您的期望? – lurker
該命令在ruby的本地工作,但是當我嘗試從另一個主機使用ssh時,它不起作用。 – gal
查看我的更新回答。 – lurker