perl:从bash脚本中替换ssh上的字符串

时间:2015-02-18 21:02:11

标签: regex bash perl

我需要用以下代码替换远程服务器上的文件中的字符串:

ssh username@${TARGETSERVER} -i /path/to/ssh-key perl -p -i -e "s#\$user = \'${SDBUSER}\'\;#\$user = \'${TDBUSER}\'\;#g"  ${TARGETDIR}/configuration.php

这将取代joomla安装中的远程服务器上的db用户,顺便说一句。

如果我在远程服务器上以交互方式执行该操作并填充了所有变量,那么它正在工作。

如果我将上面的行放在bash脚本中,我收到此消息并且不会发生替换:

"Substitution pattern not terminated at -e line 1."

有什么线索我可以做这个工作吗?我已经尝试了几次逃脱,比如\\'等等,但我没有成功。

提前致谢。

1 个答案:

答案 0 :(得分:1)

BINGO - 搞定了:

ssh -T username@${TARGETSERVER} -i /path/to/ssh-key <<EOI
  perl -p -i -e "s#\$user = \'${SDBUSER}\'\;#\$user = \'${TDBUSER}\'\;#g"  ${TARGETDIR}/configuration.php
  exit
EOI

从那里,我可以添加几个perl命令,这样我就不必每次都有sshing的有效负载。