【问题标题】:perl one liner + remove password from script by perl one liner line [closed]perl one liner + 通过 perl one liner line 从脚本中删除密码 [关闭]
【发布时间】:2014-07-31 11:37:52
【问题描述】:

我在我的 bash 脚本中使用 perl one liner,

为了从脚本中删除密码(因为安全问题,当我们想从脚本中删除密码时,这是一个不错的解决方案)

问题是当我运行 bash 脚本时,perl 一行删除了他的一行,

后面的词:export PASSORD=

请告知需要在 perl 一行中更新什么,以便忽略删除 perl 行中的单词?

remark - export ... 行不在行的开头

perl 我脚本中的一行:

     perl -i -pe 's/(?<=export PASSORD=).*//' /tmp/script.bash

我们运行之前的脚本

   more /tmp/script.bash

   #!/bin/bash


    export LOGIN=root
    export PASSORD=JH&*(@%VTVTB


    /var/cti/download_password.ksh $PASSORD $LOGIN

       perl -i -pe 's/(?<=export PASSORD=).*//' /tmp/script.bash

我们运行后的脚本

  more /tmp/script.bash

   #!/bin/bash


    export LOGIN=root
     export PASSORD=


     /var/cti/download_password.ksh $PASSORD $LOGIN

     perl -i -pe 's/(?<=export PASSORD=

【问题讨论】:

  • perl -i -pe 's/(?&lt;=export PASSORD=剩下的部分呢?
  • perl 行删除它行本身(这是问题)
  • 你不是已经问过这个问题了吗? stackoverflow.com/questions/24064853/…
  • 这是diff问题,因为这是diff问题
  • 我想问题是为什么你在运行这个文件后关心它的状态。如果它如此重要,为什么它在 /tmp 中?

标签: linux perl bash shell ksh


【解决方案1】:

您可以更改单行,使其在匹配项前只能有空格:

perl -i -pe 's/^\s*export PASSORD=\K.*//' /tmp/script.bash

这使用需要 Perl 5.10 的 \K 标志。

或者,将其中一个字母放在字符类 ([]) 中,这样正则表达式就不再匹配其文字自身:

perl -i -pe 's/(?<=export PASSOR[D]=).*//' /tmp/script.bash

【讨论】:

    【解决方案2】:

    您可以通过[ ] 匹配空格以避免匹配特定行,

    perl -i -pe 's/(?<=export[ ]PASSORD=).*//' /tmp/script.bash
    

    【讨论】:

    • 是的,它的工作就像一个魅力 -:)
    猜你喜欢
    • 2016-11-22
    • 1970-01-01
    • 2015-03-03
    • 2014-05-08
    • 2014-03-19
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多